1212
1313import adafruit_connection_manager
1414import pytest
15- from local_test_server import LocalTestServerHandler
15+ from local_test_server import uses_local_server
1616
1717import adafruit_requests
1818
1919
20+ @uses_local_server
2021def test_gets ():
2122 path_index = 0
2223 status_code_index = 1
@@ -28,25 +29,35 @@ def test_gets():
2829 ("status/204" , 204 , "" , None ),
2930 ]
3031
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 )
32+ for case in cases :
33+ requests = adafruit_requests .Session (socket , ssl .create_default_context ())
34+ with requests .get (f"http://127.0.0.1:5000/{ case [path_index ]} " ) as response :
35+ assert response .status_code == case [status_code_index ]
36+ if case [text_result_index ] is not None :
37+ assert response .text == case [text_result_index ]
38+ if case [json_keys_index ] is not None :
39+ for key , value in case [json_keys_index ].items ():
40+ assert response .json ()[key ] == value
41+
42+ adafruit_connection_manager .connection_manager_close_all (release_references = True )
43+
44+
45+ @pytest .mark .parametrize (
46+ ("allow_redirects" , "status_code" ),
47+ (
48+ (True , 200 ),
49+ (False , 301 ),
50+ ),
51+ )
52+ def test_http_to_https_redirect (allow_redirects , status_code ):
53+ url = "http://www.adafruit.com/api/quotes.php"
54+ requests = adafruit_requests .Session (socket , ssl .create_default_context ())
55+ with requests .get (url , allow_redirects = allow_redirects ) as response :
56+ assert response .status_code == status_code
57+
58+
59+ def test_https_direct ():
60+ url = "https://www.adafruit.com/api/quotes.php"
61+ requests = adafruit_requests .Session (socket , ssl .create_default_context ())
62+ with requests .get (url ) as response :
63+ assert response .status_code == 200
0 commit comments