diff options
author | Michał Górny <mgorny@gentoo.org> | 2018-07-25 22:53:09 +0200 |
---|---|---|
committer | Michał Górny <mgorny@gentoo.org> | 2018-07-25 22:53:09 +0200 |
commit | 4b1140e298d34d311278b83c919188cdd74ea0fb (patch) | |
tree | 111b99e49f0657a109014bcbea2ccbb5bc0d49c3 /tests/testutil.py | |
parent | 2356749bae4c523fbe0ed3a0fcd593b16e138594 (diff) | |
download | gemato-4b1140e298d34d311278b83c919188cdd74ea0fb.tar.gz |
tests: Add half-mocked tests for WKD-based refresh
Diffstat (limited to 'tests/testutil.py')
-rw-r--r-- | tests/testutil.py | 31 |
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) |