97 lines
3.1 KiB
Python
97 lines
3.1 KiB
Python
from __future__ import unicode_literals
|
|
|
|
import os
|
|
|
|
from django.conf import settings
|
|
from django.core.files.base import File
|
|
from django.test import TestCase, override_settings
|
|
|
|
from documents.models import DocumentType
|
|
from documents.tests import TEST_DOCUMENT_PATH, TEST_DOCUMENT_TYPE
|
|
from django_gpg.literals import SIGNATURE_STATE_VALID
|
|
from django_gpg.runtime import gpg
|
|
|
|
from ..models import DocumentVersionSignature
|
|
|
|
TEST_SIGNED_DOCUMENT_PATH = os.path.join(
|
|
settings.BASE_DIR, 'contrib', 'sample_documents', 'mayan_11_1.pdf.gpg'
|
|
)
|
|
TEST_SIGNATURE_FILE_PATH = os.path.join(
|
|
settings.BASE_DIR, 'contrib', 'sample_documents', 'mayan_11_1.pdf.sig'
|
|
)
|
|
TEST_KEY_FILE = os.path.join(
|
|
settings.BASE_DIR, 'contrib', 'sample_documents',
|
|
'key0x5F3F7F75D210724D.asc'
|
|
)
|
|
|
|
|
|
@override_settings(OCR_AUTO_OCR=False)
|
|
class DocumentTestCase(TestCase):
|
|
def setUp(self):
|
|
self.document_type = DocumentType.objects.create(
|
|
label=TEST_DOCUMENT_TYPE
|
|
)
|
|
|
|
with open(TEST_DOCUMENT_PATH) as file_object:
|
|
self.document = self.document_type.new_document(
|
|
file_object=File(file_object), label='mayan_11_1.pdf'
|
|
)
|
|
|
|
with open(TEST_KEY_FILE) as file_object:
|
|
gpg.import_key(file_object.read())
|
|
|
|
def tearDown(self):
|
|
self.document.delete()
|
|
self.document_type.delete()
|
|
|
|
def test_document_no_signature(self):
|
|
self.assertEqual(
|
|
DocumentVersionSignature.objects.has_detached_signature(
|
|
self.document.latest_version
|
|
), False
|
|
)
|
|
|
|
def test_new_document_version_signed(self):
|
|
with open(TEST_SIGNED_DOCUMENT_PATH) as file_object:
|
|
self.document.new_version(
|
|
file_object=File(file_object), comment='test comment 1'
|
|
)
|
|
|
|
self.assertEqual(
|
|
DocumentVersionSignature.objects.has_detached_signature(
|
|
self.document.latest_version
|
|
), False
|
|
)
|
|
self.assertEqual(
|
|
DocumentVersionSignature.objects.verify_signature(
|
|
self.document.latest_version
|
|
).status, SIGNATURE_STATE_VALID
|
|
)
|
|
|
|
def test_detached_signatures(self):
|
|
with open(TEST_DOCUMENT_PATH) as file_object:
|
|
self.document.new_version(
|
|
file_object=File(file_object), comment='test comment 2'
|
|
)
|
|
|
|
# GPGVerificationError
|
|
self.assertEqual(DocumentVersionSignature.objects.verify_signature(
|
|
self.document.latest_version), None
|
|
)
|
|
|
|
with open(TEST_SIGNATURE_FILE_PATH, 'rb') as file_object:
|
|
DocumentVersionSignature.objects.add_detached_signature(
|
|
self.document.latest_version, File(file_object)
|
|
)
|
|
|
|
self.assertEqual(
|
|
DocumentVersionSignature.objects.has_detached_signature(
|
|
self.document.latest_version
|
|
), True
|
|
)
|
|
self.assertEqual(
|
|
DocumentVersionSignature.objects.verify_signature(
|
|
self.document.latest_version
|
|
).status, SIGNATURE_STATE_VALID
|
|
)
|