Exemplo n.º 1
0
    def test_onion_service(self, *_):
        # Setup
        queues = gen_queue_dict()

        def queue_delayer():
            """Place Onion Service data into queue after delay."""
            time.sleep(0.5)
            queues[ONION_KEY_QUEUE].put((bytes(ONION_SERVICE_PRIVATE_KEY_LENGTH), b'\x01'))
            queues[ONION_KEY_QUEUE].put((bytes(ONION_SERVICE_PRIVATE_KEY_LENGTH), b'\x01'))
            time.sleep(0.1)
            queues[ONION_CLOSE_QUEUE].put(EXIT)

        threading.Thread(target=queue_delayer).start()

        # Test
        with mock.patch("time.sleep", return_value=None):
            self.assertIsNone(onion_service(queues))

        port, address = queues[TOR_DATA_QUEUE].get()
        self.assertIsInstance(port, int)
        self.assertEqual(validate_onion_addr(address), '')
        self.assertEqual(queues[EXIT_QUEUE].get(), EXIT)

        # Teardown
        tear_queues(queues)
Exemplo n.º 2
0
    def test_missing_tor_controller_raises_critical_error(self, *_):
        # Setup
        queues           = gen_queue_dict()
        orig_tor_connect = Tor.connect
        Tor.connect      = MagicMock(return_value=None)

        controller = stem.control.Controller
        controller.create_ephemeral_hidden_service = MagicMock()

        queues[ONION_KEY_QUEUE].put((bytes(ONION_SERVICE_PRIVATE_KEY_LENGTH), b'\x01'))

        # Test
        with self.assertRaises(SystemExit):
            onion_service(queues)

        # Teardown
        tear_queues(queues)
        Tor.connect = orig_tor_connect
Exemplo n.º 3
0
    def test_exception_during_onion_service_setup_returns(self, *_):
        # Setup
        queues = gen_queue_dict()
        queues[ONION_KEY_QUEUE].put((bytes(ONION_SERVICE_PRIVATE_KEY_LENGTH), b'\x01'))

        # Test
        self.assertIsNone(onion_service(queues))

        # Teardown
        tear_queues(queues)
Exemplo n.º 4
0
    def test_returns_with_keyboard_interrupt(self, *_):
        # Setup
        queues = gen_queue_dict()
        queues[ONION_KEY_QUEUE].put((bytes(ONION_SERVICE_PRIVATE_KEY_LENGTH), b'\x01'))

        # Test
        self.assertIsNone(onion_service(queues))

        # Teardown
        tear_queues(queues)
Exemplo n.º 5
0
    def test_socket_closed_returns(self, *_):
        queues = gen_queue_dict()

        controller = stem.control.Controller
        controller.create_ephemeral_hidden_service = MagicMock()

        queues[ONION_KEY_QUEUE].put(
            (bytes(ONION_SERVICE_PRIVATE_KEY_LENGTH), b'\x01'))

        self.assertIsNone(onion_service(queues))