def test_exporter(self): shutil.rmtree(os.path.join(self.dirs.media_dir, "documents")) shutil.copytree( os.path.join(os.path.dirname(__file__), "samples", "documents"), os.path.join(self.dirs.media_dir, "documents")) file = os.path.join(self.dirs.originals_dir, "0000001.pdf") Document.objects.create( content="Content", checksum="42995833e01aea9b3edee44bbfdd7ce1", archive_checksum="62acb0bcbfbcaa62ca6ad3668e4e404b", title="wow", filename="0000001.pdf", mime_type="application/pdf") Document.objects.create(content="Content", checksum="9c9691e51741c1f4f41a20896af31770", title="wow", filename="0000002.pdf.gpg", mime_type="application/pdf", storage_type=Document.STORAGE_TYPE_GPG) Tag.objects.create(name="t") DocumentType.objects.create(name="dt") Correspondent.objects.create(name="c") target = tempfile.mkdtemp() self.addCleanup(shutil.rmtree, target) call_command('document_exporter', target) with open(os.path.join(target, "manifest.json")) as f: manifest = json.load(f) self.assertEqual(len(manifest), 5) for element in manifest: if element['model'] == 'documents.document': fname = os.path.join( target, element[document_exporter.EXPORTER_FILE_NAME]) self.assertTrue(os.path.exists(fname)) self.assertTrue( os.path.exists( os.path.join( target, element[ document_exporter.EXPORTER_THUMBNAIL_NAME]))) with open(fname, "rb") as f: checksum = hashlib.md5(f.read()).hexdigest() self.assertEqual(checksum, element['fields']['checksum']) if document_exporter.EXPORTER_ARCHIVE_NAME in element: fname = os.path.join( target, element[document_exporter.EXPORTER_ARCHIVE_NAME]) self.assertTrue(os.path.exists(fname)) with open(fname, "rb") as f: checksum = hashlib.md5(f.read()).hexdigest() self.assertEqual(checksum, element['fields']['archive_checksum']) with paperless_environment() as dirs: call_command('document_importer', target) messages = check_sanity() # everything is alright after the test self.assertEqual(len(messages), 0, str([str(m) for m in messages]))
def test_exporter(self, use_filename_format=False): shutil.rmtree(os.path.join(self.dirs.media_dir, "documents")) shutil.copytree( os.path.join(os.path.dirname(__file__), "samples", "documents"), os.path.join(self.dirs.media_dir, "documents")) manifest = self._do_export(use_filename_format=use_filename_format) self.assertEqual(len(manifest), 7) self.assertEqual( len( list( filter(lambda e: e['model'] == 'documents.document', manifest))), 4) self.assertTrue( os.path.exists(os.path.join(self.target, "manifest.json"))) self.assertEqual( self._get_document_from_manifest(manifest, self.d1.id)['fields']['title'], "wow1") self.assertEqual( self._get_document_from_manifest(manifest, self.d2.id)['fields']['title'], "wow2") self.assertEqual( self._get_document_from_manifest(manifest, self.d3.id)['fields']['title'], "wow2") self.assertEqual( self._get_document_from_manifest(manifest, self.d4.id)['fields']['title'], "wow_dec") for element in manifest: if element['model'] == 'documents.document': fname = os.path.join( self.target, element[document_exporter.EXPORTER_FILE_NAME]) self.assertTrue(os.path.exists(fname)) self.assertTrue( os.path.exists( os.path.join( self.target, element[ document_exporter.EXPORTER_THUMBNAIL_NAME]))) with open(fname, "rb") as f: checksum = hashlib.md5(f.read()).hexdigest() self.assertEqual(checksum, element['fields']['checksum']) self.assertEqual(element['fields']['storage_type'], Document.STORAGE_TYPE_UNENCRYPTED) if document_exporter.EXPORTER_ARCHIVE_NAME in element: fname = os.path.join( self.target, element[document_exporter.EXPORTER_ARCHIVE_NAME]) self.assertTrue(os.path.exists(fname)) with open(fname, "rb") as f: checksum = hashlib.md5(f.read()).hexdigest() self.assertEqual(checksum, element['fields']['archive_checksum']) with paperless_environment() as dirs: self.assertEqual(Document.objects.count(), 4) Document.objects.all().delete() Correspondent.objects.all().delete() DocumentType.objects.all().delete() Tag.objects.all().delete() self.assertEqual(Document.objects.count(), 0) call_command('document_importer', self.target) self.assertEqual(Document.objects.count(), 4) self.assertEqual(Tag.objects.count(), 1) self.assertEqual(Correspondent.objects.count(), 1) self.assertEqual(DocumentType.objects.count(), 1) self.assertEqual(Document.objects.get(id=self.d1.id).title, "wow1") self.assertEqual(Document.objects.get(id=self.d2.id).title, "wow2") self.assertEqual(Document.objects.get(id=self.d3.id).title, "wow2") self.assertEqual( Document.objects.get(id=self.d4.id).title, "wow_dec") messages = check_sanity() # everything is alright after the test self.assertEqual(len(messages), 0, str([str(m) for m in messages]))