Пример #1
0
    def test_tunnel_protocol_ignores_warnings(self):
        """
        When using ssh to setup the tunnel, we typically recieve a unknown host
        key warning message on stderr, the tunnel protocol will filter these
        messages.
        """
        log = self.capture_logging(level=logging.ERROR)
        protocol = ClientTunnelProtocol(None, None)

        protocol.errReceived("Warning: Permanently added")
        self.assertEqual(log.getvalue(), "")
Пример #2
0
    def test_tunnel_protocol_notes_connection_refused(self):
        client = self.mocker.mock()
        client.close()
        self.mocker.replay()

        tunnel_deferred = Deferred()
        protocol = ClientTunnelProtocol(client, tunnel_deferred)

        message = "blah blah blah Connection refused blah blah"
        protocol.errReceived(message)

        expected_message = "Connection refused"

        def verify_failure(error):
            self.assertEqual(error.args[0], expected_message)

        self.failUnlessFailure(tunnel_deferred, NoConnection)
        tunnel_deferred.addCallback(verify_failure)
        return tunnel_deferred
Пример #3
0
    def test_tunnel_protocol_notes_invalid_key(self):
        log = self.capture_logging(level=logging.ERROR)
        client = self.mocker.mock()
        client.close()
        self.mocker.replay()

        tunnel_deferred = Deferred()
        protocol = ClientTunnelProtocol(client, tunnel_deferred)

        message = "Permission denied"
        protocol.errReceived(message)

        expected_message = "Invalid SSH key"

        def verify_failure(error):
            self.assertEqual(error.args[0], expected_message)
            self.assertEqual(log.getvalue().strip(), expected_message)

        self.failUnlessFailure(tunnel_deferred, NoConnection)
        tunnel_deferred.addCallback(verify_failure)
        return tunnel_deferred
Пример #4
0
    def test_tunnel_protocol_notes_invalid_host(self):
        log = self.capture_logging(level=logging.ERROR)
        client = self.mocker.mock()
        client.close()
        self.mocker.replay()

        tunnel_deferred = Deferred()
        protocol = ClientTunnelProtocol(client, tunnel_deferred)

        message = "ssh: Could not resolve hostname magicbean"
        protocol.errReceived(message)

        expected_message = "Invalid host for SSH forwarding: %s" % message

        def verify_failure(error):
            self.assertEqual(error.args[0], expected_message)
            self.assertEqual(log.getvalue().strip(), expected_message)

        self.assertFailure(tunnel_deferred, NoConnection)
        tunnel_deferred.addCallback(verify_failure)
        return tunnel_deferred
Пример #5
0
    def test_tunnel_protocol_closes_on_error(self):
        """
        When using ssh to setup the tunnel, we typically recieve a unknown host
        key warning message on stderr, the tunnel protocol will filter these
        messages.
        """
        log = self.capture_logging(level=logging.ERROR)
        client = self.mocker.mock()
        tunnel_deferred = Deferred()
        protocol = ClientTunnelProtocol(client, tunnel_deferred)
        client.close()
        self.mocker.replay()

        protocol.errReceived("badness")

        def verify_failure(error):
            self.assertEqual(error.args[0], "SSH forwarding error: badness")
            self.assertEqual(log.getvalue().strip(),
                             "SSH forwarding error: badness")

        self.assertFailure(tunnel_deferred, NoConnection)
        tunnel_deferred.addCallback(verify_failure)
        return tunnel_deferred