tests: exercise DelegatedWormhole

This commit is contained in:
Brian Warner 2017-04-18 22:50:09 -04:00
parent ef56336eab
commit d0fb7a834d

View File

@ -43,24 +43,76 @@ class Welcome(unittest.TestCase):
class Delegate: class Delegate:
def __init__(self): def __init__(self):
self.code = None self.code = None
self.key = None
self.verifier = None self.verifier = None
self.version = None
self.messages = [] self.messages = []
self.closed = None self.closed = None
def wormhole_got_code(self, code): def wormhole_code(self, code):
self.code = code self.code = code
def wormhole_got_verifier(self, verifier): def wormhole_key(self, key):
self.key = key
def wormhole_verified(self, verifier):
self.verifier = verifier self.verifier = verifier
def wormhole_receive(self, data): def wormhole_version(self, version):
self.version = version
def wormhole_received(self, data):
self.messages.append(data) self.messages.append(data)
def wormhole_closed(self, result): def wormhole_closed(self, result):
self.closed = result self.closed = result
class Delegated(ServerBase, unittest.TestCase): class Delegated(ServerBase, unittest.TestCase):
@inlineCallbacks
def test_delegated(self): def test_delegated(self):
dg = Delegate() dg = Delegate()
w = wormhole.create(APPID, self.relayurl, reactor, delegate=dg) w1 = wormhole.create(APPID, self.relayurl, reactor, delegate=dg)
w.close() #w1.debug_set_trace("W1")
with self.assertRaises(NoKeyError):
w1.derive_key("purpose", 12)
w1.set_code("1-abc")
self.assertEqual(dg.code, "1-abc")
w2 = wormhole.create(APPID, self.relayurl, reactor)
w2.set_code(dg.code)
yield poll_until(lambda: dg.key is not None)
yield poll_until(lambda: dg.verifier is not None)
yield poll_until(lambda: dg.version is not None)
w1.send(b"ping")
got = yield w2.when_received()
self.assertEqual(got, b"ping")
w2.send(b"pong")
yield poll_until(lambda: dg.messages)
self.assertEqual(dg.messages[0], b"pong")
key1 = w1.derive_key("purpose", 16)
self.assertEqual(len(key1), 16)
self.assertEqual(type(key1), type(b""))
with self.assertRaises(TypeError):
w1.derive_key(b"not unicode", 16)
with self.assertRaises(TypeError):
w1.derive_key(12345, 16)
w1.close()
yield w2.close()
@inlineCallbacks
def test_allocate_code(self):
dg = Delegate()
w1 = wormhole.create(APPID, self.relayurl, reactor, delegate=dg)
w1.allocate_code()
yield poll_until(lambda: dg.code is not None)
w1.close()
@inlineCallbacks
def test_input_code(self):
dg = Delegate()
w1 = wormhole.create(APPID, self.relayurl, reactor, delegate=dg)
h = w1.input_code()
h.choose_nameplate("123")
h.choose_words("purple-elephant")
yield poll_until(lambda: dg.code is not None)
w1.close()
class Wormholes(ServerBase, unittest.TestCase): class Wormholes(ServerBase, unittest.TestCase):
# integration test, with a real server # integration test, with a real server