Files
mayan-edms/mayan/apps/document_signatures/tests.py

71 lines
3.0 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
from documents.models import Document, DocumentType
from django_gpg.literals import SIGNATURE_STATE_VALID
from django_gpg.runtime import gpg
from .models import DocumentVersionSignature
TEST_DOCUMENT_PATH = os.path.join(settings.BASE_DIR, 'contrib', 'sample_documents', 'mayan_11_1.pdf')
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')
class DocumentTestCase(TestCase):
def setUp(self):
self.document_type = DocumentType(name='test doc type')
self.document_type.save()
self.document = Document(
document_type=self.document_type,
description='description',
)
self.document.save()
with open(TEST_DOCUMENT_PATH) as file_object:
self.document.new_version(file_object=File(file_object, name='mayan_11_1.pdf'))
with open(TEST_KEY_FILE) as file_object:
gpg.import_key(file_object.read())
def test_document_no_signature(self):
self.failUnlessEqual(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:
new_version_data = {
'comment': 'test comment 1',
}
self.document.new_version(file_object=File(file_object, name='mayan_11_1.pdf.gpg'), **new_version_data)
self.failUnlessEqual(DocumentVersionSignature.objects.has_detached_signature(self.document.latest_version), False)
self.failUnlessEqual(DocumentVersionSignature.objects.verify_signature(self.document.latest_version).status, SIGNATURE_STATE_VALID)
def test_detached_signatures(self):
new_version_data = {
'comment': 'test comment 2',
}
with open(TEST_DOCUMENT_PATH) as file_object:
self.document.new_version(file_object=File(file_object), **new_version_data)
# GPGVerificationError
self.failUnlessEqual(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.failUnlessEqual(DocumentVersionSignature.objects.has_detached_signature(self.document.latest_version), True)
self.failUnlessEqual(DocumentVersionSignature.objects.verify_signature(self.document.latest_version).status, SIGNATURE_STATE_VALID)
def tearDown(self):
self.document.delete()
self.document_type.delete()