Accept ascii keys on put_key
authorRuben Pollan <meskio@sindominio.net>
Thu, 9 Oct 2014 00:28:33 +0000 (19:28 -0500)
committerRuben Pollan <meskio@sindominio.net>
Thu, 9 Oct 2014 15:22:08 +0000 (10:22 -0500)
changes/feature-put_key_ascii [new file with mode: 0644]
src/leap/keymanager/__init__.py
src/leap/keymanager/tests/test_keymanager.py

diff --git a/changes/feature-put_key_ascii b/changes/feature-put_key_ascii
new file mode 100644 (file)
index 0000000..78f2907
--- /dev/null
@@ -0,0 +1 @@
+- KeyManager.put_key now accepts also ascii keys
index bd85c2d..da679ac 100644 (file)
@@ -515,11 +515,14 @@ class KeyManager(object):
         """
         Put C{key} in local storage.
 
-        :param key: The key to be stored.
-        :type key: OpenPGPKey
+        :param key: The key to be stored. It can be ascii key or an OpenPGPKey
+        :type key: str or OpenPGPKey
         """
         try:
-            self._wrapper_map[type(key)].put_key(key)
+            if isinstance(key, basestring):
+                self._wrapper_map[OpenPGPKey].put_ascii_key(key)
+            else:
+                self._wrapper_map[type(key)].put_key(key)
         except IndexError as e:
             leap_assert(False, "Unsupported key type. Error {0!r}".format(e))
 
index 7192bfb..39b729d 100644 (file)
@@ -466,6 +466,17 @@ class KeyManagerKeyManagementTestCase(KeyManagerWithSoledadTestCase):
         self.assertIsInstance(key, OpenPGPKey)
         self.assertEqual(ADDRESS, key.address)
 
+    def test_put_key_ascii(self):
+        """
+        Test that putting ascii key works
+        """
+        km = self._key_manager(url='http://nickserver.domain')
+
+        km.put_key(PUBLIC_KEY)
+        key = km.get_key(ADDRESS, OpenPGPKey)
+        self.assertIsInstance(key, OpenPGPKey)
+        self.assertEqual(ADDRESS, key.address)
+
 
 class KeyManagerCryptoTestCase(KeyManagerWithSoledadTestCase):