|
5 | 5 | """Real call Tests""" |
6 | 6 |
|
7 | 7 | import socket |
| 8 | +import socketserver |
8 | 9 | import ssl |
| 10 | +import threading |
| 11 | +import time |
9 | 12 |
|
10 | 13 | import adafruit_connection_manager |
11 | 14 | import pytest |
| 15 | +from local_test_server import LocalTestServerHandler |
12 | 16 |
|
13 | 17 | import adafruit_requests |
14 | 18 |
|
15 | 19 |
|
16 | | -@pytest.mark.parametrize( |
17 | | - ("path", "status_code", "text_result", "json_keys"), |
18 | | - ( |
19 | | - ("get", 200, None, {"url": "https://httpbin.org/get"}), |
| 20 | +def test_gets(): |
| 21 | + path_index = 0 |
| 22 | + status_code_index = 1 |
| 23 | + text_result_index = 2 |
| 24 | + json_keys_index = 3 |
| 25 | + cases = [ |
| 26 | + ("get", 200, None, {"url": "http://localhost:5000/get"}), |
20 | 27 | ("status/200", 200, "", None), |
21 | 28 | ("status/204", 204, "", None), |
22 | | - ), |
23 | | -) |
24 | | -def test_gets(path, status_code, text_result, json_keys): |
25 | | - requests = adafruit_requests.Session(socket, ssl.create_default_context()) |
26 | | - with requests.get(f"https://httpbin.org/{path}") as response: |
27 | | - assert response.status_code == status_code |
28 | | - if text_result is not None: |
29 | | - assert response.text == text_result |
30 | | - if json_keys is not None: |
31 | | - for key, value in json_keys.items(): |
32 | | - assert response.json()[key] == value |
33 | | - |
34 | | - adafruit_connection_manager.connection_manager_close_all(release_references=True) |
| 29 | + ] |
| 30 | + |
| 31 | + with socketserver.TCPServer(("127.0.0.1", 5000), LocalTestServerHandler) as server: |
| 32 | + server_thread = threading.Thread(target=server.serve_forever) |
| 33 | + server_thread.daemon = True |
| 34 | + server_thread.start() |
| 35 | + |
| 36 | + time.sleep(2) # Give the server some time to start |
| 37 | + |
| 38 | + for case in cases: |
| 39 | + requests = adafruit_requests.Session(socket, ssl.create_default_context()) |
| 40 | + with requests.get(f"http://127.0.0.1:5000/{case[path_index]}") as response: |
| 41 | + assert response.status_code == case[status_code_index] |
| 42 | + if case[text_result_index] is not None: |
| 43 | + assert response.text == case[text_result_index] |
| 44 | + if case[json_keys_index] is not None: |
| 45 | + for key, value in case[json_keys_index].items(): |
| 46 | + assert response.json()[key] == value |
| 47 | + |
| 48 | + adafruit_connection_manager.connection_manager_close_all(release_references=True) |
| 49 | + |
| 50 | + server.shutdown() |
| 51 | + server.server_close() |
| 52 | + time.sleep(2) |
0 commit comments