-
-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathtest_dynamic.py
More file actions
160 lines (115 loc) · 5.11 KB
/
test_dynamic.py
File metadata and controls
160 lines (115 loc) · 5.11 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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
import json
from unittest.mock import AsyncMock
from uuid import UUID
from fastapi.testclient import TestClient
from main import app
from . import decode_qrcode
client = TestClient(app)
def test_uuid():
response = client.get("/uuid")
assert response.status_code == 200
assert "uuid" in response.json()
assert "-4" in response.json()["uuid"]
assert "random.org" in response.json()["messages"][0]
assert "T" in response.json()["timestamp"]
assert "+00:00" in response.json()["timestamp"]
def test_uuid_qrcode():
uuid = "c42eec28-617c-4333-bf63-9c2b43bbf8d3"
response = client.get("/uuid/qrcode")
assert response.status_code == 200
assert response.headers["content-type"] == "image/png"
response_body = b""
for chunk in response.iter_bytes():
response_body += chunk
uuid_decoded = decode_qrcode(response_body)
try:
UUID(uuid_decoded)
except ValueError as e:
assert False, f"Decoded value of {uuid_decoded} is not a valid UUID!"
response = client.get(f"/uuid/qrcode/{uuid}")
assert response.status_code == 200
assert response.headers["content-type"] == "image/png"
response_body = b""
for chunk in response.iter_bytes():
response_body += chunk
uuid_decoded = decode_qrcode(response_body)
assert uuid_decoded == uuid
response = client.get(f"/uuid/qrcode/testing")
assert response.status_code == 422
assert response.json()["detail"]["type"] == "value_error.str.validation"
def test_delay():
response = client.get("/delay/2?debug=1")
assert response.status_code == 200
assert "2 seconds" in response.json()["message"]
response = client.get("/delay/10?debug=1")
assert response.status_code == 200
assert "10 seconds" in response.json()["message"]
response = client.get("/delay/0?debug=1")
assert response.status_code == 200
assert "0 seconds" in response.json()["message"]
response = client.get("/delay/11?debug=1")
assert response.status_code == 422
assert response.json()["detail"]["type"] == "value_error.int.max_size"
response = client.get("/delay/-1?debug=1")
assert response.status_code == 422
assert response.json()["detail"]["type"] == "value_error.int.min_size"
def test_stream():
response = client.get("/stream/5")
assert response.status_code == 200
lines = response.text.split("\n")
assert len(lines) == 6
line = lines[1]
row = json.loads(line)
assert row["response_number"] == 2
assert "-4" in row["uuid"]
response = client.get("/stream/-1")
assert response.status_code == 422
assert response.json()["detail"]["type"] == "value_error.int.min_size"
response = client.get("/stream/0")
assert response.status_code == 422
assert response.json()["detail"]["type"] == "value_error.int.min_size"
response = client.get("/stream/101")
assert response.status_code == 422
assert response.json()["detail"]["type"] == "value_error.int.max_size"
def test_stream_chars():
response = client.get("/stream/chars/250/50?debug=1")
assert response.status_code == 200
assert len(response.text) == 250
response = client.get("/stream/chars/102400/5120?debug=1")
assert response.status_code == 200
assert len(response.text) == 102400
response = client.get("/stream/chars/102400/50?debug=1")
assert response.status_code == 422
assert response.json()["detail"]["type"] == "value_error.int.min_size"
response = client.get("/stream/chars/102401/10000?debug=1")
assert response.status_code == 422
assert response.json()["detail"]["type"] == "value_error.int.max_size"
assert len(response.text) == 89
response = client.get("/stream/chars/-1/50?debug=1")
assert response.status_code == 422
assert response.json()["detail"]["type"] == "value_error.int.min_size"
response = client.get("/stream/chars/250/-1?debug=1")
assert response.status_code == 422
assert response.json()["detail"]["type"] == "value_error.int.min_size"
response = client.get("/stream/chars/250/0?debug=1")
assert response.status_code == 422
assert response.json()["detail"]["type"] == "value_error.int.min_size"
def test_stream_chars_complete():
response = client.get("/stream/chars/complete/250/50?debug=1")
assert response.status_code == 200
assert len(response.text) == 250
response = client.get("/stream/chars/complete/600/50?debug=1")
assert response.status_code == 200
lines = response.text.split()
last_line = lines[ len(lines) - 1 ]
assert len(last_line) == 99
assert len(response.text) == 600
response = client.get("/stream/chars/complete/-1/50?debug=1")
assert response.status_code == 422
assert response.json()["detail"]["type"] == "value_error.int.min_size"
response = client.get("/stream/chars/complete/250/-1?debug=1")
assert response.status_code == 422
assert response.json()["detail"]["type"] == "value_error.int.min_size"
response = client.get("/stream/chars/complete/250/0?debug=1")
assert response.status_code == 422
assert response.json()["detail"]["type"] == "value_error.int.min_size"