mirror of https://github.com/tiangolo/fastapi.git
59 lines
1.6 KiB
Python
59 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
|
|
|