Esempio n. 1
0
 def setUp(self):
     reactor = Mock()
     proto = Mock()
     directlyProvides(proto, ITorControlProtocol)
     self.cfg = TorConfig()
     self.cfg.HidServAuth = ["existing.onion some_token"]
     self.tor = Tor(reactor, proto, _tor_config=self.cfg)
Esempio n. 2
0
 def test_quit_no_protocol(self):
     tor = Tor(Mock(), Mock())
     tor._protocol = None
     tor._process_protocol = None
     with self.assertRaises(RuntimeError) as ctx:
         yield tor.quit()
     self.assertTrue('no protocol instance' in str(ctx.exception))
Esempio n. 3
0
 def setUp(self):
     reactor = Mock()
     proto = Mock()
     proto.get_conf = Mock(
         return_value=defer.succeed({"SocksPort": "9050"}))
     self.cfg = Mock()
     self.tor = Tor(reactor, proto, _tor_config=self.cfg)
Esempio n. 4
0
 def test_dns_resolve_ptr(self, fake_socks):
     answer = object()
     proto = Mock()
     proto.get_conf = Mock(
         return_value=defer.succeed({"SocksPort": "9050"}))
     tor = Tor(Mock(), proto)
     fake_socks.resolve_ptr = Mock(return_value=defer.succeed(answer))
     ans = yield tor.dns_resolve_ptr("4.3.2.1")
     self.assertEqual(ans, answer)
Esempio n. 5
0
 def test_dns_resolve(self, fake_socks):
     answer = object()
     cfg = Mock()
     proto = Mock()
     proto.get_conf = Mock(
         return_value=defer.succeed({"SocksPort": "9050"}))
     tor = Tor(Mock(), proto, _tor_config=cfg)
     fake_socks.resolve = Mock(return_value=defer.succeed(answer))
     ans = yield tor.dns_resolve("meejah.ca")
     self.assertEqual(ans, answer)
Esempio n. 6
0
    def test_web_agent_error(self):
        reactor = Mock()
        cfg = Mock()
        proto = Mock()
        directlyProvides(proto, ITorControlProtocol)

        tor = Tor(reactor, proto, _tor_config=cfg)
        with self.assertRaises(ValueError) as ctx:
            agent = tor.web_agent(pool=self.pool, socks_endpoint=object())
            yield agent.request('GET', b'meejah.ca')
        self.assertTrue("'socks_endpoint' should be" in str(ctx.exception))
Esempio n. 7
0
    def test_web_agent_deferred(self):
        socks_d = defer.succeed("9151")
        reactor = Mock()
        cfg = Mock()
        proto = Mock()
        directlyProvides(proto, ITorControlProtocol)

        tor = Tor(reactor, proto, _tor_config=cfg)
        agent = tor.web_agent(pool=self.pool, socks_endpoint=socks_d)

        resp = yield agent.request('GET', b'meejah.ca')
        self.assertEqual(self.expected_response, resp)
Esempio n. 8
0
    def test_web_agent_endpoint(self):
        socks = Mock()
        directlyProvides(socks, IStreamClientEndpoint)
        reactor = Mock()
        cfg = Mock()
        proto = Mock()
        directlyProvides(proto, ITorControlProtocol)

        tor = Tor(reactor, proto, _tor_config=cfg)
        agent = tor.web_agent(pool=self.pool, socks_endpoint=socks)

        resp = yield agent.request('GET', b'meejah.ca')
        self.assertEqual(self.expected_response, resp)
Esempio n. 9
0
    def test_dns_resolve_existing_socks(self, fake_socks):
        answer = object()
        proto = Mock()
        proto.get_conf = Mock(
            return_value=defer.succeed({"SocksPort": "9050"}))
        tor = Tor(Mock(), proto)
        fake_socks.resolve = Mock(return_value=defer.succeed(answer))
        ans0 = yield tor.dns_resolve("meejah.ca")

        # do it again to exercise the _default_socks_port() case when
        # we already got the default
        fake_socks.resolve = Mock(return_value=defer.succeed(answer))
        ans1 = yield tor.dns_resolve("meejah.ca")
        self.assertEqual(ans0, answer)
        self.assertEqual(ans1, answer)
Esempio n. 10
0
 def setUp(self):
     reactor = Mock()
     proto = Mock()
     directlyProvides(proto, ITorControlProtocol)
     self.cfg = TorConfig()
     self.cfg.HidServAuth = ["existing.onion some_token"]
     self.tor = Tor(reactor, proto, _tor_config=self.cfg)
Esempio n. 11
0
    def test_dns_resolve_no_configured_socks(self, fake_socks):
        answer = object()
        proto = Mock()
        proto.get_conf = Mock(
            return_value=defer.succeed({"SocksPort": "9050"}))
        cfg = Mock()
        tor = Tor(Mock(), proto, _tor_config=cfg)

        def boom(*args, **kw):
            raise RuntimeError("no socks")

        cfg.socks_endpoint = Mock(side_effect=boom)
        fake_socks.resolve = Mock(return_value=defer.succeed(answer))
        ans = yield tor.dns_resolve("meejah.ca")

        self.assertEqual(ans, answer)
Esempio n. 12
0
class DormantTests(unittest.TestCase):
    def setUp(self):
        reactor = Mock()
        self.proto = Mock()
        self.cfg = Mock()
        self.tor = Tor(reactor, self.proto, _tor_config=self.cfg)
        self.tor.dns_resolve = Mock()

    @defer.inlineCallbacks
    def test_ready(self):
        self.proto.get_info = Mock(
            return_value={
                "dormant": "0",
                "status/enough-dir-info": "1",
                "status/circuit-established": "1",
            })
        ready = yield self.tor.is_ready()
        self.assertTrue(ready, "should be ready")

    @defer.inlineCallbacks
    def test_become_ready_already(self):
        self.proto.get_info = Mock(
            return_value={
                "dormant": "0",
                "status/enough-dir-info": "1",
                "status/circuit-established": "1",
            })
        yield self.tor.become_ready()
        self.assertTrue(self.tor.dns_resolve.mock_calls == [])

    @defer.inlineCallbacks
    def test_become_ready_asleep(self):
        self.proto.get_info = Mock(
            return_value={
                "dormant": "1",
                "status/enough-dir-info": "1",
                "status/circuit-established": "1",
            })
        yield self.tor.become_ready()
        self.assertEqual(1, len(self.tor.dns_resolve.mock_calls))
Esempio n. 13
0
class TorAttributeTestsNoConfig(unittest.TestCase):
    def setUp(self):
        reactor = Mock()
        proto = Mock()
        directlyProvides(proto, ITorControlProtocol)
        self.tor = Tor(reactor, proto)

    @defer.inlineCallbacks
    def test_get_config(self):
        with patch('txtorcon.controller.TorConfig') as torcfg:
            gold = object()
            torcfg.from_protocol = Mock(return_value=defer.succeed(gold))
            cfg = yield self.tor.get_config()
            self.assertEqual(gold, cfg)
Esempio n. 14
0
class TorStreamTests(unittest.TestCase):
    def setUp(self):
        reactor = Mock()
        proto = Mock()
        proto.get_conf = Mock(
            return_value=defer.succeed({"SocksPort": "9050"}))
        self.cfg = Mock()
        self.tor = Tor(reactor, proto, _tor_config=self.cfg)

    def test_sanity(self):
        self.assertTrue(_is_non_public_numeric_address(u'10.0.0.0'))
        self.assertTrue(_is_non_public_numeric_address(u'::1'))

    def test_v6(self):
        import ipaddress
        ipaddress.ip_address(u'2603:3023:807:3d00:21e:52ff:fe71:a4ce')

    def test_stream_private_ip(self):
        with self.assertRaises(Exception) as ctx:
            self.tor.stream_via('10.0.0.1', '1234')
        self.assertTrue("isn't going to work over Tor", str(ctx.exception))

    def test_stream_v6(self):
        with self.assertRaises(Exception) as ctx:
            self.tor.stream_via(u'::1', '1234')
        self.assertTrue("isn't going to work over Tor", str(ctx.exception))

    def test_public_v6(self):
        # should not be an error
        self.tor.stream_via(u'2603:3023:807:3d00:21e:52ff:fe71:a4ce', '4321')

    def test_public_v4(self):
        # should not be an error
        self.tor.stream_via(u'8.8.8.8', '4321')

    def test_stream_host(self):
        self.tor.stream_via(b'meejah.ca', '1234')
Esempio n. 15
0
    def test_web_agent_defaults(self):
        reactor = Mock()
        # XXX is there a faster way to do this? better reactor fake?
        fake_host = Mock()
        fake_host.port = 1234
        fake_port = Mock()
        fake_port.getHost = Mock(return_value=fake_host)
        reactor.listenTCP = Mock(return_value=fake_port)
        cfg = Mock()
        cfg.create_socks_endpoint = Mock(return_value=defer.succeed("9050"))
        proto = Mock()
        proto.get_conf = Mock(return_value=defer.succeed({}))
        directlyProvides(proto, ITorControlProtocol)

        tor = Tor(reactor, proto, _tor_config=cfg)
        try:
            agent = tor.web_agent(pool=self.pool)
        except ImportError as e:
            if 'IAgentEndpointFactory' in str(e):
                print("Skipping; appears we don't have web support")
                return

        resp = yield agent.request('GET', b'meejah.ca')
        self.assertEqual(self.expected_response, resp)
Esempio n. 16
0
class ClientOnionServiceAuthenticationTests3(unittest.TestCase):
    def setUp(self):
        reactor = Mock()
        proto = Mock()
        directlyProvides(proto, ITorControlProtocol)
        self.cfg = TorConfig()
        self.cfg.HidServAuth = ["existing.onion some_token"]
        self.tor = Tor(reactor, proto, _tor_config=self.cfg)

    def test_context(self):
        return ensureDeferred(self._context_test())

    async def _context_test(self):
        async with self.tor.onion_authentication("some.onion", "token"):
            self.assertIn("some.onion token", self.cfg.HidServAuth)
        self.assertNotIn("some.onion token", self.cfg.HidServAuth)
        self.assertIn("existing.onion some_token", self.cfg.HidServAuth)
Esempio n. 17
0
class ClientOnionServiceAuthenticationTests3(unittest.TestCase):

    def setUp(self):
        reactor = Mock()
        proto = Mock()
        directlyProvides(proto, ITorControlProtocol)
        self.cfg = TorConfig()
        self.cfg.HidServAuth = ["existing.onion some_token"]
        self.tor = Tor(reactor, proto, _tor_config=self.cfg)

    def test_context(self):
        return ensureDeferred(self._context_test())

    async def _context_test(self):
        async with self.tor.onion_authentication("some.onion", "token"):
            self.assertIn("some.onion token", self.cfg.HidServAuth)
        self.assertNotIn("some.onion token", self.cfg.HidServAuth)
        self.assertIn("existing.onion some_token", self.cfg.HidServAuth)
Esempio n. 18
0
 def setUp(self):
     reactor = Mock()
     self.proto = Mock()
     self.cfg = Mock()
     self.tor = Tor(reactor, self.proto, _tor_config=self.cfg)
     self.tor.dns_resolve = Mock()
Esempio n. 19
0
 def setUp(self):
     reactor = Mock()
     proto = Mock()
     directlyProvides(proto, ITorControlProtocol)
     self.tor = Tor(reactor, proto)
Esempio n. 20
0
 def test_quit(self):
     tor = Tor(Mock(), Mock())
     tor._protocol = Mock()
     tor._process_protocol = Mock()
     yield tor.quit()
Esempio n. 21
0
 def test_create_state(self):
     tor = Tor(Mock(), Mock())
     with patch('txtorcon.controller.TorState') as ts:
         ts.post_boostrap = defer.succeed('boom')
         yield tor.create_state()
Esempio n. 22
0
 def test_str(self):
     tor = Tor(Mock(), Mock())
     str(tor)
Esempio n. 23
0
 def bam(*args, **kw):
     self.config.bootstrap()
     return defer.succeed(Tor(Mock(), self.protocol, _tor_config=self.config))
Esempio n. 24
0
 def bam(*args, **kw):
     self.config.bootstrap()
     return defer.succeed(Tor(Mock(), self.config))