def test_input_as_dict(self): signed_request = get_fixture("upload_signed_request.json", as_binary=True) signed_request = json.loads(signed_request) s3 = S3ImageUploader(signed_request) self.assertIsInstance(s3.signed_data, dict)
def test_get_image_from_src_url(self): uri = 'http://httpbin.org/image/png' mock_request(uri, method='GET', status=200, fixture='image1.png', include_location=False) web_data = image.get_image_from_src(uri) local_data = get_fixture('image1.png', as_binary=True) self.assertEqual(web_data, local_data)
def test_get_image_data_and_filename(self): uri = 'http://httpbin.org/image/png' mock_request(uri, method='GET', status=200, fixture='image1.png', include_location=False) img_data, filename = image.get_image_data_and_filename(uri, 'png.png') local_data = get_fixture('image1.png', as_binary=True) self.assertEqual(local_data, img_data) self.assertEqual(filename, 'png')
def test_export_docx_to_html_unique_filename(self): mock_request() docx_file_path = get_fixture('png_basic_resize_linked_photo.docx') signed_request = get_fixture('upload_signed_request.json', as_binary=True) kwargs = { 's3_upload': signed_request, 'unique_filename': True } html = self.exporter(docx_file_path, **kwargs).export() # we can't check here for the exact html content as the file name is # generated dynamically so, we use regexp self.assertRegexpMatches(html, 'http://pydocx.s3.amazonaws.com/uploads/pydocx/\d+-image\d+.png')
def test_upload_image_invalid_location_header(self): mock_request(include_location=False) signed_request = get_signed_request() s3 = S3ImageUploader(signed_request) img_data = get_fixture("image1.png", as_binary=True) with self.assertRaisesRegexp(ImageUploadException, "S3 Invalid location header"): s3.upload(img_data, "image4.png")
def test_export_docx_to_html_rotate_image(self): mock_request() docx_file_path = get_fixture('rotate_image.docx') signed_request = get_fixture('upload_signed_request.json', as_binary=True) html_file_content = get_fixture( 'rotate_image.html', as_binary=True ) kwargs = { 's3_upload': signed_request, 'unique_filename': False } html = self.exporter(docx_file_path, **kwargs).export() assert_html_equal(html, html_file_content)
def test_export_docx_to_html_with_image_upload_to_s3(self): mock_request() docx_file_path = get_fixture('png_basic_resize_linked_photo.docx') signed_request = get_fixture('upload_signed_request.json', as_binary=True) html_file_content = get_fixture( 'png_basic_s3_upload.html', as_binary=True ) kwargs = { 's3_upload': signed_request, 'unique_filename': False } html = self.exporter(docx_file_path, **kwargs).export() assert_html_equal(html, html_file_content)
def test_upload_image(self): mock_request() signed_request = get_signed_request() s3 = S3ImageUploader(signed_request) img_data = get_fixture("image1.png", as_binary=True) result = s3.upload(img_data, "image2.png", "png") self.assertEqual("http://pydocx.s3.amazonaws.com/uploads/pydocx/image2.png", result)
def test_upload_image_invalid_response(self): mock_request(status=404) signed_request = get_signed_request() signed_request["url"] = "http://pydocx.s3.amazonaws.com/" s3 = S3ImageUploader(signed_request) img_data = get_fixture("image1.png", as_binary=True) with self.assertRaisesRegexp(ImageUploadException, "S3 Upload Error"): s3.upload(img_data, "image1.png")
def test_upload_image_invalid_bucket_url(self): mock_request(url="http://invalid_bucket.s3.amazonaws.com/", status=403, fixture="s3_invalid_response.xml") signed_request = get_signed_request() signed_request["url"] = "http://invalid_bucket.s3.amazonaws.com/" s3 = S3ImageUploader(signed_request) img_data = get_fixture("image1.png", as_binary=True) with self.assertRaisesRegexp(ImageUploadException, "S3 NoSuchBucket - The specified bucket does not exist"): s3.upload(img_data, "image2.png", "png")
def test_upload_image_invalid_signed_request(self): mock_request(status=403, fixture="s3_invalid_access_key.xml") signed_request = get_signed_request() signed_request["AWSAccessKeyId"] += "test" s3 = S3ImageUploader(signed_request) img_data = get_fixture("image1.png", as_binary=True) with self.assertRaisesRegexp(ImageUploadException, "S3 InvalidAccessKeyId "): s3.upload(img_data, "image3.png", "png")
def test_export_external_image(self): mock_request() responses.add(responses.GET, 'https://www.google.com/images/srpr/logo11w.png', body=get_fixture('logo11w.png'), status=200, content_type='image/png') docx_file_path = get_fixture('external_image.docx') html_file_content = get_fixture( 'external_image.html', as_binary=True ) signed_request = get_fixture('upload_signed_request.json', as_binary=True) kwargs = { 's3_upload': signed_request, 'unique_filename': False } html = self.exporter(docx_file_path, **kwargs).export() assert_html_equal(html_file_content, html)
def test_upload_image_missing_url(self): mock_request(url="https://pydocx.s3.amazonaws.com/") signed_request = get_signed_request() # it will use the default url instead del signed_request["url"] s3 = S3ImageUploader(signed_request) img_data = get_fixture("image1.png", as_binary=True) result = s3.upload(img_data, "image1.png") self.assertEqual("https://pydocx.s3.amazonaws.com/uploads/pydocx/image1.png", result)
def get_signed_request(): signed_request = get_fixture("upload_signed_request.json", as_binary=True) signed_request = json.loads(signed_request.decode()) return signed_request
def test_get_image_from_src_data(self): img_data = get_fixture('image1.data', as_binary=True) result = image.get_image_from_src(img_data) self.assertEqual(img_data, result)