Fix and improve the document_signatures test
This commit is contained in:
83
contrib/sample_documents/key0x5F3F7F75D210724D.asc
Normal file
83
contrib/sample_documents/key0x5F3F7F75D210724D.asc
Normal file
@@ -0,0 +1,83 @@
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
Version: PGP Universal 2.9.1 (Build 347)
|
||||
|
||||
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
|
||||
1zzs
|
||||
=izbf
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
@@ -8,9 +8,16 @@ from django.utils import unittest
|
||||
|
||||
from documents.literals import VERSION_UPDATE_MAJOR, RELEASE_LEVEL_FINAL
|
||||
from documents.models import Document, DocumentType
|
||||
from django_gpg.api 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(unittest.TestCase):
|
||||
def setUp(self):
|
||||
@@ -23,25 +30,28 @@ class DocumentTestCase(unittest.TestCase):
|
||||
)
|
||||
self.document.save()
|
||||
|
||||
file_object = open(os.path.join(settings.SITE_ROOT, 'contrib', 'sample_documents', 'mayan_11_1.pdf'))
|
||||
new_version = self.document.new_version(file=File(file_object, name='mayan_11_1.pdf'))
|
||||
file_object.close()
|
||||
with open(TEST_DOCUMENT_PATH) as file_object:
|
||||
new_version = self.document.new_version(file=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), False)
|
||||
|
||||
def test_new_document_version_signed(self):
|
||||
file_object = open(os.path.join(settings.SITE_ROOT, 'contrib', 'sample_documents', 'mayan_11_1.pdf.gpg'))
|
||||
new_version_data = {
|
||||
'comment': 'test comment 1',
|
||||
'version_update': VERSION_UPDATE_MAJOR,
|
||||
'release_level': RELEASE_LEVEL_FINAL,
|
||||
'serial': 0,
|
||||
}
|
||||
with open(TEST_SIGNED_DOCUMENT_PATH) as file_object:
|
||||
new_version_data = {
|
||||
'comment': 'test comment 1',
|
||||
'version_update': VERSION_UPDATE_MAJOR,
|
||||
'release_level': RELEASE_LEVEL_FINAL,
|
||||
'serial': 0,
|
||||
}
|
||||
|
||||
self.document.new_version(file=File(file_object, name='mayan_11_1.pdf.gpg'), **new_version_data)
|
||||
|
||||
self.failUnlessEqual(DocumentVersionSignature.objects.has_detached_signature(self.document), False)
|
||||
# self.failUnlessEqual(DocumentVersionSignature.objects.verify_signature(self.document).status, SIGNATURE_STATE_VALID)
|
||||
# TODO: verify_signature is failing, check
|
||||
self.failUnlessEqual(DocumentVersionSignature.objects.verify_signature(self.document).status, SIGNATURE_STATE_VALID)
|
||||
|
||||
def test_detached_signatures(self):
|
||||
new_version_data = {
|
||||
@@ -50,20 +60,17 @@ class DocumentTestCase(unittest.TestCase):
|
||||
'release_level': RELEASE_LEVEL_FINAL,
|
||||
'serial': 0,
|
||||
}
|
||||
file_object = open(os.path.join(settings.SITE_ROOT, 'contrib', 'sample_documents', 'mayan_11_1.pdf'))
|
||||
new_version = self.document.new_version(file=File(file_object), **new_version_data)
|
||||
file_object.close()
|
||||
with open(TEST_DOCUMENT_PATH) as file_object:
|
||||
self.document.new_version(file=File(file_object), **new_version_data)
|
||||
|
||||
# GPGVerificationError
|
||||
self.failUnlessEqual(DocumentVersionSignature.objects.verify_signature(self.document), None)
|
||||
|
||||
file_object = open(os.path.join(settings.SITE_ROOT, 'contrib', 'sample_documents', 'mayan_11_1.pdf.sig'), 'rb')
|
||||
DocumentVersionSignature.objects.add_detached_signature(self.document, File(file_object))
|
||||
file_object.close()
|
||||
with open(TEST_SIGNATURE_FILE_PATH, 'rb') as file_object:
|
||||
DocumentVersionSignature.objects.add_detached_signature(self.document, File(file_object))
|
||||
|
||||
self.failUnlessEqual(DocumentVersionSignature.objects.has_detached_signature(self.document), True)
|
||||
# self.failUnlessEqual(DocumentVersionSignature.objects.verify_signature(self.document).status, SIGNATURE_STATE_VALID)
|
||||
# TODO: verify_signature is failing, check
|
||||
self.failUnlessEqual(DocumentVersionSignature.objects.verify_signature(self.document).status, SIGNATURE_STATE_VALID)
|
||||
|
||||
def tearDown(self):
|
||||
self.document.delete()
|
||||
|
||||
Reference in New Issue
Block a user