summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorKali Kaneko (leap communications) <kali@leap.se>2016-11-11 19:59:32 +0100
committerKali Kaneko (leap communications) <kali@leap.se>2016-11-11 20:55:51 +0100
commit1dfad9725e39b0135a25a0739dc7fb4ee6bf92ee (patch)
tree7e8a45e6468220702c946bdc58e598e467ae7f76 /tests
parent48a2bd04fa5a4095f0a5d8556c8113afb672664d (diff)
[bug] get user parameter in the key commands
This has been previously encapsulated in a dict, and the commands were not modified accordingly. I'm adding some very basic test for the KeymanagerService public api contract. - Resolves: #8577
Diffstat (limited to 'tests')
-rw-r--r--tests/unit/core/test_services.py74
1 files changed, 74 insertions, 0 deletions
diff --git a/tests/unit/core/test_services.py b/tests/unit/core/test_services.py
new file mode 100644
index 00000000..bb00dce9
--- /dev/null
+++ b/tests/unit/core/test_services.py
@@ -0,0 +1,74 @@
+from twisted.internet import defer
+from twisted.trial import unittest
+
+from leap.bitmask.core.mail_services import KeymanagerService
+
+
+class KeymanagerServiceTestCase(unittest.TestCase):
+
+ @defer.inlineCallbacks
+ def test_keymanager_service_list_call(self):
+ kms = keymanagerServiceFactory()
+ yield kms.do_list_keys({'user': 'user'})
+ assert kms._keymanager.loopback == ['get_all_keys']
+
+ @defer.inlineCallbacks
+ def test_keymanager_service_export_call(self):
+ kms = keymanagerServiceFactory()
+ yield kms.do_export({'user': 'user'}, 'foo@bar')
+ assert kms._keymanager.loopback == ['get_key']
+
+ @defer.inlineCallbacks
+ def test_keymanager_service_insert_call(self):
+ kms = keymanagerServiceFactory()
+ yield kms.do_insert({'user': 'user'}, 'foo@bar', 'aaaa')
+ assert kms._keymanager.loopback == ['put_raw_key', 'get_key']
+
+ @defer.inlineCallbacks
+ def test_keymanager_service_delete_call(self):
+ kms = keymanagerServiceFactory()
+ yield kms.do_delete({'user': 'user'}, 'foo@bar')
+ assert kms._keymanager.loopback == ['get_key', 'delete_key']
+
+
+class _container(object):
+
+ class _keymanager(object):
+ """
+ This implements the basic public contract of the Keymanager object,
+ just to mock the calls made from the KemanagerService.
+ """
+ def __init__(self):
+ self.loopback = []
+
+ def get_all_keys(self, private=False):
+ self.loopback.append('get_all_keys')
+ return defer.succeed([])
+
+ def get_key(self, address, private=False, fetch_remote=False):
+ self.loopback.append('get_key')
+
+ class _key(dict):
+ fingerprint = 'deadbeef'
+ return defer.succeed(_key())
+
+ def put_raw_key(self, rawkey, address, validation=""):
+ self.loopback.append('put_raw_key')
+ return defer.succeed('')
+
+ def delete_key(self, key):
+ self.loopback.append('delete_key')
+ return defer.succeed('')
+
+ def __init__(self):
+ self._instances = {'user': self._keymanager()}
+
+ def get_instance(self, userid):
+ return self._instances.get(userid)
+
+
+def keymanagerServiceFactory():
+ kms = KeymanagerService()
+ kms._container = _container()
+ kms._keymanager = kms._container.get_instance('user')
+ return kms