1
from typing import Union
3
from fastapi import Body, FastAPI, Query
4
from fastapi.testclient import TestClient
10
def read_query(q: Union[str, None]):
14
@app.get("/explicit-query")
15
def read_explicit_query(q: Union[str, None] = Query()):
19
@app.post("/body-embed")
20
def send_body_embed(b: Union[str, None] = Body(embed=True)):
24
client = TestClient(app)
27
def test_required_nonable_query_invalid():
28
response = client.get("/query")
29
assert response.status_code == 422
32
def test_required_noneable_query_value():
33
response = client.get("/query", params={"q": "foo"})
34
assert response.status_code == 200
35
assert response.json() == "foo"
38
def test_required_nonable_explicit_query_invalid():
39
response = client.get("/explicit-query")
40
assert response.status_code == 422
43
def test_required_nonable_explicit_query_value():
44
response = client.get("/explicit-query", params={"q": "foo"})
45
assert response.status_code == 200
46
assert response.json() == "foo"
49
def test_required_nonable_body_embed_no_content():
50
response = client.post("/body-embed")
51
assert response.status_code == 422
54
def test_required_nonable_body_embed_invalid():
55
response = client.post("/body-embed", json={"invalid": "invalid"})
56
assert response.status_code == 422
59
def test_required_noneable_body_embed_value():
60
response = client.post("/body-embed", json={"b": "foo"})
61
assert response.status_code == 200
62
assert response.json() == "foo"