summaryrefslogtreecommitdiffstats
path: root/ipatests/test_ipapython/test_secrets.py
diff options
context:
space:
mode:
Diffstat (limited to 'ipatests/test_ipapython/test_secrets.py')
-rw-r--r--ipatests/test_ipapython/test_secrets.py55
1 files changed, 55 insertions, 0 deletions
diff --git a/ipatests/test_ipapython/test_secrets.py b/ipatests/test_ipapython/test_secrets.py
new file mode 100644
index 000000000..d88659e6f
--- /dev/null
+++ b/ipatests/test_ipapython/test_secrets.py
@@ -0,0 +1,55 @@
+# Copyright (C) 2015 FreeIPA Project Contributors - see LICENSE file
+
+from __future__ import print_function
+from ipapython.secrets.store import iSecStore, NAME_DB_MAP, NSSCertDB
+import os
+import shutil
+import subprocess
+import unittest
+
+
+def _test_password_callback():
+ with open('test-ipa-sec-store/pwfile') as f:
+ password = f.read()
+ return password
+
+
+class TestiSecStore(unittest.TestCase):
+ @classmethod
+ def setUpClass(cls):
+ try:
+ shutil.rmtree('test-ipa-sec-store')
+ except Exception: # pylint: disable=broad-except
+ pass
+ testdir = 'test-ipa-sec-store'
+ pwfile = os.path.join(testdir, 'pwfile')
+ os.mkdir(testdir)
+ with open(pwfile, 'w') as f:
+ f.write('testpw')
+ cls.certdb = os.path.join(testdir, 'certdb')
+ os.mkdir(cls.certdb)
+ cls.cert2db = os.path.join(testdir, 'cert2db')
+ os.mkdir(cls.cert2db)
+ seedfile = os.path.join(testdir, 'seedfile')
+ with open(seedfile, 'w') as f:
+ seed = os.urandom(1024)
+ f.write(seed)
+ subprocess.call(['certutil', '-d', cls.certdb, '-N', '-f', pwfile])
+ subprocess.call(['certutil', '-d', cls.cert2db, '-N', '-f', pwfile])
+ subprocess.call(['certutil', '-d', cls.certdb, '-S', '-f', pwfile,
+ '-s', 'CN=testCA', '-n', 'testCACert', '-x',
+ '-t', 'CT,C,C', '-m', '1', '-z', seedfile])
+
+ def test_iSecStore(self):
+ iss = iSecStore({})
+
+ NAME_DB_MAP['test'] = {
+ 'type': 'NSSDB',
+ 'path': self.certdb,
+ 'handler': NSSCertDB,
+ 'pwcallback': _test_password_callback,
+ }
+ value = iss.get('keys/test/testCACert')
+
+ NAME_DB_MAP['test']['path'] = self.cert2db
+ iss.set('keys/test/testCACert', value)