diff options
| author | Braulio Valdivielso MartÃnez <brlvldvlsmrtnz@gmail.com> | 2016-03-04 19:35:46 +0100 |
|---|---|---|
| committer | Braulio Valdivielso MartÃnez <brlvldvlsmrtnz@gmail.com> | 2016-03-04 19:35:46 +0100 |
| commit | 44161ac373199716c4231aa5cb5011a08d2d6ed4 (patch) | |
| tree | 62207684a7d82b68bf99e7aeae46fe3d5550e780 /tests/test_testserver.py | |
| parent | 0d1a779030c1b26f9decda889b3e140d89bdeef9 (diff) | |
| download | python-requests-44161ac373199716c4231aa5cb5011a08d2d6ed4.tar.gz | |
Moved TestTestServer to its own file
Diffstat (limited to 'tests/test_testserver.py')
| -rw-r--r-- | tests/test_testserver.py | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/tests/test_testserver.py b/tests/test_testserver.py new file mode 100644 index 00000000..03aa590f --- /dev/null +++ b/tests/test_testserver.py @@ -0,0 +1,128 @@ +import threading +import socket +import time + +import pytest +import requests +from testserver.server import Server + +class TestTestServer: + def test_basic(self): + question = b"sucess?" + answer = b"yeah, success" + def handler(sock): + text = sock.recv(1000) + assert text == question + sock.send(answer) + + with Server(handler) as (host, port): + sock = socket.socket() + sock.connect((host, port)) + sock.send(question) + text = sock.recv(1000) + assert text == answer + sock.close() + + def test_server_closes(self): + with Server.basic_response_server() as (host, port): + sock = socket.socket() + sock.connect((host, port)) + + sock.close() + + with pytest.raises(socket.error): + new_sock = socket.socket() + new_sock.connect((host, port)) + + def test_text_response(self): + server = Server.text_response_server( + "HTTP/1.1 200 OK\r\n" + + "Content-Length: 6\r\n" + + "\r\nroflol" + ) + + with server as (host, port): + r = requests.get('http://{0}:{1}'.format(host, port)) + + assert r.status_code == 200 + assert r.text == 'roflol' + assert r.headers['Content-Length'] == '6' + + def test_basic_response(self): + with Server.basic_response_server() as (host, port): + r = requests.get('http://{0}:{1}'.format(host, port)) + assert r.status_code == 200 + assert r.text == '' + assert r.headers['Content-Length'] == '0' + + def test_basic_waiting_server(self): + block_server = threading.Event() + + with Server.basic_response_server(wait_to_close_event=block_server) as (host, port): + sock = socket.socket() + sock.connect((host, port)) + sock.send(b'send something') + time.sleep(2.5) + sock.send(b'still alive') + block_server.set() # release server block + + def test_multiple_requests(self): + requests_to_handle = 5 + + server = Server.basic_response_server(requests_to_handle=requests_to_handle) + + with server as (host, port): + server_url = 'http://{0}:{1}'.format(host, port) + for _ in range(requests_to_handle): + r = requests.get(server_url) + assert r.status_code == 200 + + # the (n+1)th request fails + with pytest.raises(requests.exceptions.ConnectionError): + r = requests.get(server_url) + + def test_request_recovery(self): + server = Server.basic_response_server(requests_to_handle=2) + first_request = "put your hands up in the air" + second_request = "put your hand down in the floor" + + with server as address: + sock1 = socket.socket() + sock2 = socket.socket() + + sock1.connect(address) + sock1.send(first_request.encode()) + sock1.close() + + sock2.connect(address) + sock2.send(second_request.encode()) + sock2.close() + + assert server.handler_results[0] == first_request + assert server.handler_results[1] == second_request + + def test_requests_after_timeout_are_not_received(self): + server = Server.basic_response_server(request_timeout=1) + + with server as address: + sock = socket.socket() + sock.connect(address) + time.sleep(1.5) + sock.send(b"hehehe, not received") + sock.close() + + assert server.handler_results[0] == "" + + + def test_request_recovery_with_bigger_timeout(self): + server = Server.basic_response_server(request_timeout=3) + data = "bananadine" + + with server as address: + sock = socket.socket() + sock.connect(address) + time.sleep(1.5) + sock.send(data.encode()) + sock.close() + + assert server.handler_results[0] == data |
