summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjvoisin2018-03-20 23:35:02 +0100
committerjvoisin2018-03-20 23:35:02 +0100
commit7ad9ff08ad52d16b05e689ef383e395b7731d594 (patch)
tree48402e4b206dd360641529df6069d82055dd9831
parentd48dfc8e218c3e762a385f14d0c788115c2a72fa (diff)
Add a test for PNG files
-rw-r--r--src/parsers/png.py13
-rw-r--r--tests/data/dirty.pngbin0 -> 594147 bytes
-rw-r--r--tests/test_libmat2.py32
3 files changed, 36 insertions, 9 deletions
diff --git a/src/parsers/png.py b/src/parsers/png.py
index 3c0a507..20cd234 100644
--- a/src/parsers/png.py
+++ b/src/parsers/png.py
@@ -7,12 +7,21 @@ from . import abstract
7 7
8class PNGParser(abstract.AbstractParser): 8class PNGParser(abstract.AbstractParser):
9 mimetypes = {'image/png', } 9 mimetypes = {'image/png', }
10 meta_list = set() 10 meta_whitelist = {'SourceFile', 'ExifToolVersion', 'FileName',
11 'Directory', 'FileSize', 'FileModifyDate', 'FileAccessDate',
12 "FileInodeChangeDate", 'FilePermissions', 'FileType',
13 'FileTypeExtension', 'MIMEType', 'ImageWidth', 'BitDepth', 'ColorType',
14 'Compression', 'Filter', 'Interlace', 'BackgroundColor', 'ImageSize',
15 'Megapixels', 'ImageHeight'}
11 16
12 def get_meta(self): 17 def get_meta(self):
13 out = subprocess.check_output(['exiftool', '-json', self.filename]) 18 out = subprocess.check_output(['exiftool', '-json', self.filename])
14 return json.loads(out)[0] 19 meta = json.loads(out)[0]
20 for key in self.meta_whitelist:
21 meta.pop(key, None)
22 return meta
15 23
16 def remove_all(self): 24 def remove_all(self):
17 surface = cairo.ImageSurface.create_from_png(self.filename) 25 surface = cairo.ImageSurface.create_from_png(self.filename)
18 surface.write_to_png(self.output_filename) 26 surface.write_to_png(self.output_filename)
27 return True
diff --git a/tests/data/dirty.png b/tests/data/dirty.png
new file mode 100644
index 0000000..00acab0
--- /dev/null
+++ b/tests/data/dirty.png
Binary files differ
diff --git a/tests/test_libmat2.py b/tests/test_libmat2.py
index 4b36270..9305080 100644
--- a/tests/test_libmat2.py
+++ b/tests/test_libmat2.py
@@ -5,7 +5,7 @@ import shutil
5import os 5import os
6 6
7from src import parsers 7from src import parsers
8from src.parsers import pdf 8from src.parsers import pdf, png
9 9
10class TestGetMeta(unittest.TestCase): 10class TestGetMeta(unittest.TestCase):
11 def test_pdf(self): 11 def test_pdf(self):
@@ -14,14 +14,15 @@ class TestGetMeta(unittest.TestCase):
14 self.assertEqual(meta['producer'], 'pdfTeX-1.40.14') 14 self.assertEqual(meta['producer'], 'pdfTeX-1.40.14')
15 self.assertEqual(meta['creator'], "'Certified by IEEE PDFeXpress at 03/19/2016 2:56:07 AM'") 15 self.assertEqual(meta['creator'], "'Certified by IEEE PDFeXpress at 03/19/2016 2:56:07 AM'")
16 16
17class TestCleaning(unittest.TestCase): 17 def test_png(self):
18 def setUp(self): 18 p = png.PNGParser('./tests/data/dirty.png')
19 shutil.copy('./tests/data/dirty.pdf', './tests/data/clean.pdf') 19 meta = p.get_meta()
20 20 self.assertEqual(meta['Comment'], 'This is a comment, be careful!')
21 def tearDown(self): 21 self.assertEqual(meta['ModifyDate'], "2018:03:20 21:59:25")
22 os.remove('./tests/data/clean.pdf')
23 22
23class TestCleaning(unittest.TestCase):
24 def test_pdf(self): 24 def test_pdf(self):
25 shutil.copy('./tests/data/dirty.pdf', './tests/data/clean.pdf')
25 p = pdf.PDFParser('./tests/data/clean.pdf') 26 p = pdf.PDFParser('./tests/data/clean.pdf')
26 27
27 meta = p.get_meta() 28 meta = p.get_meta()
@@ -33,3 +34,20 @@ class TestCleaning(unittest.TestCase):
33 p = pdf.PDFParser('./tests/data/clean.pdf.cleaned') 34 p = pdf.PDFParser('./tests/data/clean.pdf.cleaned')
34 expected_meta = {'creation-date': -1, 'format': 'PDF-1.5', 'mod-date': -1} 35 expected_meta = {'creation-date': -1, 'format': 'PDF-1.5', 'mod-date': -1}
35 self.assertEqual(p.get_meta(), expected_meta) 36 self.assertEqual(p.get_meta(), expected_meta)
37
38 os.remove('./tests/data/clean.pdf')
39
40 def test_png(self):
41 shutil.copy('./tests/data/dirty.png', './tests/data/clean.png')
42 p = png.PNGParser('./tests/data/clean.png')
43
44 meta = p.get_meta()
45 self.assertEqual(meta['Comment'], 'This is a comment, be careful!')
46
47 ret = p.remove_all()
48 self.assertTrue(ret)
49
50 p = png.PNGParser('./tests/data/clean.png.cleaned')
51 self.assertEqual(p.get_meta(), {})
52
53 os.remove('./tests/data/clean.png')