|
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