Browse Source

Recreate test for form feed, for pydantic.v1 and converage

pull/14575/head
Sebastián Ramírez 7 months ago
parent
commit
f34fcbec41
  1. 79
      tests/test_get_model_definitions_formfeed_escape.py

79
tests/test_get_model_definitions_formfeed_escape.py

@ -1,8 +1,24 @@
import pytest
from fastapi import FastAPI
from pydantic import BaseModel
from starlette.testclient import TestClient
from fastapi.testclient import TestClient
from inline_snapshot import snapshot
from .utils import needs_pydanticv1
@pytest.fixture(
name="client",
params=[
pytest.param("pydantic-v1", marks=needs_pydanticv1),
"pydantic-v2",
],
)
def client_fixture(request: pytest.FixtureRequest) -> TestClient:
if request.param == "pydantic-v1":
from pydantic.v1 import BaseModel
else:
from pydantic import BaseModel
class Address(BaseModel):
"""
This is a public description of an Address
@ -14,22 +30,44 @@ class Address(BaseModel):
city: str
state_province: str
class Facility(BaseModel):
id: str
address: Address
app = FastAPI()
@app.get("/facilities/{facility_id}")
def get_facility(facility_id: str) -> Facility:
return Facility(
id=facility_id,
address=Address(line_1="123 Main St", city="Anytown", state_province="CA"),
)
client = TestClient(app)
return client
@app.get("/facilities/{facility_id}")
def get_facility(facility_id: str) -> Facility: ...
def test_get(client: TestClient):
response = client.get("/facilities/42")
assert response.status_code == 200, response.text
assert response.json() == {
"id": "42",
"address": {
"line_1": "123 Main St",
"city": "Anytown",
"state_province": "CA",
},
}
openapi_schema = {
def test_openapi_schema(client: TestClient):
"""
Sanity check to ensure our app's openapi schema renders as we expect
"""
response = client.get("/openapi.json")
assert response.status_code == 200, response.text
assert response.json() == snapshot(
{
"components": {
"schemas": {
"Address": {
@ -38,7 +76,10 @@ openapi_schema = {
"properties": {
"city": {"title": "City", "type": "string"},
"line_1": {"title": "Line 1", "type": "string"},
"state_province": {"title": "State Province", "type": "string"},
"state_province": {
"title": "State Province",
"type": "string",
},
},
"required": ["line_1", "city", "state_province"],
"title": "Address",
@ -56,7 +97,9 @@ openapi_schema = {
"HTTPValidationError": {
"properties": {
"detail": {
"items": {"$ref": "#/components/schemas/ValidationError"},
"items": {
"$ref": "#/components/schemas/ValidationError"
},
"title": "Detail",
"type": "array",
}
@ -67,7 +110,9 @@ openapi_schema = {
"ValidationError": {
"properties": {
"loc": {
"items": {"anyOf": [{"type": "string"}, {"type": "integer"}]},
"items": {
"anyOf": [{"type": "string"}, {"type": "integer"}]
},
"title": "Location",
"type": "array",
},
@ -98,7 +143,9 @@ openapi_schema = {
"200": {
"content": {
"application/json": {
"schema": {"$ref": "#/components/schemas/Facility"}
"schema": {
"$ref": "#/components/schemas/Facility"
}
}
},
"description": "Successful Response",
@ -119,12 +166,4 @@ openapi_schema = {
}
},
}
def test_openapi_schema():
"""
Sanity check to ensure our app's openapi schema renders as we expect
"""
response = client.get("/openapi.json")
assert response.status_code == 200, response.text
assert response.json() == openapi_schema
)

Loading…
Cancel
Save