Browse Source

Update tests after applying a bugfix

pull/14293/head
Yurii Motov 9 months ago
parent
commit
5869032461
  1. 72
      tests/test_aliases/test_file_field_aliases.py
  2. 40
      tests/test_aliases/test_form_field_aliases.py
  3. 16
      tests/test_aliases/test_form_model_aliases.py

72
tests/test_aliases/test_file_field_aliases.py

@ -14,7 +14,6 @@ app = FastAPI()
# ===================================================================================== # =====================================================================================
# File(alias=...) # File(alias=...)
# Current situation: Works, but schema is wrong # Current situation: Works, but schema is wrong
# Optional[List[bytes]] fails due to another issue (likely not related to aliases)
# ------------------------------ # ------------------------------
# required field # required field
@ -166,20 +165,12 @@ def test_optional_list_field_alias_by_name():
assert resp.json() == {"file_sizes": None} assert resp.json() == {"file_sizes": None}
@pytest.mark.xfail(
reason="Optional[List[bytes]] File type causes TypeError in FastAPI",
raises=TypeError,
strict=False,
)
def test_optional_list_field_alias_by_alias(): def test_optional_list_field_alias_by_alias():
client = TestClient(app) client = TestClient(app)
resp = client.post( resp = client.post(
"/optional-list-field-alias", "/optional-list-field-alias",
files=[("files_alias", b"content1"), ("files_alias", b"content2")], files=[("files_alias", b"content1"), ("files_alias", b"content2")],
) )
# Currently fails due to some issue (likely unrelated to aliases) with:
# TypeError: issubclass() arg 1 must be a class
assert resp.json() == {"file_sizes": [8, 8]} assert resp.json() == {"file_sizes": [8, 8]}
@ -205,7 +196,6 @@ def test_optional_list_field_alias_schema():
# ===================================================================================== # =====================================================================================
# File(validation_alias=...) # File(validation_alias=...)
# Current situation: schema is correct, but doesn't work (parameter name is used) # Current situation: schema is correct, but doesn't work (parameter name is used)
# Optional[List[bytes]] fails due to another issue (likely not related to aliases)
# ------------------------------ # ------------------------------
@ -229,9 +219,10 @@ def test_required_field_validation_alias_by_name():
# Currently fails due to issue with aliases: # Currently fails due to issue with aliases:
# AssertionError: assert 200 == 422 # AssertionError: assert 200 == 422
detail = resp.json()["detail"] # Uncomment when the assertion above passes:
assert detail[0]["msg"] == "Field required" # detail = resp.json()["detail"]
assert "file_val_alias" in detail[0]["loc"] # assert detail[0]["msg"] == "Field required"
# assert "file_val_alias" in detail[0]["loc"]
@pytest.mark.xfail(raises=AssertionError, strict=False) @pytest.mark.xfail(raises=AssertionError, strict=False)
@ -244,7 +235,8 @@ def test_required_field_validation_alias_by_alias():
# Currently fails due to issue with aliases: # Currently fails due to issue with aliases:
# AssertionError: assert 422 == 200 # AssertionError: assert 422 == 200
assert resp.json() == {"file_size": 7} # Uncomment when the assertion above passes:
# assert resp.json() == {"file_size": 7}
def test_required_field_validation_alias_schema(): def test_required_field_validation_alias_schema():
@ -331,9 +323,10 @@ def test_list_field_validation_alias_by_name():
# Currently fails due to issue with aliases: # Currently fails due to issue with aliases:
# AssertionError: assert 200 == 422 # AssertionError: assert 200 == 422
detail = resp.json()["detail"] # Uncomment when the assertion above passes:
assert detail[0]["msg"] == "Field required" # detail = resp.json()["detail"]
assert "files_val_alias" in detail[0]["loc"] # assert detail[0]["msg"] == "Field required"
# assert "files_val_alias" in detail[0]["loc"]
@pytest.mark.xfail(raises=AssertionError, strict=False) @pytest.mark.xfail(raises=AssertionError, strict=False)
@ -347,7 +340,8 @@ def test_list_field_validation_alias_by_alias():
# Currently fails due to issue with aliases: # Currently fails due to issue with aliases:
# AssertionError: assert 422 == 200 # AssertionError: assert 422 == 200
assert resp.json() == {"file_sizes": [8, 8]} # Uncomment when the assertion above passes:
# assert resp.json() == {"file_sizes": [8, 8]}
def test_list_field_validation_alias_schema(): def test_list_field_validation_alias_schema():
@ -378,22 +372,16 @@ async def optional_list_field_validation_alias(
return {"file_sizes": [len(file) for file in files]} return {"file_sizes": [len(file) for file in files]}
@pytest.mark.xfail( @pytest.mark.xfail(raises=AssertionError, strict=False)
reason="Optional[List[bytes]] File type causes TypeError in FastAPI",
raises=TypeError,
strict=False,
)
def test_optional_list_field_validation_alias_by_name(): def test_optional_list_field_validation_alias_by_name():
client = TestClient(app) client = TestClient(app)
resp = client.post( resp = client.post(
"/optional-list-field-validation-alias", "/optional-list-field-validation-alias",
files=[("files", b"content1"), ("files", b"content2")], files=[("files", b"content1"), ("files", b"content2")],
) )
# Currently fails due to some issue (likely unrelated to aliases) with:
# TypeError: issubclass() arg 1 must be a class
assert resp.json() == {"file_sizes": None} assert resp.json() == {"file_sizes": None}
# Will likely fail due to issue with aliases with: # Currently fails due to issue with aliases:
# AssertionError: assert {'file_sizes': [8, 8]} == {'file_sizes': None} # AssertionError: assert {'file_sizes': [8, 8]} == {'file_sizes': None}
@ -428,7 +416,6 @@ def test_optional_list_field_validation_alias_schema():
# ===================================================================================== # =====================================================================================
# File(alias=..., validation_alias=...) # File(alias=..., validation_alias=...)
# Current situation: Schema is correct (validation_alias), but doesn't work (alias is used) # Current situation: Schema is correct (validation_alias), but doesn't work (alias is used)
# Optional[List[bytes]] fails due to another issue (likely not related to aliases)
# ------------------------------ # ------------------------------
# required field # required field
@ -468,9 +455,10 @@ def test_required_field_alias_and_validation_alias_by_alias():
# Currently fails due to issue with aliases: # Currently fails due to issue with aliases:
# AssertionError: assert 200 == 422 # AssertionError: assert 200 == 422
detail = resp.json()["detail"] # Uncomment when the assertion above passes:
assert detail[0]["msg"] == "Field required" # detail = resp.json()["detail"]
assert "file_val_alias" in detail[0]["loc"] # assert detail[0]["msg"] == "Field required"
# assert "file_val_alias" in detail[0]["loc"]
@pytest.mark.xfail(raises=AssertionError, strict=False) @pytest.mark.xfail(raises=AssertionError, strict=False)
@ -484,7 +472,8 @@ def test_required_field_alias_and_validation_alias_by_validation_alias():
# Currently fails due to issue with aliases: # Currently fails due to issue with aliases:
# AssertionError: assert 422 == 200 # AssertionError: assert 422 == 200
assert resp.json() == {"file_size": 7} # Uncomment when the assertion above passes:
# assert resp.json() == {"file_size": 7}
def test_required_field_alias_and_validation_alias_schema(): def test_required_field_alias_and_validation_alias_schema():
@ -606,9 +595,10 @@ def test_list_field_alias_and_validation_alias_by_alias():
# Currently fails due to issue with aliases: # Currently fails due to issue with aliases:
# AssertionError: assert 200 == 422 # AssertionError: assert 200 == 422
detail = resp.json()["detail"] # Uncomment when the assertion above passes:
assert detail[0]["msg"] == "Field required" # detail = resp.json()["detail"]
assert "files_val_alias" in detail[0]["loc"] # assert detail[0]["msg"] == "Field required"
# assert "files_val_alias" in detail[0]["loc"]
@pytest.mark.xfail(raises=AssertionError, strict=False) @pytest.mark.xfail(raises=AssertionError, strict=False)
@ -622,7 +612,8 @@ def test_list_field_alias_and_validation_alias_by_validation_alias():
# Currently fails due to issue with aliases: # Currently fails due to issue with aliases:
# AssertionError: assert 422 == 200 # AssertionError: assert 422 == 200
assert resp.json() == {"file_sizes": [8, 8]} # Uncomment when the assertion above passes:
# assert resp.json() == {"file_sizes": [8, 8]}
def test_list_field_alias_and_validation_alias_schema(): def test_list_field_alias_and_validation_alias_schema():
@ -667,23 +658,16 @@ def test_optional_list_field_alias_and_validation_alias_by_name():
assert resp.json() == {"file_sizes": None} assert resp.json() == {"file_sizes": None}
@pytest.mark.xfail( @pytest.mark.xfail(raises=AssertionError, strict=False)
reason="Optional[List[bytes]] File type causes TypeError in FastAPI",
raises=TypeError,
strict=False,
)
def test_optional_list_field_alias_and_validation_alias_by_alias(): def test_optional_list_field_alias_and_validation_alias_by_alias():
client = TestClient(app) client = TestClient(app)
resp = client.post( resp = client.post(
"/optional-list-field-alias-and-validation-alias", "/optional-list-field-alias-and-validation-alias",
files=[("files_alias", b"content1"), ("files_alias", b"content2")], files=[("files_alias", b"content1"), ("files_alias", b"content2")],
) )
# Currently fails due to some issue (likely unrelated to aliases) with:
# TypeError: issubclass() arg 1 must be a class
assert resp.status_code == 200 assert resp.status_code == 200
assert resp.json() == {"file_sizes": None} assert resp.json() == {"file_sizes": None}
# Will likely fail due to issue with aliases: # Currently fails due to issue with aliases:
# AssertionError: assert {'file_sizes': [8, 8]} == {'file_sizes': None} # AssertionError: assert {'file_sizes': [8, 8]} == {'file_sizes': None}

40
tests/test_aliases/test_form_field_aliases.py

@ -204,9 +204,10 @@ def test_required_field_validation_alias_by_name():
# Currently fails due to issue with aliases: # Currently fails due to issue with aliases:
# AssertionError: assert 200 == 422 # AssertionError: assert 200 == 422
detail = resp.json()["detail"] # Uncomment when the assertion above passes:
assert detail[0]["msg"] == "Field required" # detail = resp.json()["detail"]
assert "param_val_alias" in detail[0]["loc"] # assert detail[0]["msg"] == "Field required"
# assert "param_val_alias" in detail[0]["loc"]
@pytest.mark.xfail(raises=AssertionError, strict=False) @pytest.mark.xfail(raises=AssertionError, strict=False)
@ -219,7 +220,8 @@ def test_required_field_validation_alias_by_alias():
# Currently fails due to issue with aliases: # Currently fails due to issue with aliases:
# AssertionError: assert 422 == 200 # AssertionError: assert 422 == 200
assert resp.json() == {"param": "123"} # Uncomment when the assertion above passes:
# assert resp.json() == {"param": "123"}
def test_required_field_validation_alias_schema(): def test_required_field_validation_alias_schema():
@ -298,9 +300,10 @@ def test_list_field_validation_alias_by_name():
# Currently fails due to issue with aliases: # Currently fails due to issue with aliases:
# AssertionError: assert 200 == 422 # AssertionError: assert 200 == 422
detail = resp.json()["detail"] # Uncomment when the assertion above passes:
assert detail[0]["msg"] == "Field required" # detail = resp.json()["detail"]
assert "param_val_alias" in detail[0]["loc"] # assert detail[0]["msg"] == "Field required"
# assert "param_val_alias" in detail[0]["loc"]
@pytest.mark.xfail(raises=AssertionError, strict=False) @pytest.mark.xfail(raises=AssertionError, strict=False)
@ -313,7 +316,8 @@ def test_list_field_validation_alias_by_alias():
# Currently fails due to issue with aliases: # Currently fails due to issue with aliases:
# AssertionError: assert 422 == 200 # AssertionError: assert 422 == 200
assert resp.json() == {"param": ["123", "456"]} # Uncomment when the assertion above passes:
# assert resp.json() == {"param": ["123", "456"]}
def test_list_field_validation_alias_schema(): def test_list_field_validation_alias_schema():
@ -422,9 +426,10 @@ def test_required_field_alias_and_validation_alias_by_alias():
# Currently fails due to issue with aliases: # Currently fails due to issue with aliases:
# AssertionError: assert 200 == 422 # AssertionError: assert 200 == 422
detail = resp.json()["detail"] # Uncomment when the assertion above passes:
assert detail[0]["msg"] == "Field required" # detail = resp.json()["detail"]
assert "param_val_alias" in detail[0]["loc"] # assert detail[0]["msg"] == "Field required"
# assert "param_val_alias" in detail[0]["loc"]
@pytest.mark.xfail(raises=AssertionError, strict=False) @pytest.mark.xfail(raises=AssertionError, strict=False)
@ -437,7 +442,8 @@ def test_required_field_alias_and_validation_alias_by_validation_alias():
# Currently fails due to issue with aliases: # Currently fails due to issue with aliases:
# AssertionError: assert 422 == 200 # AssertionError: assert 422 == 200
assert resp.json() == {"param": "123"} # Uncomment when the assertion above passes:
# assert resp.json() == {"param": "123"}
def test_required_field_alias_and_validation_alias_schema(): def test_required_field_alias_and_validation_alias_schema():
@ -550,9 +556,10 @@ def test_list_field_alias_and_validation_alias_by_alias():
# Currently fails due to issue with aliases: # Currently fails due to issue with aliases:
# AssertionError: assert 200 == 422 # AssertionError: assert 200 == 422
detail = resp.json()["detail"] # Uncomment when the assertion above passes:
assert detail[0]["msg"] == "Field required" # detail = resp.json()["detail"]
assert "param_val_alias" in detail[0]["loc"] # assert detail[0]["msg"] == "Field required"
# assert "param_val_alias" in detail[0]["loc"]
@pytest.mark.xfail(raises=AssertionError, strict=False) @pytest.mark.xfail(raises=AssertionError, strict=False)
@ -566,7 +573,8 @@ def test_list_field_alias_and_validation_alias_by_validation_alias():
# Currently fails due to issue with aliases: # Currently fails due to issue with aliases:
# AssertionError: assert 422 == 200 # AssertionError: assert 422 == 200
assert resp.json() == {"param": ["123", "456"]} # Uncomment when the assertion above passes:
# assert resp.json() == {"param": ["123", "456"]}
def test_list_field_alias_and_validation_alias_schema(): def test_list_field_alias_and_validation_alias_schema():

16
tests/test_aliases/test_form_model_aliases.py

@ -284,7 +284,7 @@ class ListFieldValidationAliasModel(BaseModel):
async def list_field_validation_alias_model( async def list_field_validation_alias_model(
data: ListFieldValidationAliasModel = Form(...), data: ListFieldValidationAliasModel = Form(...),
): ):
return {"param": data.param} return {"param": data.param} # pragma: no cover (remove `no cover` when bug fixed)
def test_list_field_validation_alias_model_by_name(): def test_list_field_validation_alias_model_by_name():
@ -309,7 +309,8 @@ def test_list_field_validation_alias_model_by_alias():
# AssertionError: assert 422 == 200 # AssertionError: assert 422 == 200
# {"detail":[{"type":"list_type","loc":["body","param_val_alias"],"msg":"Input should be a valid list","input":"456"}]} # {"detail":[{"type":"list_type","loc":["body","param_val_alias"],"msg":"Input should be a valid list","input":"456"}]}
assert resp.json() == {"param": ["123", "456"]} # Uncomment when the assertion above passes:
# assert resp.json() == {"param": ["123", "456"]}
def test_list_field_validation_alias_model_schema(): def test_list_field_validation_alias_model_schema():
@ -363,7 +364,8 @@ def test_optional_list_field_validation_alias_model_by_alias():
# AssertionError: assert 422 == 200 # AssertionError: assert 422 == 200
# {"detail":[{"type":"list_type","loc":["body","param_val_alias"],"msg":"Input should be a valid list","input":"456"}]} # {"detail":[{"type":"list_type","loc":["body","param_val_alias"],"msg":"Input should be a valid list","input":"456"}]}
assert resp.json() == {"param": ["123", "456"]} # Uncomment when the assertion above passes:
# assert resp.json() == {"param": ["123", "456"]}
def test_optional_list_field_validation_alias_model_schema(): def test_optional_list_field_validation_alias_model_schema():
@ -519,7 +521,7 @@ class ListFieldAliasAndValidationAliasModel(BaseModel):
async def list_field_alias_and_validation_alias_model( async def list_field_alias_and_validation_alias_model(
data: ListFieldAliasAndValidationAliasModel = Form(...), data: ListFieldAliasAndValidationAliasModel = Form(...),
): ):
return {"param": data.param} return {"param": data.param} # pragma: no cover (remove `no cover` when bug fixed)
def test_list_field_alias_and_validation_alias_model_by_name(): def test_list_field_alias_and_validation_alias_model_by_name():
@ -557,7 +559,8 @@ def test_list_field_alias_and_validation_alias_model_by_validation_alias():
# AssertionError: assert 422 == 200 # AssertionError: assert 422 == 200
# {"detail":[{"type":"list_type","loc":["body","param_val_alias"],"msg":"Input should be a valid list","input":"456"}]} # {"detail":[{"type":"list_type","loc":["body","param_val_alias"],"msg":"Input should be a valid list","input":"456"}]}
assert resp.json() == {"param": ["123", "456"]} # Uncomment when the assertion above passes:
# assert resp.json() == {"param": ["123", "456"]}
def test_list_field_alias_and_validation_alias_model_schema(): def test_list_field_alias_and_validation_alias_model_schema():
@ -626,7 +629,8 @@ def test_optional_list_field_alias_and_validation_alias_model_by_validation_alia
# AssertionError: assert 422 == 200 # AssertionError: assert 422 == 200
# {"detail":[{"type":"list_type","loc":["body","param_val_alias"],"msg":"Input should be a valid list","input":"456"}]} # {"detail":[{"type":"list_type","loc":["body","param_val_alias"],"msg":"Input should be a valid list","input":"456"}]}
assert resp.json() == {"param": ["123", "456"]} # Uncomment when the assertion above passes:
# assert resp.json() == {"param": ["123", "456"]}
def test_optional_list_field_alias_and_validation_alias_model_schema(): def test_optional_list_field_alias_and_validation_alias_model_schema():

Loading…
Cancel
Save