mirror of https://github.com/tiangolo/fastapi.git
62 lines
1.6 KiB
Python
62 lines
1.6 KiB
Python
from typing import Optional
|
|
|
|
from fastapi import FastAPI
|
|
from fastapi.params import Query
|
|
from fastapi.testclient import TestClient
|
|
|
|
app = FastAPI()
|
|
|
|
|
|
@app.get("/")
|
|
def get(
|
|
x: Optional[float] = Query(default=0, allow_inf_nan=False),
|
|
y: Optional[float] = Query(default=0, allow_inf_nan=True),
|
|
z: Optional[float] = Query(default=0),
|
|
) -> str: # type: ignore
|
|
return "OK"
|
|
|
|
|
|
client = TestClient(app)
|
|
|
|
|
|
def test_allow_inf_nan_false():
|
|
response = client.get("/?x=inf")
|
|
assert response.status_code == 422, response.text
|
|
|
|
response = client.get("/?x=-inf")
|
|
assert response.status_code == 422, response.text
|
|
|
|
response = client.get("/?x=nan")
|
|
assert response.status_code == 422, response.text
|
|
|
|
response = client.get("/?x=0")
|
|
assert response.status_code == 200, response.text
|
|
|
|
|
|
def test_allow_inf_nan_true():
|
|
response = client.get("/?y=inf")
|
|
assert response.status_code == 200, response.text
|
|
|
|
response = client.get("/?y=-inf")
|
|
assert response.status_code == 200, response.text
|
|
|
|
response = client.get("/?y=nan")
|
|
assert response.status_code == 200, response.text
|
|
|
|
response = client.get("/?y=0")
|
|
assert response.status_code == 200, response.text
|
|
|
|
|
|
def test_allow_inf_nan_not_specified():
|
|
response = client.get("/?z=inf")
|
|
assert response.status_code == 200, response.text
|
|
|
|
response = client.get("/?z=-inf")
|
|
assert response.status_code == 200, response.text
|
|
|
|
response = client.get("/?z=nan")
|
|
assert response.status_code == 200, response.text
|
|
|
|
response = client.get("/?z=0")
|
|
assert response.status_code == 200, response.text
|