def test_get_assets_thumbnails_get_thumbnail_bytes_raises_exception(self): self.xml_web_optimiser._optimised_assets = [ utils.WebImageGenerator("1234-5678-rctb-45-05-0110-e01.tif", "."), ] result = self.xml_web_optimiser.get_assets_thumbnails() assets_thumbnails = [image_generator for image_generator in result] self.assertEqual(len(assets_thumbnails), 0)
def test_create_WebImageGenerator_with_invalid_image_bytes(self): mocked_bytes = "This is not an image".encode("utf-8") with self.assertRaises(exceptions.WebImageGeneratorError) as exc_info: utils.WebImageGenerator("image_tiff_1.tiff", ".", mocked_bytes) self.assertEqual( str(exc_info.exception), 'Error reading image "image_tiff_1.tiff": cannot parse this image', )
def test_create_thumbnail_ok(self): filename = os.path.join(self.extracted_package, "image_tiff_1.png") create_image_file(filename, "PNG") web_image_generator = utils.WebImageGenerator("image_tiff_1.png", self.extracted_package) web_image_generator.create_thumbnail() thumbnail_filename = os.path.splitext(filename)[0] + ".thumbnail.jpg" self.assertTrue(os.path.exists(thumbnail_filename))
def test_convert2png_large_image_file_security_error(self, mk_open): mk_open.side_effect = Image.DecompressionBombError("ERROR!") text_file_path = os.path.join(self.extracted_package, "file.txt") web_image_generator = utils.WebImageGenerator("file.txt", self.extracted_package) with self.assertRaises(exceptions.WebImageGeneratorError) as exc_info: web_image_generator.convert2png() self.assertIn("Error opening image file ", str(exc_info.exception)) self.assertIn("file.txt", str(exc_info.exception))
def test_get_thumbnail_bytes_no_image_object(self): web_image_generator = utils.WebImageGenerator("image_tiff_1.tiff", self.extracted_package) with self.assertRaises(exceptions.WebImageGeneratorError) as exc_info: web_image_generator.get_thumbnail_bytes() self.assertEqual( str(exc_info.exception), 'Error optimising image bytes from "image_tiff_1.tiff": ' "no original file bytes was given.", )
def test_create_thumbnail_file_does_not_exist(self): web_image_generator = utils.WebImageGenerator("no_file.tif", self.extracted_package) with self.assertRaises(exceptions.WebImageGeneratorError) as exc_info: web_image_generator.create_thumbnail() self.assertIn("Error opening image file ", str(exc_info.exception)) self.assertIn("no_file.tif", str(exc_info.exception)) self.assertFalse( os.path.exists(os.path.join(self.extracted_package, "no_file.png")))
def test_convert2png_ok(self): web_image_generator = utils.WebImageGenerator("image_tiff_2.tif", self.extracted_package) web_image_generator.convert2png() self.assertTrue( os.path.exists( os.path.join( self.extracted_package, os.path.splitext("image_tiff_2.tif")[0] + ".png", )))
def test_create_thumbnail_to_destination_path(self): destination_path = tempfile.mkdtemp(".") filename = os.path.join(self.extracted_package, "image_tiff_1.png") create_image_file(filename, "PNG") web_image_generator = utils.WebImageGenerator("image_tiff_1.png", self.extracted_package) web_image_generator.create_thumbnail() thumbnail_filename = os.path.splitext(filename)[0] + ".thumbnail.jpg" is_thumbnail_ok = os.path.exists(thumbnail_filename) shutil.rmtree(destination_path) self.assertTrue(is_thumbnail_ok)
def test_create_WebImageGenerator(self): web_image_generator = utils.WebImageGenerator("image_tiff_1.tiff", self.extracted_package) self.assertEqual(web_image_generator.filename, "image_tiff_1.tiff") self.assertIsNone(web_image_generator._image_object) self.assertEqual( web_image_generator.image_file_path, os.path.join(self.extracted_package, "image_tiff_1.tiff"), ) self.assertEqual(web_image_generator.png_filename, "image_tiff_1.png") self.assertEqual(web_image_generator.thumbnail_filename, "image_tiff_1.thumbnail.jpg")
def test_create_thumbnail_no_image_file(self): text_file_path = os.path.join(self.extracted_package, "file.txt") with open(text_file_path, "w") as fp: fp.write("Text file content.") web_image_generator = utils.WebImageGenerator("file.txt", self.extracted_package) with self.assertRaises(exceptions.WebImageGeneratorError) as exc_info: web_image_generator.create_thumbnail() self.assertIn("Error opening image file ", str(exc_info.exception)) self.assertIn("file.txt", str(exc_info.exception)) self.assertFalse( os.path.exists(os.path.join(self.extracted_package, "file.png")))
def test_convert2png_to_destination_path(self): destination_path = tempfile.mkdtemp(".") web_image_generator = utils.WebImageGenerator("image_tiff_2.tif", self.extracted_package) web_image_generator.convert2png(destination_path) is_conversion_ok = os.path.exists( os.path.join( destination_path, os.path.splitext("image_tiff_2.tif")[0] + ".png", )) shutil.rmtree(destination_path) self.assertTrue(is_conversion_ok)
def test__get_image_object_large_image_file_security_error( self, mk_img_parser_feed): mk_img_parser_feed.side_effect = Image.DecompressionBombError("ERROR!") mocked_image_io = io.BytesIO() mocked_image = Image.new("RGB", (10, 10)) mocked_image.save(mocked_image_io, "TIFF") web_image_generator = utils.WebImageGenerator("image_tiff_2.tiff", ".") with self.assertRaises(exceptions.WebImageGeneratorError) as exc_info: web_image_generator._get_image_object(mocked_image_io.getvalue()) self.assertEqual( str(exc_info.exception), 'Error reading image "image_tiff_2.tiff": ERROR!', )
def test_create_thumbnail_large_image_file_security_error(self, mk_open): mk_open.side_effect = Image.DecompressionBombError("ERROR!") text_file_path = os.path.join(self.extracted_package, "file.txt") with open(text_file_path, "w") as fp: fp.write("Text file content.") web_image_generator = utils.WebImageGenerator("file.txt", self.extracted_package) with self.assertRaises(exceptions.WebImageGeneratorError) as exc_info: web_image_generator.create_thumbnail() self.assertIn("Error opening image file ", str(exc_info.exception)) self.assertIn("file.txt", str(exc_info.exception)) self.assertFalse( os.path.exists(os.path.join(self.extracted_package, "file.png")))
def test_create_WebImageGenerator_with_file_bytes(self): mocked_image_io = io.BytesIO() mocked_image = Image.new("RGB", (10, 10)) mocked_image.save(mocked_image_io, "TIFF") web_image_generator = utils.WebImageGenerator( "image_tiff_2.tiff", ".", mocked_image_io.getvalue()) self.assertEqual(web_image_generator.filename, "image_tiff_2.tiff") self.assertEqual(web_image_generator.image_file_path, "./image_tiff_2.tiff") self.assertEqual(web_image_generator.png_filename, "image_tiff_2.png") self.assertEqual(web_image_generator.thumbnail_filename, "image_tiff_2.thumbnail.jpg") self.assertEqual(web_image_generator._image_object.tobytes(), mocked_image.tobytes())
def test_get_png_bytes_ok(self): mocked_image_io = io.BytesIO() mocked_image = Image.new("RGB", (10, 10)) mocked_image.save(mocked_image_io, "TIFF") parser = ImageFile.Parser() parser.feed(mocked_image_io.getvalue()) web_image_generator = utils.WebImageGenerator("image_tiff_1.tiff", self.extracted_package) web_image_generator._image_object = parser.close() result = web_image_generator.get_png_bytes() image_expected = io.BytesIO() image_copy = web_image_generator._image_object.copy() image_copy.save(image_expected, "PNG") self.assertEqual(result, image_expected.getvalue())