Browse Source

🔥 Remove more Pydantic v1 test fragments

pull/14611/head
Sebastián Ramírez 7 months ago
parent
commit
929f5b3afb
  1. 170
      tests/test_dependency_overrides.py
  2. 32
      tests/test_filter_pydantic_sub_model_pv2.py
  3. 221
      tests/test_schema_extra_examples.py

170
tests/test_dependency_overrides.py

@ -1,7 +1,6 @@
from typing import Optional from typing import Optional
import pytest import pytest
from dirty_equals import IsDict
from fastapi import APIRouter, Depends, FastAPI from fastapi import APIRouter, Depends, FastAPI
from fastapi.testclient import TestClient from fastapi.testclient import TestClient
@ -147,29 +146,16 @@ def test_router_depends_q_foo_skip_100_limit_200():
def test_router_decorator_depends(): def test_router_decorator_depends():
response = client.get("/router-decorator-depends/") response = client.get("/router-decorator-depends/")
assert response.status_code == 422 assert response.status_code == 422
assert response.json() == IsDict( assert response.json() == {
{ "detail": [
"detail": [ {
{ "type": "missing",
"type": "missing", "loc": ["query", "q"],
"loc": ["query", "q"], "msg": "Field required",
"msg": "Field required", "input": None,
"input": None, }
} ]
] }
}
) | IsDict(
# TODO remove when deprecating Pydantic v1
{
"detail": [
{
"loc": ["query", "q"],
"msg": "field required",
"type": "value_error.missing",
}
]
}
)
def test_router_decorator_depends_q_foo(): def test_router_decorator_depends_q_foo():
@ -321,29 +307,17 @@ def test_override_with_sub_router_depends():
app.dependency_overrides[common_parameters] = overrider_dependency_with_sub app.dependency_overrides[common_parameters] = overrider_dependency_with_sub
response = client.get("/router-depends/") response = client.get("/router-depends/")
assert response.status_code == 422 assert response.status_code == 422
assert response.json() == IsDict( assert response.json() == {
{ "detail": [
"detail": [ {
{ "type": "missing",
"type": "missing", "loc": ["query", "k"],
"loc": ["query", "k"], "msg": "Field required",
"msg": "Field required", "input": None,
"input": None, }
} ]
] }
}
) | IsDict(
# TODO remove when deprecating Pydantic v1
{
"detail": [
{
"loc": ["query", "k"],
"msg": "field required",
"type": "value_error.missing",
}
]
}
)
app.dependency_overrides = {} app.dependency_overrides = {}
@ -351,29 +325,17 @@ def test_override_with_sub_router_depends_q_foo():
app.dependency_overrides[common_parameters] = overrider_dependency_with_sub app.dependency_overrides[common_parameters] = overrider_dependency_with_sub
response = client.get("/router-depends/?q=foo") response = client.get("/router-depends/?q=foo")
assert response.status_code == 422 assert response.status_code == 422
assert response.json() == IsDict( assert response.json() == {
{ "detail": [
"detail": [ {
{ "type": "missing",
"type": "missing", "loc": ["query", "k"],
"loc": ["query", "k"], "msg": "Field required",
"msg": "Field required", "input": None,
"input": None, }
} ]
] }
}
) | IsDict(
# TODO remove when deprecating Pydantic v1
{
"detail": [
{
"loc": ["query", "k"],
"msg": "field required",
"type": "value_error.missing",
}
]
}
)
app.dependency_overrides = {} app.dependency_overrides = {}
@ -389,29 +351,17 @@ def test_override_with_sub_router_decorator_depends():
app.dependency_overrides[common_parameters] = overrider_dependency_with_sub app.dependency_overrides[common_parameters] = overrider_dependency_with_sub
response = client.get("/router-decorator-depends/") response = client.get("/router-decorator-depends/")
assert response.status_code == 422 assert response.status_code == 422
assert response.json() == IsDict( assert response.json() == {
{ "detail": [
"detail": [ {
{ "type": "missing",
"type": "missing", "loc": ["query", "k"],
"loc": ["query", "k"], "msg": "Field required",
"msg": "Field required", "input": None,
"input": None, }
} ]
] }
}
) | IsDict(
# TODO remove when deprecating Pydantic v1
{
"detail": [
{
"loc": ["query", "k"],
"msg": "field required",
"type": "value_error.missing",
}
]
}
)
app.dependency_overrides = {} app.dependency_overrides = {}
@ -419,29 +369,17 @@ def test_override_with_sub_router_decorator_depends_q_foo():
app.dependency_overrides[common_parameters] = overrider_dependency_with_sub app.dependency_overrides[common_parameters] = overrider_dependency_with_sub
response = client.get("/router-decorator-depends/?q=foo") response = client.get("/router-decorator-depends/?q=foo")
assert response.status_code == 422 assert response.status_code == 422
assert response.json() == IsDict( assert response.json() == {
{ "detail": [
"detail": [ {
{ "type": "missing",
"type": "missing", "loc": ["query", "k"],
"loc": ["query", "k"], "msg": "Field required",
"msg": "Field required", "input": None,
"input": None, }
} ]
] }
}
) | IsDict(
# TODO remove when deprecating Pydantic v1
{
"detail": [
{
"loc": ["query", "k"],
"msg": "field required",
"type": "value_error.missing",
}
]
}
)
app.dependency_overrides = {} app.dependency_overrides = {}

32
tests/test_filter_pydantic_sub_model_pv2.py

@ -1,7 +1,7 @@
from typing import Optional from typing import Optional
import pytest import pytest
from dirty_equals import HasRepr, IsDict, IsOneOf from dirty_equals import HasRepr
from fastapi import Depends, FastAPI from fastapi import Depends, FastAPI
from fastapi.exceptions import ResponseValidationError from fastapi.exceptions import ResponseValidationError
from fastapi.testclient import TestClient from fastapi.testclient import TestClient
@ -63,23 +63,13 @@ def test_validator_is_cloned(client: TestClient):
with pytest.raises(ResponseValidationError) as err: with pytest.raises(ResponseValidationError) as err:
client.get("/model/modelX") client.get("/model/modelX")
assert err.value.errors() == [ assert err.value.errors() == [
IsDict( {
{ "type": "value_error",
"type": "value_error", "loc": ("response", "name"),
"loc": ("response", "name"), "msg": "Value error, name must end in A",
"msg": "Value error, name must end in A", "input": "modelX",
"input": "modelX", "ctx": {"error": HasRepr("ValueError('name must end in A')")},
"ctx": {"error": HasRepr("ValueError('name must end in A')")}, }
}
)
| IsDict(
# TODO remove when deprecating Pydantic v1
{
"loc": ("response", "name"),
"msg": "name must end in A",
"type": "value_error",
}
)
] ]
@ -145,11 +135,7 @@ def test_openapi_schema(client: TestClient):
}, },
"ModelA": { "ModelA": {
"title": "ModelA", "title": "ModelA",
"required": IsOneOf( "required": ["name", "foo"],
["name", "description", "foo"],
# TODO remove when deprecating Pydantic v1
["name", "foo"],
),
"type": "object", "type": "object",
"properties": { "properties": {
"name": {"title": "Name", "type": "string"}, "name": {"title": "Name", "type": "string"},

221
tests/test_schema_extra_examples.py

@ -1,7 +1,6 @@
from typing import Union from typing import Union
import pytest import pytest
from dirty_equals import IsDict
from fastapi import Body, Cookie, FastAPI, Header, Path, Query from fastapi import Body, Cookie, FastAPI, Header, Path, Query
from fastapi.exceptions import FastAPIDeprecationWarning from fastapi.exceptions import FastAPIDeprecationWarning
from fastapi.testclient import TestClient from fastapi.testclient import TestClient
@ -336,28 +335,13 @@ def test_openapi_schema():
"requestBody": { "requestBody": {
"content": { "content": {
"application/json": { "application/json": {
"schema": IsDict( "schema": {
{ "$ref": "#/components/schemas/Item",
"$ref": "#/components/schemas/Item", "examples": [
"examples": [ {"data": "Data in Body examples, example1"},
{"data": "Data in Body examples, example1"}, {"data": "Data in Body examples, example2"},
{"data": "Data in Body examples, example2"}, ],
], }
}
)
| IsDict(
# TODO: remove this when deprecating Pydantic v1
{
"allOf": [
{"$ref": "#/components/schemas/Item"}
],
"title": "Item",
"examples": [
{"data": "Data in Body examples, example1"},
{"data": "Data in Body examples, example2"},
],
}
)
} }
}, },
"required": True, "required": True,
@ -387,28 +371,13 @@ def test_openapi_schema():
"requestBody": { "requestBody": {
"content": { "content": {
"application/json": { "application/json": {
"schema": IsDict( "schema": {
{ "$ref": "#/components/schemas/Item",
"$ref": "#/components/schemas/Item", "examples": [
"examples": [ {"data": "examples example_examples 1"},
{"data": "examples example_examples 1"}, {"data": "examples example_examples 2"},
{"data": "examples example_examples 2"}, ],
], },
}
)
| IsDict(
# TODO: remove this when deprecating Pydantic v1
{
"allOf": [
{"$ref": "#/components/schemas/Item"}
],
"title": "Item",
"examples": [
{"data": "examples example_examples 1"},
{"data": "examples example_examples 2"},
],
},
),
"example": {"data": "Overridden example"}, "example": {"data": "Overridden example"},
} }
}, },
@ -539,16 +508,10 @@ def test_openapi_schema():
"parameters": [ "parameters": [
{ {
"required": False, "required": False,
"schema": IsDict( "schema": {
{ "anyOf": [{"type": "string"}, {"type": "null"}],
"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Data",
"title": "Data", },
}
)
| IsDict(
# TODO: Remove this when deprecating Pydantic v1
{"title": "Data", "type": "string"}
),
"example": "query1", "example": "query1",
"name": "data", "name": "data",
"in": "query", "in": "query",
@ -579,21 +542,11 @@ def test_openapi_schema():
"parameters": [ "parameters": [
{ {
"required": False, "required": False,
"schema": IsDict( "schema": {
{ "anyOf": [{"type": "string"}, {"type": "null"}],
"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Data",
"title": "Data", "examples": ["query1", "query2"],
"examples": ["query1", "query2"], },
}
)
| IsDict(
# TODO: Remove this when deprecating Pydantic v1
{
"type": "string",
"title": "Data",
"examples": ["query1", "query2"],
}
),
"name": "data", "name": "data",
"in": "query", "in": "query",
} }
@ -623,21 +576,11 @@ def test_openapi_schema():
"parameters": [ "parameters": [
{ {
"required": False, "required": False,
"schema": IsDict( "schema": {
{ "anyOf": [{"type": "string"}, {"type": "null"}],
"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Data",
"title": "Data", "examples": ["query1", "query2"],
"examples": ["query1", "query2"], },
}
)
| IsDict(
# TODO: Remove this when deprecating Pydantic v1
{
"type": "string",
"title": "Data",
"examples": ["query1", "query2"],
}
),
"example": "query_overridden", "example": "query_overridden",
"name": "data", "name": "data",
"in": "query", "in": "query",
@ -668,16 +611,10 @@ def test_openapi_schema():
"parameters": [ "parameters": [
{ {
"required": False, "required": False,
"schema": IsDict( "schema": {
{ "anyOf": [{"type": "string"}, {"type": "null"}],
"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Data",
"title": "Data", },
}
)
| IsDict(
# TODO: Remove this when deprecating Pydantic v1
{"title": "Data", "type": "string"}
),
"example": "header1", "example": "header1",
"name": "data", "name": "data",
"in": "header", "in": "header",
@ -708,21 +645,11 @@ def test_openapi_schema():
"parameters": [ "parameters": [
{ {
"required": False, "required": False,
"schema": IsDict( "schema": {
{ "anyOf": [{"type": "string"}, {"type": "null"}],
"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Data",
"title": "Data", "examples": ["header1", "header2"],
"examples": ["header1", "header2"], },
}
)
| IsDict(
# TODO: Remove this when deprecating Pydantic v1
{
"type": "string",
"title": "Data",
"examples": ["header1", "header2"],
}
),
"name": "data", "name": "data",
"in": "header", "in": "header",
} }
@ -752,21 +679,11 @@ def test_openapi_schema():
"parameters": [ "parameters": [
{ {
"required": False, "required": False,
"schema": IsDict( "schema": {
{ "anyOf": [{"type": "string"}, {"type": "null"}],
"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Data",
"title": "Data", "examples": ["header1", "header2"],
"examples": ["header1", "header2"], },
}
)
| IsDict(
# TODO: Remove this when deprecating Pydantic v1
{
"title": "Data",
"type": "string",
"examples": ["header1", "header2"],
}
),
"example": "header_overridden", "example": "header_overridden",
"name": "data", "name": "data",
"in": "header", "in": "header",
@ -797,16 +714,10 @@ def test_openapi_schema():
"parameters": [ "parameters": [
{ {
"required": False, "required": False,
"schema": IsDict( "schema": {
{ "anyOf": [{"type": "string"}, {"type": "null"}],
"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Data",
"title": "Data", },
}
)
| IsDict(
# TODO: Remove this when deprecating Pydantic v1
{"title": "Data", "type": "string"}
),
"example": "cookie1", "example": "cookie1",
"name": "data", "name": "data",
"in": "cookie", "in": "cookie",
@ -837,21 +748,11 @@ def test_openapi_schema():
"parameters": [ "parameters": [
{ {
"required": False, "required": False,
"schema": IsDict( "schema": {
{ "anyOf": [{"type": "string"}, {"type": "null"}],
"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Data",
"title": "Data", "examples": ["cookie1", "cookie2"],
"examples": ["cookie1", "cookie2"], },
}
)
| IsDict(
# TODO: Remove this when deprecating Pydantic v1
{
"title": "Data",
"type": "string",
"examples": ["cookie1", "cookie2"],
}
),
"name": "data", "name": "data",
"in": "cookie", "in": "cookie",
} }
@ -881,21 +782,11 @@ def test_openapi_schema():
"parameters": [ "parameters": [
{ {
"required": False, "required": False,
"schema": IsDict( "schema": {
{ "anyOf": [{"type": "string"}, {"type": "null"}],
"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Data",
"title": "Data", "examples": ["cookie1", "cookie2"],
"examples": ["cookie1", "cookie2"], },
}
)
| IsDict(
# TODO: Remove this when deprecating Pydantic v1
{
"title": "Data",
"type": "string",
"examples": ["cookie1", "cookie2"],
}
),
"example": "cookie_overridden", "example": "cookie_overridden",
"name": "data", "name": "data",
"in": "cookie", "in": "cookie",

Loading…
Cancel
Save