diff --git a/test/test_torconfig.py b/test/test_torconfig.py index 0debdf44..9d77df2d 100644 --- a/test/test_torconfig.py +++ b/test/test_torconfig.py @@ -1562,3 +1562,46 @@ def test_parse_error(self): RuntimeError, parse_client_keys, data ) + + +class EphemeralHiddenServiceTest(unittest.TestCase): + def test_defaults(self): + eph = torconfig.EphemeralHiddenService(80) + self.assertEqual(eph.ports, [80]) + + def test_wrong_blob(self): + try: + eph = torconfig.EphemeralHiddenService(80, "foo") + self.fail("should get exception") + except RuntimeError as e: + pass + + def test_add(self): + eph = torconfig.EphemeralHiddenService("80 127.0.0.1:80") + proto = Mock() + proto.queue_command = Mock(return_value="PrivateKey=blam\nServiceID=ohai") + eph.add_to_tor(proto) + + self.assertEqual("blam", eph.private_key) + self.assertEqual("ohai.onion", eph.hostname) + + def test_remove(self): + eph = torconfig.EphemeralHiddenService("80 127.0.0.1:80") + eph.hostname = 'foo.onion' + proto = Mock() + proto.queue_command = Mock(return_value="OK") + + eph.remove_from_tor(proto) + + @defer.inlineCallbacks + def test_remove_error(self): + eph = torconfig.EphemeralHiddenService("80 127.0.0.1:80") + eph.hostname = 'foo.onion' + proto = Mock() + proto.queue_command = Mock(return_value="it's not ok") + + try: + yield eph.remove_from_tor(proto) + self.fail("should have gotten exception") + except RuntimeError as e: + pass