summaryrefslogtreecommitdiff
path: root/tests/testutil.py
diff options
context:
space:
mode:
authorMichał Górny <mgorny@gentoo.org>2018-07-25 22:53:09 +0200
committerMichał Górny <mgorny@gentoo.org>2018-07-25 22:53:09 +0200
commit4b1140e298d34d311278b83c919188cdd74ea0fb (patch)
tree111b99e49f0657a109014bcbea2ccbb5bc0d49c3 /tests/testutil.py
parent2356749bae4c523fbe0ed3a0fcd593b16e138594 (diff)
downloadgemato-4b1140e298d34d311278b83c919188cdd74ea0fb.tar.gz
tests: Add half-mocked tests for WKD-based refresh
Diffstat (limited to 'tests/testutil.py')
-rw-r--r--tests/testutil.py31
1 files changed, 31 insertions, 0 deletions
diff --git a/tests/testutil.py b/tests/testutil.py
index cfc9879..3f7ac5f 100644
--- a/tests/testutil.py
+++ b/tests/testutil.py
@@ -23,6 +23,8 @@ else:
from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler
from urlparse import urlparse, parse_qs
+import gemato.openpgp
+
class LoggingTestCase(unittest.TestCase):
def setUp(self):
@@ -123,3 +125,32 @@ class HKPServerTestCase(unittest.TestCase):
self.server.shutdown()
self.server.server_close()
self.server_thread.join()
+
+
+class MockedWKDOpenPGPEnvironment(gemato.openpgp.OpenPGPEnvironment):
+ """
+ A subclass of OpenPGPEnvironment that partially mocks spawning
+ OpenPGP in order to inject keys without having to implement
+ full HTTPS server with domain satisfactory to GnuPG.
+ """
+
+ def __init__(self, keys={}):
+ self.keys = keys
+ super(MockedWKDOpenPGPEnvironment, self).__init__()
+
+ def clone(self):
+ return MockedWKDOpenPGPEnvironment(self.keys)
+
+ def _spawn_gpg(self, args, stdin):
+ if '--locate-keys' in args:
+ args.remove('--locate-keys')
+ assert len(args) == 1
+ if args[0] in self.keys:
+ ret, sout, serr = super(MockedWKDOpenPGPEnvironment,
+ self)._spawn_gpg(['--import'], self.keys[args[0]])
+ else:
+ ret = 2
+ return (ret, '', '')
+
+ return super(MockedWKDOpenPGPEnvironment, self)._spawn_gpg(
+ args, stdin)