Backport test improvements
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
This commit is contained in:
@@ -1,112 +1,84 @@
|
||||
from __future__ import unicode_literals
|
||||
|
||||
import hashlib
|
||||
import logging
|
||||
import time
|
||||
|
||||
from django.test import override_settings
|
||||
|
||||
from mayan.apps.common.tests import BaseTestCase
|
||||
from mayan.apps.django_gpg.models import Key
|
||||
from mayan.apps.django_gpg.tests.literals import (
|
||||
TEST_KEY_DATA, TEST_KEY_PASSPHRASE
|
||||
)
|
||||
from mayan.apps.documents.models import DocumentType, DocumentVersion
|
||||
from mayan.apps.documents.tests import TEST_DOCUMENT_PATH, TEST_DOCUMENT_TYPE_LABEL
|
||||
from mayan.apps.documents.models import DocumentVersion
|
||||
from mayan.apps.documents.tests import (
|
||||
GenericDocumentTestCase, TEST_DOCUMENT_PATH
|
||||
)
|
||||
|
||||
from ..models import DetachedSignature, EmbeddedSignature
|
||||
from ..tasks import task_verify_missing_embedded_signature
|
||||
|
||||
from .literals import (
|
||||
TEST_SIGNED_DOCUMENT_PATH, TEST_KEY_FILE, TEST_KEY_ID, TEST_SIGNATURE_ID
|
||||
)
|
||||
from .literals import TEST_SIGNED_DOCUMENT_PATH, TEST_KEY_ID, TEST_SIGNATURE_ID
|
||||
from .mixins import SignaturesTestMixin
|
||||
|
||||
|
||||
@override_settings(OCR_AUTO_OCR=False)
|
||||
class DocumentSignaturesTestCase(SignaturesTestMixin, BaseTestCase):
|
||||
def setUp(self):
|
||||
super(DocumentSignaturesTestCase, self).setUp()
|
||||
self.document_type = DocumentType.objects.create(
|
||||
label=TEST_DOCUMENT_TYPE_LABEL
|
||||
)
|
||||
|
||||
def tearDown(self):
|
||||
self.document_type.delete()
|
||||
super(DocumentSignaturesTestCase, self).tearDown()
|
||||
class DocumentSignaturesTestCase(SignaturesTestMixin, GenericDocumentTestCase):
|
||||
auto_upload_document = False
|
||||
|
||||
def test_embedded_signature_no_key(self):
|
||||
with open(TEST_SIGNED_DOCUMENT_PATH, mode='rb') as file_object:
|
||||
signed_document = self.document_type.new_document(
|
||||
file_object=file_object
|
||||
)
|
||||
self.test_document_path = TEST_SIGNED_DOCUMENT_PATH
|
||||
self.upload_document()
|
||||
|
||||
self.assertEqual(EmbeddedSignature.objects.count(), 1)
|
||||
|
||||
signature = EmbeddedSignature.objects.first()
|
||||
|
||||
self.assertEqual(
|
||||
signature.document_version, signed_document.latest_version
|
||||
signature.document_version, self.test_document.latest_version
|
||||
)
|
||||
self.assertEqual(signature.key_id, TEST_KEY_ID)
|
||||
self.assertEqual(signature.signature_id, None)
|
||||
|
||||
def test_embedded_signature_post_key_verify(self):
|
||||
with open(TEST_SIGNED_DOCUMENT_PATH, mode='rb') as file_object:
|
||||
signed_document = self.document_type.new_document(
|
||||
file_object=file_object
|
||||
)
|
||||
self.test_document_path = TEST_SIGNED_DOCUMENT_PATH
|
||||
self.upload_document()
|
||||
|
||||
self.assertEqual(EmbeddedSignature.objects.count(), 1)
|
||||
|
||||
signature = EmbeddedSignature.objects.first()
|
||||
|
||||
self.assertEqual(
|
||||
signature.document_version, signed_document.latest_version
|
||||
signature.document_version, self.test_document.latest_version
|
||||
)
|
||||
self.assertEqual(signature.key_id, TEST_KEY_ID)
|
||||
self.assertEqual(signature.signature_id, None)
|
||||
|
||||
with open(TEST_KEY_FILE, mode='rb') as file_object:
|
||||
Key.objects.create(key_data=file_object.read())
|
||||
self._create_test_key()
|
||||
|
||||
signature = EmbeddedSignature.objects.first()
|
||||
|
||||
self.assertEqual(signature.signature_id, TEST_SIGNATURE_ID)
|
||||
|
||||
def test_embedded_signature_post_no_key_verify(self):
|
||||
with open(TEST_KEY_FILE, mode='rb') as file_object:
|
||||
key = Key.objects.create(key_data=file_object.read())
|
||||
|
||||
with open(TEST_SIGNED_DOCUMENT_PATH, mode='rb') as file_object:
|
||||
signed_document = self.document_type.new_document(
|
||||
file_object=file_object
|
||||
)
|
||||
self._create_test_key()
|
||||
self.test_document_path = TEST_SIGNED_DOCUMENT_PATH
|
||||
self.upload_document()
|
||||
|
||||
self.assertEqual(EmbeddedSignature.objects.count(), 1)
|
||||
|
||||
signature = EmbeddedSignature.objects.first()
|
||||
|
||||
self.assertEqual(
|
||||
signature.document_version, signed_document.latest_version
|
||||
signature.document_version, self.test_document.latest_version
|
||||
)
|
||||
self.assertEqual(signature.key_id, TEST_KEY_ID)
|
||||
self.assertEqual(signature.signature_id, TEST_SIGNATURE_ID)
|
||||
|
||||
key.delete()
|
||||
self.test_key.delete()
|
||||
|
||||
signature = EmbeddedSignature.objects.first()
|
||||
|
||||
self.assertEqual(signature.signature_id, None)
|
||||
|
||||
def test_embedded_signature_with_key(self):
|
||||
with open(TEST_KEY_FILE, mode='rb') as file_object:
|
||||
key = Key.objects.create(key_data=file_object.read())
|
||||
|
||||
with open(TEST_SIGNED_DOCUMENT_PATH, mode='rb') as file_object:
|
||||
self.signed_document = self.document_type.new_document(
|
||||
file_object=file_object
|
||||
)
|
||||
self._create_test_key()
|
||||
self.test_document_path = TEST_SIGNED_DOCUMENT_PATH
|
||||
self.upload_document()
|
||||
|
||||
self.assertEqual(EmbeddedSignature.objects.count(), 1)
|
||||
|
||||
@@ -114,116 +86,107 @@ class DocumentSignaturesTestCase(SignaturesTestMixin, BaseTestCase):
|
||||
|
||||
self.assertEqual(
|
||||
signature.document_version,
|
||||
self.signed_document.latest_version
|
||||
self.test_document.latest_version
|
||||
)
|
||||
self.assertEqual(signature.key_id, TEST_KEY_ID)
|
||||
self.assertEqual(signature.public_key_fingerprint, key.fingerprint)
|
||||
self.assertEqual(
|
||||
signature.public_key_fingerprint, self.test_key.fingerprint
|
||||
)
|
||||
self.assertEqual(signature.signature_id, TEST_SIGNATURE_ID)
|
||||
|
||||
def test_detached_signature_no_key(self):
|
||||
with open(TEST_DOCUMENT_PATH, mode='rb') as file_object:
|
||||
self.document = self.document_type.new_document(
|
||||
file_object=file_object
|
||||
)
|
||||
self.test_document_path = TEST_DOCUMENT_PATH
|
||||
self.upload_document()
|
||||
|
||||
self._create_detached_signature()
|
||||
self._create_test_detached_signature()
|
||||
|
||||
self.assertEqual(DetachedSignature.objects.count(), 1)
|
||||
|
||||
self.assertEqual(
|
||||
self.test_signature.document_version, self.document.latest_version
|
||||
self.test_signature.document_version, self.test_document.latest_version
|
||||
)
|
||||
self.assertEqual(self.test_signature.key_id, TEST_KEY_ID)
|
||||
self.assertEqual(self.test_signature.public_key_fingerprint, None)
|
||||
|
||||
def test_detached_signature_with_key(self):
|
||||
with open(TEST_KEY_FILE, mode='rb') as file_object:
|
||||
key = Key.objects.create(key_data=file_object.read())
|
||||
self._create_test_key()
|
||||
self.test_document_path = TEST_DOCUMENT_PATH
|
||||
self.upload_document()
|
||||
|
||||
with open(TEST_DOCUMENT_PATH, mode='rb') as file_object:
|
||||
self.document = self.document_type.new_document(
|
||||
file_object=file_object
|
||||
)
|
||||
|
||||
self._create_detached_signature()
|
||||
self._create_test_detached_signature()
|
||||
|
||||
self.assertEqual(DetachedSignature.objects.count(), 1)
|
||||
|
||||
self.assertEqual(
|
||||
self.test_signature.document_version, self.document.latest_version
|
||||
self.test_signature.document_version, self.test_document.latest_version
|
||||
)
|
||||
self.assertEqual(self.test_signature.key_id, TEST_KEY_ID)
|
||||
self.assertEqual(
|
||||
self.test_signature.public_key_fingerprint, key.fingerprint
|
||||
self.test_signature.public_key_fingerprint,
|
||||
self.test_key.fingerprint
|
||||
)
|
||||
|
||||
def test_detached_signature_post_key_verify(self):
|
||||
with open(TEST_DOCUMENT_PATH, mode='rb') as file_object:
|
||||
self.document = self.document_type.new_document(
|
||||
file_object=file_object
|
||||
)
|
||||
self.test_document_path = TEST_DOCUMENT_PATH
|
||||
self.upload_document()
|
||||
|
||||
self._create_detached_signature()
|
||||
self._create_test_detached_signature()
|
||||
|
||||
self.assertEqual(DetachedSignature.objects.count(), 1)
|
||||
|
||||
self.assertEqual(
|
||||
self.test_signature.document_version, self.document.latest_version
|
||||
self.test_signature.document_version,
|
||||
self.test_document.latest_version
|
||||
)
|
||||
self.assertEqual(self.test_signature.key_id, TEST_KEY_ID)
|
||||
self.assertEqual(self.test_signature.public_key_fingerprint, None)
|
||||
|
||||
with open(TEST_KEY_FILE, mode='rb') as file_object:
|
||||
key = Key.objects.create(key_data=file_object.read())
|
||||
self._create_test_key()
|
||||
|
||||
signature = DetachedSignature.objects.first()
|
||||
|
||||
self.assertEqual(signature.public_key_fingerprint, key.fingerprint)
|
||||
self.assertEqual(
|
||||
signature.public_key_fingerprint, self.test_key.fingerprint
|
||||
)
|
||||
|
||||
def test_detached_signature_post_no_key_verify(self):
|
||||
with open(TEST_KEY_FILE, mode='rb') as file_object:
|
||||
key = Key.objects.create(key_data=file_object.read())
|
||||
self._create_test_key()
|
||||
self.test_document_path = TEST_DOCUMENT_PATH
|
||||
self.upload_document()
|
||||
|
||||
with open(TEST_DOCUMENT_PATH, mode='rb') as file_object:
|
||||
self.document = self.document_type.new_document(
|
||||
file_object=file_object
|
||||
)
|
||||
|
||||
self._create_detached_signature()
|
||||
self._create_test_detached_signature()
|
||||
|
||||
self.assertEqual(DetachedSignature.objects.count(), 1)
|
||||
|
||||
self.assertEqual(
|
||||
self.test_signature.document_version, self.document.latest_version
|
||||
self.test_signature.document_version,
|
||||
self.test_document.latest_version
|
||||
)
|
||||
self.assertEqual(self.test_signature.key_id, TEST_KEY_ID)
|
||||
self.assertEqual(
|
||||
self.test_signature.public_key_fingerprint, key.fingerprint
|
||||
self.test_signature.public_key_fingerprint,
|
||||
self.test_key.fingerprint
|
||||
)
|
||||
|
||||
key.delete()
|
||||
self.test_key.delete()
|
||||
|
||||
signature = DetachedSignature.objects.first()
|
||||
|
||||
self.assertEqual(signature.public_key_fingerprint, None)
|
||||
|
||||
def test_document_no_signature(self):
|
||||
with open(TEST_DOCUMENT_PATH, mode='rb') as file_object:
|
||||
self.document_type.new_document(
|
||||
file_object=file_object
|
||||
)
|
||||
self.test_document_path = TEST_DOCUMENT_PATH
|
||||
self.upload_document()
|
||||
|
||||
self.assertEqual(EmbeddedSignature.objects.count(), 0)
|
||||
|
||||
def test_new_signed_version(self):
|
||||
with open(TEST_DOCUMENT_PATH, mode='rb') as file_object:
|
||||
document = self.document_type.new_document(
|
||||
file_object=file_object
|
||||
)
|
||||
self.test_document_path = TEST_DOCUMENT_PATH
|
||||
self.upload_document()
|
||||
|
||||
with open(TEST_SIGNED_DOCUMENT_PATH, mode='rb') as file_object:
|
||||
signed_version = document.new_version(
|
||||
file_object=file_object, comment='test comment 1'
|
||||
signed_version = self.test_document.new_version(
|
||||
file_object=file_object, comment=''
|
||||
)
|
||||
|
||||
# Artifical delay since MySQL doesn't store microsecond data in
|
||||
@@ -239,34 +202,20 @@ class DocumentSignaturesTestCase(SignaturesTestMixin, BaseTestCase):
|
||||
self.assertEqual(signature.key_id, TEST_KEY_ID)
|
||||
|
||||
|
||||
@override_settings(OCR_AUTO_OCR=False)
|
||||
class EmbeddedSignaturesTestCase(BaseTestCase):
|
||||
def setUp(self):
|
||||
super(EmbeddedSignaturesTestCase, self).setUp()
|
||||
|
||||
self.document_type = DocumentType.objects.create(
|
||||
label=TEST_DOCUMENT_TYPE_LABEL
|
||||
)
|
||||
|
||||
def tearDown(self):
|
||||
self.document_type.delete()
|
||||
super(EmbeddedSignaturesTestCase, self).tearDown()
|
||||
class EmbeddedSignaturesTestCase(GenericDocumentTestCase):
|
||||
auto_upload_document = False
|
||||
|
||||
def test_unsigned_document_version_method(self):
|
||||
TEST_UNSIGNED_DOCUMENT_COUNT = 2
|
||||
TEST_SIGNED_DOCUMENT_COUNT = 2
|
||||
|
||||
self.test_document_path = TEST_DOCUMENT_PATH
|
||||
for count in range(TEST_UNSIGNED_DOCUMENT_COUNT):
|
||||
with open(TEST_DOCUMENT_PATH, mode='rb') as file_object:
|
||||
self.document_type.new_document(
|
||||
file_object=file_object
|
||||
)
|
||||
self.upload_document()
|
||||
|
||||
self.test_document_path = TEST_SIGNED_DOCUMENT_PATH
|
||||
for count in range(TEST_SIGNED_DOCUMENT_COUNT):
|
||||
with open(TEST_SIGNED_DOCUMENT_PATH, mode='rb') as file_object:
|
||||
self.document_type.new_document(
|
||||
file_object=file_object
|
||||
)
|
||||
self.upload_document()
|
||||
|
||||
self.assertEqual(
|
||||
EmbeddedSignature.objects.unsigned_document_versions().count(),
|
||||
@@ -275,7 +224,7 @@ class EmbeddedSignaturesTestCase(BaseTestCase):
|
||||
|
||||
def test_task_verify_missing_embedded_signature(self):
|
||||
# Silence converter logging
|
||||
logging.getLogger('converter.backends').setLevel(logging.CRITICAL)
|
||||
self._silence_logger(name='mayan.apps.converter.backends')
|
||||
|
||||
old_hooks = DocumentVersion._post_save_hooks
|
||||
|
||||
@@ -284,17 +233,13 @@ class EmbeddedSignaturesTestCase(BaseTestCase):
|
||||
TEST_UNSIGNED_DOCUMENT_COUNT = 2
|
||||
TEST_SIGNED_DOCUMENT_COUNT = 2
|
||||
|
||||
self.test_document_path = TEST_DOCUMENT_PATH
|
||||
for count in range(TEST_UNSIGNED_DOCUMENT_COUNT):
|
||||
with open(TEST_DOCUMENT_PATH, mode='rb') as file_object:
|
||||
self.document_type.new_document(
|
||||
file_object=file_object
|
||||
)
|
||||
self.upload_document()
|
||||
|
||||
self.test_document_path = TEST_SIGNED_DOCUMENT_PATH
|
||||
for count in range(TEST_SIGNED_DOCUMENT_COUNT):
|
||||
with open(TEST_SIGNED_DOCUMENT_PATH, mode='rb') as file_object:
|
||||
self.document_type.new_document(
|
||||
file_object=file_object
|
||||
)
|
||||
self.upload_document()
|
||||
|
||||
self.assertEqual(
|
||||
EmbeddedSignature.objects.unsigned_document_versions().count(),
|
||||
@@ -311,21 +256,20 @@ class EmbeddedSignaturesTestCase(BaseTestCase):
|
||||
)
|
||||
|
||||
def test_signing(self):
|
||||
key = Key.objects.create(key_data=TEST_KEY_DATA)
|
||||
self.test_key = Key.objects.create(key_data=TEST_KEY_DATA)
|
||||
|
||||
with open(TEST_DOCUMENT_PATH, mode='rb') as file_object:
|
||||
document = self.document_type.new_document(
|
||||
file_object=file_object
|
||||
)
|
||||
self.test_document_path = TEST_DOCUMENT_PATH
|
||||
self.upload_document()
|
||||
|
||||
with document.latest_version.open() as file_object:
|
||||
with self.test_document.latest_version.open() as file_object:
|
||||
file_object.seek(0, 2)
|
||||
original_size = file_object.tell()
|
||||
file_object.seek(0)
|
||||
original_hash = hashlib.sha256(file_object.read()).hexdigest()
|
||||
|
||||
new_version = EmbeddedSignature.objects.sign_document_version(
|
||||
document_version=document.latest_version, key=key,
|
||||
document_version=self.test_document.latest_version,
|
||||
key=self.test_key,
|
||||
passphrase=TEST_KEY_PASSPHRASE
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user