示例#1
0
    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)
示例#2
0
    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))
示例#3
0
    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)
示例#4
0
    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)
示例#5
0
 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)
示例#6
0
 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))
示例#7
0
 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))
示例#8
0
 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))
示例#9
0
 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))
示例#10
0
 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))