Ejemplo n.º 1
0
def connect_client(host, port, http, username, password):
    client = RpcClient(host, port)
    if http:
        client.enable_http()
        if username and password:
            client.enable_http_basic_auth(username, password)

    return client
Ejemplo n.º 2
0
def connect_client(host, port, http, username, password):
    client = RpcClient(host, port)
    if http:
        client.enable_http()
        if username and password:
            client.enable_http_basic_auth(username, password)

    return client
Ejemplo n.º 3
0
    def test_twisted_server_http(self):
        server = ServerRunner('../examples/serverhttp.py', 5500)
        server.run()

        client = RpcClient('localhost', 5500)
        client.enable_http()

        try:
            result = client.rpc_call('echo', 'Hello Server')

            self.assertEqual(result, 'Hello Server')
        finally:
            client.close_connection()
            server.stop()
Ejemplo n.º 4
0
    def test_twisted_server_http(self):
        server = ServerRunner('../examples/serverhttp.py', 5500)
        server.run()

        client = RpcClient('localhost', 5500)
        client.enable_http()

        try:
            result = client.rpc_call('echo', 'Hello Server')

            self.assertEqual(result, 'Hello Server')
        finally:
            client.close_connection()
            server.stop()
Ejemplo n.º 5
0
    def test_twisted_server_http_basic_auth_no_password(self):
        server = ServerRunner('../examples/serverhttp_basic_auth.py', 5500)
        server.run()

        client = RpcClient('localhost', 5500)
        client.enable_http()

        try:
            with self.assertRaises(HttpException) as cm:
                client.rpc_call('is_authenticated')

            self.assertEqual(cm.exception.message, "Expected status code '200' but got '401'")
            self.assertEqual(cm.exception.status, '401')
        finally:
            client.close_connection()
            server.stop()
Ejemplo n.º 6
0
    def test_client_http_invalid_answer(self):
        server = FakeServer('localhost', 5500)
        server.add_reply('{"error": null, "result": "Hello Server", "id": 1}')
        server.run()

        client = RpcClient('localhost', 5500)
        client.enable_http()

        try:
            with self.assertRaises(HttpException) as cm:
                client.rpc_call('echo', 'Hello Server')

            self.assertEqual(cm.exception.message, "Received invalid HTTP response: Couldn't find a HTTP header")
            server.stop()
        finally:
            client.close_connection()
Ejemplo n.º 7
0
    def test_twisted_server_http_basic_auth_no_password(self):
        server = ServerRunner('../examples/serverhttp_basic_auth.py', 5500)
        server.run()

        client = RpcClient('localhost', 5500)
        client.enable_http()

        try:
            with self.assertRaises(HttpException) as cm:
                client.rpc_call('is_authenticated')

            self.assertEqual(cm.exception.message,
                             "Expected status code '200' but got '401'")
            self.assertEqual(cm.exception.status, '401')
        finally:
            client.close_connection()
            server.stop()
Ejemplo n.º 8
0
    def test_twisted_server_http_basic_auth(self):
        server = ServerRunner('../examples/serverhttp_basic_auth.py', 5500)
        server.run()

        client = RpcClient('localhost', 5500)
        client.enable_http()
        client.enable_http_basic_auth('testuser', '123456')

        try:
            authenticated = client.rpc_call('is_authenticated')
            username = client.rpc_call('get_username')

            self.assertEqual(authenticated, True)
            self.assertEqual(username, 'testuser')
        finally:
            client.close_connection()
            server.stop()
Ejemplo n.º 9
0
    def test_twisted_server_http_basic_auth(self):
        server = ServerRunner('../examples/serverhttp_basic_auth.py', 5500)
        server.run()

        client = RpcClient('localhost', 5500)
        client.enable_http()
        client.enable_http_basic_auth('testuser', '123456')

        try:
            authenticated = client.rpc_call('is_authenticated')
            username = client.rpc_call('get_username')

            self.assertEqual(authenticated, True)
            self.assertEqual(username, 'testuser')
        finally:
            client.close_connection()
            server.stop()
Ejemplo n.º 10
0
    def test_client_http_invalid_answer(self):
        server = FakeServer('localhost', 5500)
        server.add_reply('{"error": null, "result": "Hello Server", "id": 1}')
        server.run()

        client = RpcClient('localhost', 5500)
        client.enable_http()

        try:
            with self.assertRaises(HttpException) as cm:
                client.rpc_call('echo', 'Hello Server')

            self.assertEqual(
                cm.exception.message,
                "Received invalid HTTP response: Couldn't find a HTTP header")
            server.stop()
        finally:
            client.close_connection()
Ejemplo n.º 11
0
    def test_twisted_server_tls_client_auth_username_http(self):
        server = ServerRunner('../examples/servertls_clientauth_http.py', 5500)
        server.run()

        client = RpcClient('localhost', 5500)
        client.enable_http()

        try:
            client.enable_tls('../examples/certs/rootCA.crt', False)
            client.enable_client_auth('../examples/certs/client.crt',
                                      '../examples/certs/client.key')

            authenticated = client.rpc_call('is_authenticated')
            username = client.rpc_call('get_username')

            self.assertEqual(authenticated, True)
            self.assertEqual(username, 'example-username')
        finally:
            client.close_connection()
            server.stop()
Ejemplo n.º 12
0
    def test_concurrency_error_handling_http(self):
        server = ServerRunner('../examples/concurrency-http.py', 5500)
        server.run()

        client = RpcClient('localhost', 5500)
        client.enable_http()

        try:
            with self.assertRaises(RpcError) as cm:
                client.rpc_call('deferred_error')
            self.assertEqual(cm.exception.json['name'], "JsonRpcError")
            self.assertEqual(cm.exception.json['message'], "You wanted an error, here you have it!")

            with self.assertRaises(RpcError) as cm:
                result = client.rpc_call('deferred_internal_error')
            self.assertEqual(cm.exception.json['name'], "InternalError")
            self.assertEqual(cm.exception.json['message'], "Internal error")
        finally:
            client.close_connection()
            server.stop()
Ejemplo n.º 13
0
    def test_twisted_server_tls_client_auth_username_http(self):
        server = ServerRunner('../examples/servertls_clientauth_http.py', 5500)
        server.run()

        client = RpcClient('localhost', 5500)
        client.enable_http()

        try:
            client.enable_tls('../examples/certs/rootCA.crt', False)
            client.enable_client_auth('../examples/certs/client.crt',
                    '../examples/certs/client.key')

            authenticated = client.rpc_call('is_authenticated')
            username = client.rpc_call('get_username')

            self.assertEqual(authenticated, True)
            self.assertEqual(username, 'example-username')
        finally:
            client.close_connection()
            server.stop()
Ejemplo n.º 14
0
    def test_concurrency_http(self):
        server = ServerRunner('../examples/concurrency-http.py', 5500)
        server.run()

        client1 = RpcClient('localhost', 5500)
        client1.enable_http()
        client2 = RpcClient('localhost', 5500)
        client2.enable_http()

        results = []

        def t1_func():
            result = client1.rpc_call('slow_operation')
            results.append(result)

        def t2_func():
            time.sleep(0.5)
            result = client2.rpc_call('fast_operation')
            results.append(result)

        try:
            t1 = threading.Thread(target=t1_func, args=())
            t1.start()

            t2 = threading.Thread(target=t2_func, args=())
            t2.start()

            t1.join()
            if t1.is_alive():
                raise RuntimeError("Failed to join on thread 1")
            t2.join()
            if t2.is_alive():
                raise RuntimeError("Failed to join on thread 2")

            # slow_operation (value 42) must finish last
            self.assertEqual(results[0], 41)
            self.assertEqual(results[1], 42)
        finally:
            client1.close_connection()
            client2.close_connection()
            server.stop()
Ejemplo n.º 15
0
    def test_concurrency_http(self):
        server = ServerRunner('../examples/concurrency-http.py', 5500)
        server.run()

        client1 = RpcClient('localhost', 5500)
        client1.enable_http()
        client2 = RpcClient('localhost', 5500)
        client2.enable_http()

        results = []

        def t1_func():
            result = client1.rpc_call('slow_operation')
            results.append(result)

        def t2_func():
            time.sleep(0.5)
            result = client2.rpc_call('fast_operation')
            results.append(result)

        try:
            t1 = threading.Thread(target = t1_func, args = ())
            t1.start()

            t2 = threading.Thread(target = t2_func, args = ())
            t2.start()

            t1.join()
            if t1.is_alive():
                raise RuntimeError("Failed to join on thread 1")
            t2.join()
            if t2.is_alive():
                raise RuntimeError("Failed to join on thread 2")

            # slow_operation (value 42) must finish last
            self.assertEqual(results[0], 41)
            self.assertEqual(results[1], 42)
        finally:
            client1.close_connection()
            client2.close_connection()
            server.stop()
Ejemplo n.º 16
0
    def test_concurrency_error_handling_http(self):
        server = ServerRunner('../examples/concurrency-http.py', 5500)
        server.run()

        client = RpcClient('localhost', 5500)
        client.enable_http()

        try:
            with self.assertRaises(RpcError) as cm:
                client.rpc_call('deferred_error')
            self.assertEqual(cm.exception.json['name'], "JsonRpcError")
            self.assertEqual(cm.exception.json['message'],
                             "You wanted an error, here you have it!")

            with self.assertRaises(RpcError) as cm:
                result = client.rpc_call('deferred_internal_error')
            self.assertEqual(cm.exception.json['name'], "InternalError")
            self.assertEqual(cm.exception.json['message'], "Internal error")
        finally:
            client.close_connection()
            server.stop()