Files
entropy/libraries/tests/security.py

82 lines
2.3 KiB
Python

# -*- coding: utf-8 -*-
import sys
sys.path.insert(0, 'client')
sys.path.insert(0, '../../client')
sys.path.insert(0, '.')
sys.path.insert(0, '../')
import os
import unittest
import tempfile
import shutil
from entropy.security import Repository
import tests._misc as _misc
class SecurityTest(unittest.TestCase):
def setUp(self):
"""
NOTE: this requires gnupg as test-dependency.
"""
self._tmp_dir = tempfile.mkdtemp()
self._repository = Repository(keystore_dir = self._tmp_dir)
sys.stdout.write("%s called\n" % (self,))
sys.stdout.flush()
def tearDown(self):
"""
tearDown is run after each test
"""
del self._repository
shutil.rmtree(self._tmp_dir, True)
sys.stdout.write("%s ran\n" % (self,))
sys.stdout.flush()
def test_gpg_handling(self):
# available keys should be empty
self.assertEqual(self._repository.get_keys(), {})
# now fill
self._repository.create_keypair("foo.org", name_email = "foo@foo.org",
expiration_days = 10)
self.assertEqual(self._repository.is_keypair_available("foo.org"),
True)
# key created ?
self.assertNotEqual(self._repository.get_keys(), {})
self.assert_(self._repository.is_pubkey_available("foo.org"))
# sign file
rand_file = _misc.get_random_file()
asc_file = rand_file + ".asc"
self._repository.sign_file("foo.org", rand_file)
self.assertEqual(
self._repository.verify_file("foo.org", rand_file, asc_file)[0],
True)
# try to verify against wrong file
wrong_rand_file = _misc.get_random_file_md5()
self.assertEqual(
self._repository.verify_file("foo.org", wrong_rand_file, asc_file)[0],
False)
# now craft signature
with open(asc_file, "w") as asc_f:
asc_f.write("0")
asc_f.flush()
self.assertEqual(
self._repository.verify_file("foo.org", rand_file, asc_file)[0],
False)
os.remove(asc_file)
if __name__ == '__main__':
if "--debug" in sys.argv:
sys.argv.remove("--debug")
from entropy.const import etpUi
etpUi['debug'] = True
unittest.main()