From bc59613945c749bf07258323481335f7deb8c8a5 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Wed, 30 Mar 2016 02:32:08 -0400 Subject: [PATCH] Add key content sign tests. --- mayan/apps/django_gpg/models.py | 2 +- mayan/apps/django_gpg/tests/test_models.py | 51 ++++++++++++++++++++-- 2 files changed, 49 insertions(+), 4 deletions(-) diff --git a/mayan/apps/django_gpg/models.py b/mayan/apps/django_gpg/models.py index 9f4ab45239..68c3e7028b 100644 --- a/mayan/apps/django_gpg/models.py +++ b/mayan/apps/django_gpg/models.py @@ -128,7 +128,7 @@ class Key(models.Model): gnupghome=temporary_directory, gpgbinary=setting_gpg_path.value ) - import_results = gpg.import_keys(key_data=self.data) + import_results = gpg.import_keys(key_data=self.key_data) file_sign_results = gpg.sign_file( file=file_object, keyid=import_results.fingerprints[0], diff --git a/mayan/apps/django_gpg/tests/test_models.py b/mayan/apps/django_gpg/tests/test_models.py index e871ecf1b3..d95a4d78e4 100644 --- a/mayan/apps/django_gpg/tests/test_models.py +++ b/mayan/apps/django_gpg/tests/test_models.py @@ -1,16 +1,20 @@ from __future__ import unicode_literals +import StringIO import tempfile from django.test import TestCase -from ..exceptions import DecryptionError, KeyDoesNotExist, VerificationError +from ..exceptions import ( + DecryptionError, KeyDoesNotExist, NeedPassphrase, PassphraseError, + VerificationError +) from ..models import Key from .literals import ( TEST_DETACHED_SIGNATURE, TEST_FILE, TEST_KEY_DATA, TEST_KEY_FINGERPRINT, - TEST_SEARCH_FINGERPRINT, TEST_SEARCH_UID, TEST_SIGNED_FILE, - TEST_SIGNED_FILE_CONTENT + TEST_KEY_PASSPHRASE, TEST_SEARCH_FINGERPRINT, TEST_SEARCH_UID, + TEST_SIGNED_FILE, TEST_SIGNED_FILE_CONTENT ) @@ -118,3 +122,44 @@ class KeyTestCase(TestCase): self.assertTrue(result) self.assertEqual(result.fingerprint, TEST_KEY_FINGERPRINT) + + def test_detached_signing_no_passphrase(self): + key = Key.objects.create(key_data=TEST_KEY_DATA) + + with self.assertRaises(NeedPassphrase): + with open(TEST_FILE) as test_file: + detached_signature = key.sign_file( + file_object=test_file, detached=True, + ) + + def test_detached_signing_bad_passphrase(self): + key = Key.objects.create(key_data=TEST_KEY_DATA) + + with self.assertRaises(PassphraseError): + with open(TEST_FILE) as test_file: + detached_signature = key.sign_file( + file_object=test_file, detached=True, + passphrase='bad passphrase' + ) + + def test_detached_signing_with_passphrase(self): + key = Key.objects.create(key_data=TEST_KEY_DATA) + + with open(TEST_FILE) as test_file: + detached_signature = key.sign_file( + file_object=test_file, detached=True, + passphrase=TEST_KEY_PASSPHRASE + ) + + signature_file = StringIO.StringIO() + signature_file.write(detached_signature) + signature_file.seek(0) + + with open(TEST_FILE) as test_file: + result = Key.objects.verify_file( + file_object=test_file, signature_file=signature_file + ) + + signature_file.close() + self.assertTrue(result) + self.assertEqual(result.fingerprint, TEST_KEY_FINGERPRINT)