mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-10-30 03:56:23 -05:00 
			
		
		
		
	Add: more tests
This commit is contained in:
		| @@ -97,6 +97,45 @@ class TestDate(TestCase): | ||||
|         self.assertEqual(document.generate_source_filename(), | ||||
|                          "test/test-0000001.pdf.gpg") | ||||
|  | ||||
|     @override_settings(MEDIA_ROOT="/tmp/paperless-tests-{}". | ||||
|                        format(str(uuid4())[:8])) | ||||
|     @override_settings(PAPERLESS_FILENAME_FORMAT="{correspondent}/" + | ||||
|                        "{correspondent}") | ||||
|     def test_file_renaming_missing_permissions(self): | ||||
|         self.add_to_deletion_list(settings.MEDIA_ROOT) | ||||
|  | ||||
|         document = Document() | ||||
|         document.file_type = "pdf" | ||||
|         document.storage_type = Document.STORAGE_TYPE_UNENCRYPTED | ||||
|         document.save() | ||||
|  | ||||
|         # Ensure that filename is properly generated | ||||
|         tmp = document.source_filename | ||||
|         self.assertEqual(document.generate_source_filename(), | ||||
|                          "none/none-0000001.pdf") | ||||
|         document.create_source_directory() | ||||
|         Path(document.source_path).touch() | ||||
|  | ||||
|         # Test source_path | ||||
|         self.assertEqual(document.source_path, settings.MEDIA_ROOT + | ||||
|                          "/documents/originals/none/none-0000001.pdf") | ||||
|  | ||||
|         # Make the folder read- and execute-only (no writing and no renaming) | ||||
|         os.chmod(settings.MEDIA_ROOT + "/documents/originals/none", 0o555) | ||||
|  | ||||
|         # Set a correspondent and save the document | ||||
|         document.correspondent = Correspondent.objects.get_or_create( | ||||
|                 name="test")[0] | ||||
|         document.save() | ||||
|  | ||||
|         # Check proper handling of files | ||||
|         self.assertEqual(os.path.isfile(settings.MEDIA_ROOT + "/documents/" + | ||||
|                          "originals/none/none-0000001.pdf"), True) | ||||
|         self.assertEqual(document.source_filename, | ||||
|                          "none/none-0000001.pdf") | ||||
|  | ||||
|         os.chmod(settings.MEDIA_ROOT + "/documents/originals/none", 0o666) | ||||
|  | ||||
|     @override_settings(MEDIA_ROOT="/tmp/paperless-tests-{}". | ||||
|                        format(str(uuid4())[:8])) | ||||
|     @override_settings(PAPERLESS_FILENAME_FORMAT="{correspondent}/" + | ||||
| @@ -123,6 +162,16 @@ class TestDate(TestCase): | ||||
|         self.assertEqual(os.path.isdir(settings.MEDIA_ROOT + | ||||
|                          "/documents/originals/none"), False) | ||||
|  | ||||
|     @override_settings(PAPERLESS_FILENAME_FORMAT="{correspondent}/" + | ||||
|                        "{correspondent}") | ||||
|     def test_document_delete_nofile(self): | ||||
|         document = Document() | ||||
|         document.file_type = "pdf" | ||||
|         document.storage_type = Document.STORAGE_TYPE_UNENCRYPTED | ||||
|         document.save() | ||||
|  | ||||
|         document.delete() | ||||
|  | ||||
|     @override_settings(MEDIA_ROOT="/tmp/paperless-tests-{}". | ||||
|                        format(str(uuid4())[:8])) | ||||
|     @override_settings(PAPERLESS_FILENAME_FORMAT="{correspondent}/" + | ||||
| @@ -393,6 +442,8 @@ class TestDate(TestCase): | ||||
|                                         "test/test-0000001.pdf") | ||||
|         self.assertEqual(os.path.isfile(settings.MEDIA_ROOT + "/documents/" + | ||||
|                          "originals/test/test-0000001.pdf"), True) | ||||
|         self.assertEqual(os.path.isfile(settings.MEDIA_ROOT + "/documents/" + | ||||
|                          "originals/none/none-0000001.pdf"), False) | ||||
|  | ||||
|         # Set new correspondent and expect document to be saved properly | ||||
|         document.correspondent = Correspondent.objects.get_or_create( | ||||
| @@ -442,6 +493,8 @@ class TestDate(TestCase): | ||||
|                                         "test/test-0000001.pdf.gpg") | ||||
|         self.assertEqual(os.path.isfile(settings.MEDIA_ROOT + "/documents/" + | ||||
|                          "originals/test/test-0000001.pdf.gpg"), True) | ||||
|         self.assertEqual(os.path.isfile(settings.MEDIA_ROOT + "/documents/" + | ||||
|                          "originals/none/none-0000001.pdf"), False) | ||||
|  | ||||
|         # Set new correspondent and expect document to be saved properly | ||||
|         document.correspondent = Correspondent.objects.get_or_create( | ||||
| @@ -459,3 +512,105 @@ class TestDate(TestCase): | ||||
|                          "/documents/originals/test"), False) | ||||
|         self.assertEqual(document.generate_source_filename(), | ||||
|                          "foo/foo-0000001.pdf.gpg") | ||||
|  | ||||
|     def test_delete_all_empty_subdirectories(self): | ||||
|         # Create our working directory | ||||
|         tmp = "/tmp/paperless-tests-{}".format(str(uuid4())[:8]) | ||||
|         os.makedirs(tmp) | ||||
|         self.add_to_deletion_list(tmp) | ||||
|  | ||||
|         os.makedirs(os.path.join(tmp, "empty")) | ||||
|         os.makedirs(os.path.join(tmp, "empty", "subdirectory")) | ||||
|  | ||||
|         os.makedirs(os.path.join(tmp, "notempty")) | ||||
|         Path(os.path.join(tmp, "notempty", "file")).touch() | ||||
|  | ||||
|         Document.delete_all_empty_subdirectories(tmp) | ||||
|  | ||||
|         self.assertEqual(os.path.isdir(os.path.join(tmp, "notempty")), True) | ||||
|         self.assertEqual(os.path.isdir(os.path.join(tmp, "empty")), False) | ||||
|         self.assertEqual(os.path.isfile( | ||||
|             os.path.join(tmp, "notempty", "file")), True) | ||||
|  | ||||
|     def test_try_delete_empty_directories(self): | ||||
|         # Create our working directory | ||||
|         tmp = "/tmp/paperless-tests-{}".format(str(uuid4())[:8]) | ||||
|         os.makedirs(tmp) | ||||
|         self.add_to_deletion_list(tmp) | ||||
|  | ||||
|         os.makedirs(os.path.join(tmp, "notempty")) | ||||
|         Path(os.path.join(tmp, "notempty", "file")).touch() | ||||
|         os.makedirs(os.path.join(tmp, "notempty", "empty")) | ||||
|  | ||||
|         Document.try_delete_empty_directories( | ||||
|                 os.path.join(tmp, "notempty", "empty")) | ||||
|         self.assertEqual(os.path.isdir(os.path.join(tmp, "notempty")), True) | ||||
|         self.assertEqual(os.path.isfile( | ||||
|             os.path.join(tmp, "notempty", "file")), True) | ||||
|         self.assertEqual(os.path.isdir( | ||||
|             os.path.join(tmp, "notempty", "empty")), False) | ||||
|  | ||||
|     @override_settings(MEDIA_ROOT="/tmp/paperless-tests-{}". | ||||
|                        format(str(uuid4())[:8])) | ||||
|     @override_settings(PAPERLESS_FILENAME_FORMAT="{correspondent}/" + | ||||
|                        "{correspondent}") | ||||
|     def test_document_accidentally_deleted(self): | ||||
|         self.add_to_deletion_list(settings.MEDIA_ROOT) | ||||
|  | ||||
|         document = Document() | ||||
|         document.file_type = "pdf" | ||||
|         document.storage_type = Document.STORAGE_TYPE_UNENCRYPTED | ||||
|         document.save() | ||||
|  | ||||
|         # Ensure that filename is properly generated | ||||
|         tmp = document.source_filename | ||||
|         self.assertEqual(document.generate_source_filename(), | ||||
|                          "none/none-0000001.pdf") | ||||
|         document.create_source_directory() | ||||
|         Path(document.source_path).touch() | ||||
|  | ||||
|         # Test source_path | ||||
|         self.assertEqual(document.source_path, settings.MEDIA_ROOT + | ||||
|                          "/documents/originals/none/none-0000001.pdf") | ||||
|  | ||||
|         # Delete the document "illegaly" | ||||
|         os.remove(settings.MEDIA_ROOT + "/documents/originals/" + | ||||
|                                         "none/none-0000001.pdf") | ||||
|  | ||||
|         # Set new correspondent and expect document to be saved properly | ||||
|         document.correspondent = Correspondent.objects.get_or_create( | ||||
|                 name="foo")[0] | ||||
|         document.save() | ||||
|  | ||||
|         # Check proper handling of files | ||||
|         self.assertEqual(os.path.isdir(settings.MEDIA_ROOT + | ||||
|                          "/documents/originals/none"), True) | ||||
|         self.assertEqual(document.source_filename, | ||||
|                          "none/none-0000001.pdf") | ||||
|  | ||||
|     @override_settings(MEDIA_ROOT="/tmp/paperless-tests-{}". | ||||
|                        format(str(uuid4())[:8])) | ||||
|     @override_settings(PAPERLESS_FILENAME_FORMAT="{correspondent}/" + | ||||
|                        "{correspondent}") | ||||
|     def test_set_filename(self): | ||||
|         self.add_to_deletion_list(settings.MEDIA_ROOT) | ||||
|  | ||||
|         document = Document() | ||||
|         document.file_type = "pdf" | ||||
|         document.storage_type = Document.STORAGE_TYPE_UNENCRYPTED | ||||
|         document.save() | ||||
|  | ||||
|         # Ensure that filename is properly generated | ||||
|         tmp = document.source_filename | ||||
|         self.assertEqual(document.generate_source_filename(), | ||||
|                          "none/none-0000001.pdf") | ||||
|         document.create_source_directory() | ||||
|         Path(document.source_path).touch() | ||||
|  | ||||
|         # Set existing filename | ||||
|         document.set_filename(tmp) | ||||
|         self.assertEqual(document.source_filename, "none/none-0000001.pdf") | ||||
|  | ||||
|         # Set non-existing filename | ||||
|         document.set_filename("doesnotexist") | ||||
|         self.assertEqual(document.source_filename, "none/none-0000001.pdf") | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Wolf-Bastian Poettner
					Wolf-Bastian Poettner