def test_ephemeral_ports_bad0(self): protocol = FakeControlProtocol([]) config = TorConfig(protocol) with self.assertRaises(ValueError) as ctx: yield EphemeralAuthenticatedOnionService.create( Mock(), config, ports="80 127.0.0.1:80", auth=AuthBasic(["xavier"]), ) self.assertIn( "'ports' must be a list of strings", str(ctx.exception), )
def test_create_progress_old_tor(self): hsdir = "/dev/null" ports = ["80 127.0.0.1:1234"] def progress(pct, tag, msg): pass # print(pct, tag, msg) self.config.tor_protocol.version = "0.2.0.0" FilesystemAuthenticatedOnionService.create( Mock(), self.config, hsdir, ports, auth=AuthBasic(['alice']), progress=progress, )
def test_get_client_expected_not_found(self): self.hs = FilesystemAuthenticatedOnionService( self.config, self.thedir, ["80 127.0.0.1:1234"], auth=AuthBasic(["foo", "bar", "baz"]), ) with open(join(self.thedir, "hostname"), "w") as f: f.write( "foo.onion fooauthtoken # client: foo\n" "bar.onion barauthtoken # client: bar\n" ) with self.assertRaises(RuntimeError) as ctx: self.hs.get_client("baz") self.assertIn( "Didn't find expected client", str(ctx.exception), )
def test_ephemeral_auth_basic_remove_fails(self): protocol = FakeControlProtocol([]) config = TorConfig(protocol) eph_d = EphemeralAuthenticatedOnionService.create( Mock(), config, ports=["80 127.0.0.1:80"], auth=AuthBasic([ "steve", ("carol", "c4r0ls33kr1t"), ]), ) cmd, d = protocol.commands[0] self.assertTrue( cmd.startswith( u"ADD_ONION NEW:BEST Port=80,127.0.0.1:80 Flags=BasicAuth " ) ) self.assertIn(u"ClientAuth=steve", cmd) self.assertIn(u"ClientAuth=carol:c4r0ls33kr1t", cmd) d.callback( "PrivateKey={}\nServiceID={}\nClientAuth=steve:aseekritofsomekind".format( _test_private_key_blob, _test_onion_id, ) ) cb = protocol.events['HS_DESC'] for x in range(6): cb('UPLOAD {} UNKNOWN hsdir_{}'.format(_test_onion_id, x)) for x in range(6): cb('UPLOADED {} UNKNOWN hsdir_{}'.format(_test_onion_id, x)) hs = yield eph_d self.assertEqual( set(["steve", "carol"]), set(hs.client_names()), ) steve = hs.get_client("steve") self.assertEqual( "aseekritofsomekind", steve.auth_token, ) self.assertEqual( "{}.onion".format(_test_onion_id), steve.hostname, ) self.assertEqual( set(["80 127.0.0.1:80"]), steve.ports, ) self.assertTrue(steve.parent is hs) self.assertEqual("steve", steve.name) self.assertEqual(2, steve.version) carol = hs.get_client("carol") self.assertEqual( "c4r0ls33kr1t", carol.auth_token, ) self.assertEqual( "{}.onion".format(_test_onion_id), carol.hostname, ) remove_d = hs.remove() cmd, d = protocol.commands[-1] self.assertEqual(u"DEL_ONION {}".format(_test_onion_id), cmd) d.callback('not okay') with self.assertRaises(RuntimeError): yield remove_d