def test_blob_does_not_exist(self): request = webapp2.Request.blank('/blobstore/blob/non-existent') response = webapp2.Response() handler = blobstore_viewer.BlobRequestHandler(request, response) blobstore.BlobInfo.get('non-existent').AndReturn(None) self.mox.ReplayAll() handler.get('non-existent') self.mox.VerifyAll() self.assertEqual(302, response.status_int) self.assertEqual('http://localhost/blobstore', response.headers.get('Location'))
def test_display_blob_inline_and_binary(self): request = webapp2.Request.blank('/blob/blobkey?display=inline') response = webapp2.Response() handler = blobstore_viewer.BlobRequestHandler(request, response) blob_info = self.mox.CreateMock(blobstore.BlobInfo) blob_info.content_type = 'application/octet-stream' blobstore.BlobInfo.get('blobkey').AndReturn(blob_info) reader = self.mox.CreateMockAnything() blob_info.open().AndReturn(reader) reader.read().AndReturn('blob bytes') reader.close() self.mox.ReplayAll() handler.get('blobkey') self.mox.VerifyAll() self.assertEqual('text/plain', response.headers.get('Content-Type')) self.assertEqual('inline', response.headers.get('Content-Disposition')) self.assertEqual('blob bytes', response.body)
def test_display_blob_attachment(self): request = webapp2.Request.blank('/blob/blobkey?display=attachment') response = webapp2.Response() handler = blobstore_viewer.BlobRequestHandler(request, response) blob_info = self.mox.CreateMock(blobstore.BlobInfo) blob_info.content_type = 'image/png' blob_info.filename = 'profile.png' blobstore.BlobInfo.get('blobkey').AndReturn(blob_info) reader = self.mox.CreateMockAnything() blob_info.open().AndReturn(reader) reader.read().AndReturn('blob bytes') reader.close() self.mox.ReplayAll() handler.get('blobkey') self.mox.VerifyAll() self.assertEqual('image/png', response.headers.get('Content-Type')) self.assertEqual('attachment; filename=profile.png', response.headers.get('Content-Disposition')) self.assertEqual('blob bytes', response.body)
def test_display_blob_info_non_inlineable(self): request = webapp2.Request.blank('/blobstore/blob/blobkey') response = webapp2.Response() handler = blobstore_viewer.BlobRequestHandler(request, response) blob = self.mox.CreateMock(blobstore.BlobInfo) blob.content_type = 'application/octet-stream' blobstore.BlobInfo.get('blobkey').AndReturn(blob) handler.render( 'blob_viewer.html', { 'blob_info': blob, 'delete_uri': '/blobstore', 'download_uri': request.path + '?display=attachment', 'inline_uri': request.path + '?display=inline', 'inlineable': False, 'return_to': '/blobstore' }) self.mox.ReplayAll() handler.get('blobkey') self.mox.VerifyAll()