mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-10-30 03:56:23 -05:00 
			
		
		
		
	more tests!
This commit is contained in:
		
							
								
								
									
										
											BIN
										
									
								
								src/documents/tests/samples/documents/archive/0000001.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/documents/tests/samples/documents/archive/0000001.pdf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| @@ -100,6 +100,42 @@ class DocumentApiTest(DirectoriesMixin, APITestCase): | ||||
|         self.assertEqual(response.status_code, 200) | ||||
|         self.assertEqual(response.content, content_thumbnail) | ||||
|  | ||||
|     def test_download_with_archive(self): | ||||
|  | ||||
|         _, filename = tempfile.mkstemp(dir=self.dirs.originals_dir) | ||||
|  | ||||
|         content = b"This is a test" | ||||
|         content_archive = b"This is the same test but archived" | ||||
|  | ||||
|         with open(filename, "wb") as f: | ||||
|             f.write(content) | ||||
|  | ||||
|         doc = Document.objects.create(title="none", filename=os.path.basename(filename), | ||||
|                                       mime_type="application/pdf") | ||||
|  | ||||
|         with open(os.path.join(self.dirs.archive_dir, "{:07d}.pdf".format(doc.pk)), "wb") as f: | ||||
|             f.write(content_archive) | ||||
|  | ||||
|         response = self.client.get('/api/documents/{}/download/'.format(doc.pk)) | ||||
|  | ||||
|         self.assertEqual(response.status_code, 200) | ||||
|         self.assertEqual(response.content, content_archive) | ||||
|  | ||||
|         response = self.client.get('/api/documents/{}/download/?original=true'.format(doc.pk)) | ||||
|  | ||||
|         self.assertEqual(response.status_code, 200) | ||||
|         self.assertEqual(response.content, content) | ||||
|  | ||||
|         response = self.client.get('/api/documents/{}/preview/'.format(doc.pk)) | ||||
|  | ||||
|         self.assertEqual(response.status_code, 200) | ||||
|         self.assertEqual(response.content, content_archive) | ||||
|  | ||||
|         response = self.client.get('/api/documents/{}/preview/?original=true'.format(doc.pk)) | ||||
|  | ||||
|         self.assertEqual(response.status_code, 200) | ||||
|         self.assertEqual(response.content, content) | ||||
|  | ||||
|     def test_document_actions_not_existing_file(self): | ||||
|  | ||||
|         doc = Document.objects.create(title="none", filename=os.path.basename("asd"), mime_type="application/pdf") | ||||
|   | ||||
| @@ -1,5 +1,6 @@ | ||||
| import os | ||||
| import re | ||||
| import shutil | ||||
| import tempfile | ||||
| from unittest import mock | ||||
| from unittest.mock import MagicMock | ||||
| @@ -368,9 +369,10 @@ class DummyParser(DocumentParser): | ||||
|         # not important during tests | ||||
|         raise NotImplementedError() | ||||
|  | ||||
|     def __init__(self, logging_group, scratch_dir): | ||||
|     def __init__(self, logging_group, scratch_dir, archive_path): | ||||
|         super(DummyParser, self).__init__(logging_group) | ||||
|         _, self.fake_thumb = tempfile.mkstemp(suffix=".png", dir=scratch_dir) | ||||
|         self.archive_path = archive_path | ||||
|  | ||||
|     def get_optimised_thumbnail(self, document_path, mime_type): | ||||
|         return self.fake_thumb | ||||
| @@ -411,7 +413,7 @@ def fake_magic_from_file(file, mime=False): | ||||
| class TestConsumer(DirectoriesMixin, TestCase): | ||||
|  | ||||
|     def make_dummy_parser(self, logging_group): | ||||
|         return DummyParser(logging_group, self.dirs.scratch_dir) | ||||
|         return DummyParser(logging_group, self.dirs.scratch_dir, self.get_test_archive_file()) | ||||
|  | ||||
|     def make_faulty_parser(self, logging_group): | ||||
|         return FaultyParser(logging_group, self.dirs.scratch_dir) | ||||
| @@ -432,8 +434,16 @@ class TestConsumer(DirectoriesMixin, TestCase): | ||||
|         self.consumer = Consumer() | ||||
|  | ||||
|     def get_test_file(self): | ||||
|         fd, f = tempfile.mkstemp(suffix=".pdf", dir=self.dirs.scratch_dir) | ||||
|         return f | ||||
|         src = os.path.join(os.path.dirname(__file__), "samples", "documents", "originals", "0000001.pdf") | ||||
|         dst = os.path.join(self.dirs.scratch_dir, "sample.pdf") | ||||
|         shutil.copy(src, dst) | ||||
|         return dst | ||||
|  | ||||
|     def get_test_archive_file(self): | ||||
|         src = os.path.join(os.path.dirname(__file__), "samples", "documents", "archive", "0000001.pdf") | ||||
|         dst = os.path.join(self.dirs.scratch_dir, "sample_archive.pdf") | ||||
|         shutil.copy(src, dst) | ||||
|         return dst | ||||
|  | ||||
|     def testNormalOperation(self): | ||||
|  | ||||
| @@ -454,6 +464,13 @@ class TestConsumer(DirectoriesMixin, TestCase): | ||||
|             document.thumbnail_path | ||||
|         )) | ||||
|  | ||||
|         self.assertTrue(os.path.isfile( | ||||
|             document.archive_path | ||||
|         )) | ||||
|  | ||||
|         self.assertEqual(document.checksum, "42995833e01aea9b3edee44bbfdd7ce1") | ||||
|         self.assertEqual(document.archive_checksum, "62acb0bcbfbcaa62ca6ad3668e4e404b") | ||||
|  | ||||
|         self.assertFalse(os.path.isfile(filename)) | ||||
|  | ||||
|     def testOverrideFilename(self): | ||||
| @@ -501,7 +518,7 @@ class TestConsumer(DirectoriesMixin, TestCase): | ||||
|  | ||||
|         self.fail("Should throw exception") | ||||
|  | ||||
|     def testDuplicates(self): | ||||
|     def testDuplicates1(self): | ||||
|         self.consumer.try_consume_file(self.get_test_file()) | ||||
|  | ||||
|         try: | ||||
| @@ -512,6 +529,21 @@ class TestConsumer(DirectoriesMixin, TestCase): | ||||
|  | ||||
|         self.fail("Should throw exception") | ||||
|  | ||||
|     def testDuplicates2(self): | ||||
|         self.consumer.try_consume_file(self.get_test_file()) | ||||
|  | ||||
|         try: | ||||
|             self.consumer.try_consume_file(self.get_test_archive_file()) | ||||
|         except ConsumerError as e: | ||||
|             self.assertTrue(str(e).endswith("It is a duplicate.")) | ||||
|             return | ||||
|  | ||||
|         self.fail("Should throw exception") | ||||
|  | ||||
|     def testDuplicates3(self): | ||||
|         self.consumer.try_consume_file(self.get_test_archive_file()) | ||||
|         self.consumer.try_consume_file(self.get_test_file()) | ||||
|  | ||||
|     @mock.patch("documents.parsers.document_consumer_declaration.send") | ||||
|     def testNoParsers(self, m): | ||||
|         m.return_value = [] | ||||
|   | ||||
| @@ -23,10 +23,7 @@ class TestExporter(DirectoriesMixin, TestCase): | ||||
|  | ||||
|         file = os.path.join(self.dirs.originals_dir, "0000001.pdf") | ||||
|  | ||||
|         with open(file, "rb") as f: | ||||
|             checksum = hashlib.md5(f.read()).hexdigest() | ||||
|  | ||||
|         Document.objects.create(checksum=checksum, title="wow", filename="0000001.pdf", id=1, mime_type="application/pdf") | ||||
|         Document.objects.create(checksum="42995833e01aea9b3edee44bbfdd7ce1", archive_checksum="62acb0bcbfbcaa62ca6ad3668e4e404b", title="wow", filename="0000001.pdf", id=1, mime_type="application/pdf") | ||||
|         Document.objects.create(checksum="9c9691e51741c1f4f41a20896af31770", title="wow", filename="0000002.pdf.gpg", id=2, mime_type="application/pdf", storage_type=Document.STORAGE_TYPE_GPG) | ||||
|         Tag.objects.create(name="t") | ||||
|         DocumentType.objects.create(name="dt") | ||||
| @@ -51,6 +48,14 @@ class TestExporter(DirectoriesMixin, TestCase): | ||||
|                     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']) | ||||
|  | ||||
|         Document.objects.create(checksum="AAAAAAAAAAAAAAAAA", title="wow", filename="0000004.pdf", id=3, mime_type="application/pdf") | ||||
|  | ||||
|         self.assertRaises(FileNotFoundError, call_command, 'document_exporter', target) | ||||
|   | ||||
| @@ -82,6 +82,7 @@ class TestBaseParser(TestCase): | ||||
|         shutil.rmtree(self.scratch) | ||||
|  | ||||
|     @mock.patch("documents.parsers.DocumentParser.get_thumbnail", fake_get_thumbnail) | ||||
|     @override_settings(OPTIMIZE_THUMBNAILS=True) | ||||
|     def test_get_optimised_thumbnail(self): | ||||
|         parser = DocumentParser(None) | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 jonaswinkler
					jonaswinkler