| 230 | indirect=True, |
| 231 | ) |
| 232 | async def test_http_client(driver: Driver, server_url: URL): |
| 233 | assert isinstance(driver, HTTPClientMixin) |
| 234 | |
| 235 | # simple post with query, headers, cookies and content |
| 236 | request = Request( |
| 237 | "POST", |
| 238 | server_url, |
| 239 | params={"param": "test"}, |
| 240 | headers={"X-Test": "test"}, |
| 241 | cookies={"session": "test"}, |
| 242 | content="test", |
| 243 | timeout=Timeout(total=4, connect=2, read=2), |
| 244 | ) |
| 245 | response = await driver.request(request) |
| 246 | assert server_url.host is not None |
| 247 | request_raw_url = Request( |
| 248 | "POST", |
| 249 | ( |
| 250 | server_url.scheme.encode("ascii"), |
| 251 | server_url.host.encode("ascii"), |
| 252 | server_url.port, |
| 253 | server_url.path.encode("ascii"), |
| 254 | ), |
| 255 | params={"param": "test"}, |
| 256 | headers={"X-Test": "test"}, |
| 257 | cookies={"session": "test"}, |
| 258 | content="test", |
| 259 | timeout=Timeout(total=4, connect=2, read=2), |
| 260 | ) |
| 261 | assert request.url == request_raw_url.url, ( |
| 262 | "request.url should be equal to request_raw_url.url" |
| 263 | ) |
| 264 | assert response.status_code == 200 |
| 265 | assert response.content |
| 266 | data = json.loads(response.content) |
| 267 | assert data["method"] == "POST" |
| 268 | assert data["args"] == {"param": "test"} |
| 269 | assert data["headers"].get("X-Test") == "test" |
| 270 | assert data["headers"].get("Cookie") == "session=test" |
| 271 | assert data["data"] == "test" |
| 272 | |
| 273 | # post with data body |
| 274 | request = Request("POST", server_url, data={"form": "test"}) |
| 275 | response = await driver.request(request) |
| 276 | assert response.status_code == 200 |
| 277 | assert response.content |
| 278 | data = json.loads(response.content) |
| 279 | assert data["method"] == "POST" |
| 280 | assert data["form"] == {"form": "test"} |
| 281 | |
| 282 | # post with json body |
| 283 | request = Request("POST", server_url, json={"json": "test"}) |
| 284 | response = await driver.request(request) |
| 285 | assert response.status_code == 200 |
| 286 | assert response.content |
| 287 | data = json.loads(response.content) |
| 288 | assert data["method"] == "POST" |
| 289 | assert data["json"] == {"json": "test"} |