mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2025-04-02 13:45:10 -05:00
76 lines
2.5 KiB
Python
76 lines
2.5 KiB
Python
import textwrap
|
|
from unittest import mock
|
|
|
|
from django.core.checks import Error
|
|
from django.test import TestCase
|
|
from django.test import override_settings
|
|
|
|
from documents.checks import changed_password_check
|
|
from documents.checks import parser_check
|
|
from documents.models import Document
|
|
from documents.tests.factories import DocumentFactory
|
|
|
|
|
|
class TestDocumentChecks(TestCase):
|
|
def test_changed_password_check_empty_db(self):
|
|
self.assertListEqual(changed_password_check(None), [])
|
|
|
|
def test_changed_password_check_no_encryption(self):
|
|
DocumentFactory.create(storage_type=Document.STORAGE_TYPE_UNENCRYPTED)
|
|
self.assertListEqual(changed_password_check(None), [])
|
|
|
|
def test_encrypted_missing_passphrase(self):
|
|
DocumentFactory.create(storage_type=Document.STORAGE_TYPE_GPG)
|
|
msgs = changed_password_check(None)
|
|
self.assertEqual(len(msgs), 1)
|
|
msg_text = msgs[0].msg
|
|
self.assertEqual(
|
|
msg_text,
|
|
"The database contains encrypted documents but no password is set.",
|
|
)
|
|
|
|
@override_settings(
|
|
PASSPHRASE="test",
|
|
)
|
|
@mock.patch("paperless.db.GnuPG.decrypted")
|
|
@mock.patch("documents.models.Document.source_file")
|
|
def test_encrypted_decrypt_fails(self, mock_decrypted, mock_source_file):
|
|
mock_decrypted.return_value = None
|
|
mock_source_file.return_value = b""
|
|
|
|
DocumentFactory.create(storage_type=Document.STORAGE_TYPE_GPG)
|
|
|
|
msgs = changed_password_check(None)
|
|
|
|
self.assertEqual(len(msgs), 1)
|
|
msg_text = msgs[0].msg
|
|
self.assertEqual(
|
|
msg_text,
|
|
textwrap.dedent(
|
|
"""
|
|
The current password doesn't match the password of the
|
|
existing documents.
|
|
|
|
If you intend to change your password, you must first export
|
|
all of the old documents, start fresh with the new password
|
|
and then re-import them."
|
|
""",
|
|
),
|
|
)
|
|
|
|
def test_parser_check(self):
|
|
self.assertEqual(parser_check(None), [])
|
|
|
|
with mock.patch("documents.checks.document_consumer_declaration.send") as m:
|
|
m.return_value = []
|
|
|
|
self.assertEqual(
|
|
parser_check(None),
|
|
[
|
|
Error(
|
|
"No parsers found. This is a bug. The consumer won't be "
|
|
"able to consume any documents without parsers.",
|
|
),
|
|
],
|
|
)
|