@@ -61,3 +61,67 @@ def test_server_cleared_for_each_test(httpserver: HTTPServer):
6161def test_server_with_statement ():
6262 with HTTPServer (port = 4001 ):
6363 pass
64+
65+
66+ def test_oneshot (httpserver : HTTPServer ):
67+ httpserver .expect_oneshot_request ("/foobar" ).respond_with_data ("OK foobar" )
68+ httpserver .expect_oneshot_request ("/foobaz" ).respond_with_data ("OK foobaz" )
69+
70+ assert len (httpserver .oneshot_handlers ) == 2
71+
72+ # first requests should pass
73+ response = requests .get (httpserver .url_for ("/foobaz" ))
74+ httpserver .check_assertions ()
75+ assert response .status_code == 200
76+ assert response .text == "OK foobaz"
77+
78+ response = requests .get (httpserver .url_for ("/foobar" ))
79+ httpserver .check_assertions ()
80+ assert response .status_code == 200
81+ assert response .text == "OK foobar"
82+
83+ assert len (httpserver .oneshot_handlers ) == 0
84+
85+ # second requests should fail due to 'oneshot' type
86+ assert requests .get (httpserver .url_for ("/foobar" )).status_code == 500
87+ assert requests .get (httpserver .url_for ("/foobaz" )).status_code == 500
88+
89+
90+ def test_ordered_ok (httpserver : HTTPServer ):
91+ httpserver .expect_oneshot_request ("/foobar" , ordered = True ).respond_with_data ("OK foobar" )
92+ httpserver .expect_oneshot_request ("/foobaz" , ordered = True ).respond_with_data ("OK foobaz" )
93+
94+ assert len (httpserver .ordered_handlers ) == 2
95+
96+ # first requests should pass
97+ response = requests .get (httpserver .url_for ("/foobar" ))
98+ httpserver .check_assertions ()
99+ assert response .status_code == 200
100+ assert response .text == "OK foobar"
101+
102+ response = requests .get (httpserver .url_for ("/foobaz" ))
103+ httpserver .check_assertions ()
104+ assert response .status_code == 200
105+ assert response .text == "OK foobaz"
106+
107+ assert len (httpserver .ordered_handlers ) == 0
108+
109+ # second requests should fail due to 'oneshot' type
110+ assert requests .get (httpserver .url_for ("/foobar" )).status_code == 500
111+ assert requests .get (httpserver .url_for ("/foobaz" )).status_code == 500
112+
113+
114+ def test_ordered_invalid_order (httpserver : HTTPServer ):
115+ httpserver .expect_oneshot_request ("/foobar" , ordered = True ).respond_with_data ("OK foobar" )
116+ httpserver .expect_oneshot_request ("/foobaz" , ordered = True ).respond_with_data ("OK foobaz" )
117+
118+ assert len (httpserver .ordered_handlers ) == 2
119+
120+ # these would not pass as the order is different
121+ response = requests .get (httpserver .url_for ("/foobaz" ))
122+ assert response .status_code == 500
123+
124+ response = requests .get (httpserver .url_for ("/foobar" ))
125+ assert response .status_code == 500
126+
127+ assert len (httpserver .ordered_handlers ) == 0
0 commit comments