Skip to content

Commit 44acd04

Browse files
committed
test: submit form content as urlencoded string
1 parent ad0d88e commit 44acd04

File tree

2 files changed

+18
-10
lines changed

2 files changed

+18
-10
lines changed

tests/cookie_form.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212

1313
### Standard packages ###
1414
from typing import Optional
15+
from urllib.parse import urlencode
1516

1617
### Third-party packages ###
1718
from fastapi.testclient import TestClient
@@ -64,9 +65,10 @@ def _() -> tuple[tuple[str, str], ...]:
6465
### Extract `csrf_token` from response to be set as next request's body ###
6566
csrf_token: Optional[str] = response.json().get("csrf_token", None)
6667
payload: dict[str, str] = {"csrf-token": csrf_token} if csrf_token is not None else {}
68+
content: bytes = urlencode(payload).encode("utf-8")
6769

6870
### Post to protected endpoint ###
69-
response = test_client.post("/protected", data=payload)
71+
response = test_client.post("/protected", content=content, headers=headers)
7072

7173
### Assertions ###
7274
assert response.status_code == 200
@@ -75,7 +77,7 @@ def _() -> tuple[tuple[str, str], ...]:
7577
assert cookie_token is None
7678

7779
### Immediately get protected contents again ###
78-
response = test_client.post("/protected", data=payload, headers=headers)
80+
response = test_client.post("/protected", content=content, headers=headers)
7981

8082
### Assertions ###
8183
assert response.status_code == 400
@@ -116,9 +118,10 @@ def _() -> tuple[tuple[str, str], ...]:
116118
### Extract `csrf_token` from response to be set as next request's form ###
117119
csrf_token: Optional[str] = response.json().get("csrf_token", None)
118120
payload: dict[str, str] = {"csrf-token": csrf_token} if csrf_token is not None else {}
121+
content: bytes = urlencode(payload).encode("utf-8")
119122

120123
### Post to protected endpoint but fails because TestClients defaults to http ###
121-
response = test_client.post("/protected", data=payload, headers=headers)
124+
response = test_client.post("/protected", content=content, headers=headers)
122125

123126
### Assertions ###
124127
assert response.status_code == 400
@@ -188,9 +191,10 @@ def _() -> tuple[tuple[str, str], ...]:
188191
### Extract `csrf_token` from response to be set as next request's form ###
189192
csrf_token: Optional[str] = response.json().get("csrf_token", None)
190193
payload: dict[str, str] = {"csrf-token": csrf_token} if csrf_token is not None else {}
194+
content: bytes = urlencode(payload).encode("utf-8")
191195

192196
### Post to protected endpoint ###
193-
response = test_client.post("/protected", data=payload, headers=headers)
197+
response = test_client.post("/protected", content=content, headers=headers)
194198

195199
### Assertions ###
196200
assert response.status_code == 200
@@ -199,7 +203,7 @@ def _() -> tuple[tuple[str, str], ...]:
199203
assert cookie_token is None
200204

201205
### Immediately get protected contents again ###
202-
response = test_client.post("/protected", data=payload, headers=headers)
206+
response = test_client.post("/protected", content=content, headers=headers)
203207

204208
### Assertions ###
205209
assert response.status_code == 400

tests/flexible/cookie_form.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
# *************************************************************
1212

1313
### Standard packages ###
14+
from urllib.parse import urlencode
1415
from typing import Optional
1516

1617
### Third-party packages ###
@@ -66,9 +67,10 @@ def _() -> tuple[tuple[str, str], ...]:
6667
### Extract `csrf_token` from response to be set as next request's body ###
6768
csrf_token: Optional[str] = response.json().get("csrf_token", None)
6869
payload: dict[str, str] = {"csrf-token": csrf_token} if csrf_token is not None else {}
70+
content: bytes = urlencode(payload).encode("utf-8")
6971

7072
### Post to protected endpoint ###
71-
response = flexible_client.post("/protected", data=payload, headers=headers)
73+
response = flexible_client.post("/protected", content=content, headers=headers)
7274

7375
### Assertions ###
7476
assert response.status_code == 200
@@ -77,7 +79,7 @@ def _() -> tuple[tuple[str, str], ...]:
7779
assert cookie_token is None
7880

7981
### Immediately get protected contents again ###
80-
response = flexible_client.post("/protected", data=payload, headers=headers)
82+
response = flexible_client.post("/protected", content=content, headers=headers)
8183

8284
### Assertions ###
8385
assert response.status_code == 400
@@ -117,9 +119,10 @@ def _() -> tuple[tuple[str, str], ...]:
117119
### Extract `csrf_token` from response to be set as next request's form ###
118120
csrf_token: Optional[str] = response.json().get("csrf_token", None)
119121
payload: dict[str, str] = {"csrf-token": csrf_token} if csrf_token is not None else {}
122+
content: bytes = urlencode(payload).encode("utf-8")
120123

121124
### Post to protected endpoint but fails because TestClients defaults to http ###
122-
response = flexible_client.post("/protected", data=payload, headers=headers)
125+
response = flexible_client.post("/protected", content=content, headers=headers)
123126

124127
### Assertions ###
125128
assert response.status_code == 400
@@ -185,9 +188,10 @@ def _() -> tuple[tuple[str, str], ...]:
185188
### Extract `csrf_token` from response to be set as next request's form ###
186189
csrf_token: Optional[str] = response.json().get("csrf_token", None)
187190
payload: dict[str, str] = {"csrf-token": csrf_token} if csrf_token is not None else {}
191+
content: bytes = urlencode(payload).encode("utf-8")
188192

189193
### Post to protected endpoint ###
190-
response = flexible_client.post("/protected", data=payload, headers=headers)
194+
response = flexible_client.post("/protected", content=content, headers=headers)
191195

192196
### Assertions ###
193197
assert response.status_code == 200
@@ -196,7 +200,7 @@ def _() -> tuple[tuple[str, str], ...]:
196200
assert cookie_token is None
197201

198202
### Immediately get protected contents again ###
199-
response = flexible_client.post("/protected", data=payload, headers=headers)
203+
response = flexible_client.post("/protected", content=content, headers=headers)
200204

201205
### Assertions ###
202206
assert response.status_code == 400

0 commit comments

Comments
 (0)