diff --git a/README.md b/README.md index 28ea2fd..821e5e2 100644 --- a/README.md +++ b/README.md @@ -140,6 +140,9 @@ along with this program. If not, see . Copyright 2018 Julien (jvoisin) Voisin Copyright 2016 Marie Rose for MAT2's logo +The `tests/data/dirty_with_nsid.docx` file is licensed under GPLv3, +and was borrowed from the Calibre project: https://calibre-ebook.com/downloads/demos/demo.docx + # Thanks MAT2 wouldn't exist without: diff --git a/tests/data/dirty_with_nsid.docx b/tests/data/dirty_with_nsid.docx new file mode 100644 index 0000000..6f4ae99 Binary files /dev/null and b/tests/data/dirty_with_nsid.docx differ diff --git a/tests/test_deep_cleaning.py b/tests/test_deep_cleaning.py index ccd4955..aab46c7 100644 --- a/tests/test_deep_cleaning.py +++ b/tests/test_deep_cleaning.py @@ -137,3 +137,34 @@ class TestRsidRemoval(unittest.TestCase): os.remove('./tests/data/clean.docx') os.remove('./tests/data/clean.cleaned.docx') + + +class TestNsidRemoval(unittest.TestCase): + def test_office(self): + shutil.copy('./tests/data/dirty_with_nsid.docx', './tests/data/clean.docx') + p = office.MSOfficeParser('./tests/data/clean.docx') + + meta = p.get_meta() + self.assertIsNotNone(meta) + + how_many_rsid = False + with zipfile.ZipFile('./tests/data/clean.docx') as zin: + for item in zin.infolist(): + if not item.filename.endswith('.xml'): + continue + num = zin.read(item).decode('utf-8').lower().count('w:rsid') + how_many_rsid += num + self.assertEqual(how_many_rsid, 1190) + + ret = p.remove_all() + self.assertTrue(ret) + + with zipfile.ZipFile('./tests/data/clean.cleaned.docx') as zin: + for item in zin.infolist(): + if not item.filename.endswith('.xml'): + continue + num = zin.read(item).decode('utf-8').lower().count('w:nsid') + self.assertEqual(num, 0) + + os.remove('./tests/data/clean.docx') + os.remove('./tests/data/clean.cleaned.docx')