def test_extract_metadata(self): patch("pad.plugins.image_info.ImageInfoPlugin._add_name").start() patch("pad.plugins.image_info.ImageInfoPlugin._update_counts").start() patch("pad.plugins.image_info.ImageInfoPlugin._save_stats").start() add_name_calls = [] update_counts_calls = [] save_stats_calls = [] images = {} for x in range(5): images.update({ x: new_image(1, 1, "jpg", "%s.jpg" % x) }) add_name_calls.append(call(self.mock_msg, "%s.jpg" % x)) update_counts_calls.append(call(self.mock_msg, "jpg", by=1)) save_stats_calls.append(call(self.mock_msg, new_image_string((1, 1), "RGB"), "jpg")) self.mock_msg.msg = new_email(images) for part in self.mock_msg.msg.walk(): payload = part.get_payload(decode=True) self.plugin.extract_metadata(self.mock_msg, payload, None, part) self.plugin._add_name.assert_has_calls(add_name_calls) self.plugin._update_counts.assert_has_calls(update_counts_calls) self.plugin._save_stats.assert_has_calls(save_stats_calls)
def test_save_stats(self): image = new_image_string((2, 2), mode="RGB") self.plugin._save_stats(self.mock_msg, image, "jpg") self.plugin._save_stats(self.mock_msg, image, "jpg") expected_sizes = { "all": { 1: {"width": 2, "height": 2}, }, "jpg": { 1: {"width": 2, "height": 2}, } } expected_coverage = { "all": 8, "jpg": 8 } sizes = self.plugin.get_local(self.mock_msg, "sizes") self.assertListEqual(list(sizes.keys()), list(expected_sizes.keys())) for subtype in sizes: self.assertListEqual(list(sizes[subtype].values()), list(expected_sizes[subtype].values())) coverage = self.plugin.get_local(self.mock_msg, "coverage") self.assertDictEqual(expected_coverage, dict(coverage))
def test_extract_metadata(self): patch("oa.plugins.pdf_info.PDFInfoPlugin._add_name").start() patch("oa.plugins.pdf_info.PDFInfoPlugin._update_counts").start() patch("oa.plugins.pdf_info.PDFInfoPlugin._save_stats").start() add_name_calls = [] update_counts_calls = [] save_stats_calls = [] pdfs = {} allpdfinfo = ( {"details": {"/Author": "Author1", "/Creator": "unittest", "/Created": "2016-02-11", "/Title": "pdftest"}}, {"details": {"/Author": "Author2", "/Creator": "unittest", "/Created": "2016-02-11", "/Title": "pdftest2"}}, {"details": {"/Author": "Author3", "/Creator": "unittest", "/Created": "2016-02-11", "/Title": "pdftest3"}}, {"details": {"/Author": "Author4", "/Creator": "unittest", "/Created": "2016-02-11", "/Title": "pdftest4"}, "images": ("image1", (100, 100))}, ) for i, pdf_info in enumerate(allpdfinfo): name = "%d.pdf" % i if "images" not in pdf_info: pdf_object = new_pdf(details=pdf_info["details"], name=name) else: pdfc = PDFWithAttachments( details=pdf_info["details"], name=name) image = new_image_string(pdf_info["images"][1]) pdfc.addAttachment(pdf_info["images"][0], image) pdf_object = {"data": pdfc.as_file(), "name": name} pdfs.update({i: pdf_object}) add_name_calls.append(call(self.mock_msg, name)) update_counts_calls.append(call(self.mock_msg, incr=1)) save_stats_calls.append(call(self.mock_msg, pdf_object["data"].read())) self.mock_msg.msg = new_email(pdfs) for part in self.mock_msg.msg.walk(): payload = part.get_payload(decode=True) self.plugin.extract_metadata(self.mock_msg, payload, None, part) self.plugin._add_name.assert_has_calls(add_name_calls) self.plugin._update_counts.assert_has_calls(update_counts_calls) self.plugin._save_stats.assert_has_calls(save_stats_calls)
def test_extract_metadata(self): patch("pad.plugins.pdf_info.PDFInfoPlugin._add_name").start() patch("pad.plugins.pdf_info.PDFInfoPlugin._update_counts").start() patch("pad.plugins.pdf_info.PDFInfoPlugin._save_stats").start() add_name_calls = [] update_counts_calls = [] save_stats_calls = [] pdfs = {} allpdfinfo = ( {"details": {"/Author": "Author1", "/Creator": "unittest", "/Created": "2016-02-11", "/Title": "pdftest"}}, {"details": {"/Author": "Author2", "/Creator": "unittest", "/Created": "2016-02-11", "/Title": "pdftest2"}}, {"details": {"/Author": "Author3", "/Creator": "unittest", "/Created": "2016-02-11", "/Title": "pdftest3"}}, {"details": {"/Author": "Author4", "/Creator": "unittest", "/Created": "2016-02-11", "/Title": "pdftest4"}, "images": ("image1", (100, 100))}, ) for i, pdf_info in enumerate(allpdfinfo): name = "%d.pdf" % i if "images" not in pdf_info: pdf_object = new_pdf(details=pdf_info["details"], name=name) else: pdfc = PDFWithAttachments( details=pdf_info["details"], name=name) image = new_image_string(pdf_info["images"][1]) pdfc.addAttachment(pdf_info["images"][0], image) pdf_object = {"data": pdfc.as_file(), "name": name} pdfs.update({i: pdf_object}) add_name_calls.append(call(self.mock_msg, name)) update_counts_calls.append(call(self.mock_msg, incr=1)) save_stats_calls.append(call(self.mock_msg, pdf_object["data"].read())) self.mock_msg.msg = new_email(pdfs) for part in self.mock_msg.msg.walk(): payload = part.get_payload(decode=True) self.plugin.extract_metadata(self.mock_msg, payload, None, part) self.plugin._add_name.assert_has_calls(add_name_calls) self.plugin._update_counts.assert_has_calls(update_counts_calls) self.plugin._save_stats.assert_has_calls(save_stats_calls)
def test_get_image_sizes(self): sizes = {'width': 2, "height": 2} image = new_image_string((2,2), "RGB") self.assertDictEqual(self.plugin._get_image_sizes(image), sizes)
def test_max_false(self): image = new_image_string((2,2)) self.plugin._save_stats(self.mock_msg, image, "jpg") self.assertFalse(self.plugin.image_size_range(self.mock_msg, "all", 3, 3, 1, 1))
def test_min_true(self): image = new_image_string((2, 2)) self.plugin._save_stats(self.mock_msg, image, "jpg") self.assertTrue(self.plugin.image_size_range( self.mock_msg, "all", 1, 1))
def test_true(self): image = new_image_string((2,2)) self.plugin._save_stats(self.mock_msg, image, "jpg") self.assertTrue(self.plugin.image_size_exact( self.mock_msg, "all", 2, 2))
def test_max_false(self): image = new_image_string((2,2)) self.plugin._save_stats(self.mock_msg, image, "jpg") self.assertFalse(self.plugin.pixel_coverage(self.mock_msg, "all", 3, 2))
def test_min_true(self): image = new_image_string((2,2)) self.plugin._save_stats(self.mock_msg, image, "jpg") self.assertTrue(self.plugin.pixel_coverage(self.mock_msg, "all", 3))