forked from csernazs/pytest-httpserver
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_permanent.py
More file actions
122 lines (89 loc) · 4.52 KB
/
test_permanent.py
File metadata and controls
122 lines (89 loc) · 4.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
import pytest
import requests
from werkzeug import Response
from pytest_httpserver import HTTPServer
JSON_STRING = '{"foo": "bar"}'
def test_expected_request_json(httpserver: HTTPServer):
httpserver.expect_request("/foobar").respond_with_json({"foo": "bar"})
assert requests.get(httpserver.url_for("/foobar")).json() == {"foo": "bar"}
def test_expected_request_data(httpserver: HTTPServer):
httpserver.expect_request("/foobar").respond_with_data(JSON_STRING)
assert requests.get(httpserver.url_for("/foobar")).json() == {"foo": "bar"}
def test_expected_request_handler(httpserver: HTTPServer):
httpserver.expect_request("/foobar").respond_with_handler(lambda request: JSON_STRING) # type: ignore
assert requests.get(httpserver.url_for("/foobar")).json() == {"foo": "bar"}
def test_expected_request_response(httpserver: HTTPServer):
httpserver.expect_request("/foobar").respond_with_response(Response(JSON_STRING))
assert requests.get(httpserver.url_for("/foobar")).json() == {"foo": "bar"}
def test_expected_request_response_as_string(httpserver: HTTPServer):
httpserver.expect_request("/foobar").respond_with_response(JSON_STRING) # type: ignore
assert requests.get(httpserver.url_for("/foobar")).json() == {"foo": "bar"}
def test_request_post(httpserver: HTTPServer):
httpserver.expect_request("/foobar", data='{"request": "example"}', method="POST").respond_with_data(
"example_response"
)
response = requests.post(httpserver.url_for("/foobar"), json={"request": "example"})
httpserver.check_assertions()
assert response.text == "example_response"
assert response.status_code == 200
def test_request_post_case_insensitive_method(httpserver: HTTPServer):
httpserver.expect_request("/foobar", data='{"request": "example"}', method="post").respond_with_data(
"example_response"
)
response = requests.post(httpserver.url_for("/foobar"), json={"request": "example"})
httpserver.check_assertions()
assert response.text == "example_response"
assert response.status_code == 200
def test_request_any_method(httpserver: HTTPServer):
httpserver.expect_request("/foobar").respond_with_data("OK")
response = requests.post(httpserver.url_for("/foobar"))
assert response.text == "OK"
assert response.status_code == 200
response = requests.delete(httpserver.url_for("/foobar"))
assert response.text == "OK"
assert response.status_code == 200
response = requests.put(httpserver.url_for("/foobar"))
assert response.text == "OK"
assert response.status_code == 200
response = requests.patch(httpserver.url_for("/foobar"))
assert response.text == "OK"
assert response.status_code == 200
response = requests.get(httpserver.url_for("/foobar"))
assert response.text == "OK"
assert response.status_code == 200
def test_unexpected_request(httpserver: HTTPServer):
httpserver.expect_request("/foobar").respond_with_json({"foo": "bar"})
requests.get(httpserver.url_for("/nonexists"))
with pytest.raises(AssertionError):
httpserver.check_assertions()
def test_no_handler_status_code(httpserver: HTTPServer):
httpserver.no_handler_status_code = 404
assert requests.get(httpserver.url_for("/foobar")).status_code == 404
def test_server_cleared_for_each_test(httpserver: HTTPServer):
assert httpserver.log == []
assert httpserver.assertions == []
assert httpserver.ordered_handlers == []
assert httpserver.oneshot_handlers == []
assert httpserver.handlers == []
def test_response_handler_replaced(httpserver: HTTPServer):
# https://github.com/csernazs/pytest-httpserver/issues/229
handler = httpserver.expect_request("/foobar")
handler.respond_with_data("FOO")
response = requests.get(httpserver.url_for("/foobar"))
assert response.text == "FOO"
assert response.status_code == 200
handler.respond_with_json({"foo": "bar"})
response = requests.get(httpserver.url_for("/foobar"))
assert response.json() == {"foo": "bar"}
assert response.status_code == 200
def test_request_handler_repr(httpserver: HTTPServer):
handler = httpserver.expect_request("/foo", method="POST")
assert (
repr(handler)
== "<RequestHandler uri='/foo' method='POST' query_string=None headers={} data=None json=<UNDEFINED>>"
)
handler = httpserver.expect_request("/query", query_string={"a": "123"})
assert (
repr(handler) == "<RequestHandler uri='/query' method='__ALL' query_string={'a': '123'} "
"headers={} data=None json=<UNDEFINED>>"
)