aboutsummaryrefslogtreecommitdiff
path: root/src/mailman_pgp/pgp/tests/test_keygen.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/mailman_pgp/pgp/tests/test_keygen.py')
-rw-r--r--src/mailman_pgp/pgp/tests/test_keygen.py85
1 files changed, 48 insertions, 37 deletions
diff --git a/src/mailman_pgp/pgp/tests/test_keygen.py b/src/mailman_pgp/pgp/tests/test_keygen.py
index a3a5499..7de1a19 100644
--- a/src/mailman_pgp/pgp/tests/test_keygen.py
+++ b/src/mailman_pgp/pgp/tests/test_keygen.py
@@ -16,25 +16,29 @@
# this program. If not, see <http://www.gnu.org/licenses/>.
"""Test the out-of-process key generator."""
-from os.path import exists, isfile, join
-from tempfile import TemporaryDirectory
+from os.path import exists, isfile
from unittest import TestCase
+from mailman.app.lifecycle import create_list
from parameterized import parameterized
-from pgpy import PGPKey
from pgpy.constants import EllipticCurveOID, PubKeyAlgorithm
+from mailman_pgp.config import config
+from mailman_pgp.database import mm_transaction
+from mailman_pgp.model.list import PGPMailingList
from mailman_pgp.pgp.keygen import ListKeyGenerator
-from mailman_pgp.testing.layers import PGPLayer
+from mailman_pgp.testing.layers import PGPConfigLayer
+from mailman_pgp.utils.pgp import key_from_file
class TestKeygen(TestCase):
- layer = PGPLayer
+ layer = PGPConfigLayer
def setUp(self):
- self.display_name = 'Display Name'
- self.posting_address = 'posting@address.com'
- self.request_address = 'posting-request@address.com'
+ with mm_transaction():
+ self.mlist = create_list('test@example.com',
+ style_name='pgp-default')
+ self.pgp_list = PGPMailingList.for_list(self.mlist)
@parameterized.expand([
# RSA + RSA
@@ -49,36 +53,43 @@ class TestKeygen(TestCase):
])
def test_generate(self, primary_key_type, primary_key_size, sub_key_type,
sub_key_size):
- with TemporaryDirectory() as temp_dir:
- key_path = join(temp_dir, 'key.asc')
- keygen = ListKeyGenerator((primary_key_type, primary_key_size),
- (sub_key_type, sub_key_size),
- self.display_name,
- self.posting_address,
- self.request_address, key_path)
- keygen.start()
- keygen.join()
- self.assertTrue(exists(key_path))
- self.assertTrue(isfile(key_path))
+ def reset_primary(primary_key_args):
+ config.pgp.primary_key_args = primary_key_args
- key, _ = PGPKey.from_file(key_path)
- self.assertEqual(key.key_algorithm,
- primary_key_type)
- self.assertEqual(key.key_size,
- primary_key_size)
+ self.addCleanup(reset_primary, config.pgp.primary_key_args)
- subs = key.subkeys
- self.assertEqual(len(subs), 1)
+ def reset_sub(sub_key_args):
+ config.pgp.sub_key_args = sub_key_args
- keyid, sub = subs.popitem()
- self.assertEqual(sub.key_algorithm,
- sub_key_type)
- self.assertEqual(sub.key_size,
- sub_key_size)
+ self.addCleanup(reset_sub, config.pgp.sub_key_args)
- uids = key.userids
- self.assertEqual(len(uids), 2)
- for uid in uids:
- self.assertEqual(uid.name, self.display_name)
- self.assertIn(uid.email,
- (self.posting_address, self.request_address))
+ config.pgp.primary_key_args = (primary_key_type, primary_key_size)
+ config.pgp.sub_key_args = (sub_key_type, sub_key_size)
+
+ key_path = self.pgp_list.key_path
+ keygen = ListKeyGenerator(self.pgp_list)
+ ret_key = keygen.generate(True)
+ list_key = self.pgp_list.key
+ self.assertTrue(exists(key_path))
+ self.assertTrue(isfile(key_path))
+
+ key = key_from_file(key_path)
+ self.assertEqual(key.key_algorithm, primary_key_type)
+ self.assertEqual(key.key_size, primary_key_size)
+ self.assertEqual(ret_key.fingerprint, key.fingerprint)
+ self.assertEqual(list_key.fingerprint, key.fingerprint)
+
+ subs = key.subkeys
+ self.assertEqual(len(subs), 1)
+
+ keyid, sub = subs.popitem()
+ self.assertEqual(sub.key_algorithm, sub_key_type)
+ self.assertEqual(sub.key_size, sub_key_size)
+
+ uids = key.userids
+ self.assertEqual(len(uids), 2)
+ for uid in uids:
+ self.assertEqual(uid.name, self.pgp_list.mlist.display_name)
+ self.assertIn(uid.email,
+ (self.pgp_list.mlist.posting_address,
+ self.pgp_list.mlist.request_address))