60e0ffc959
Upgrade checks / Notify on failure (push) Has been cancelled
Upgrade checks / Close issue on success (push) Has been cancelled
Schema Crash Test / Real-world schema crash test (232K schemas) (push) Has been cancelled
Run static analysis / static_analysis (push) Has been cancelled
Tests / Tests: Python 3.10 on ubuntu-latest (push) Has been cancelled
Tests / Tests: Python 3.13 on ubuntu-latest (push) Has been cancelled
Tests / Tests: Python 3.10 on windows-latest (push) Has been cancelled
Tests / Tests with lowest-direct dependencies (push) Has been cancelled
Tests / MCP conformance tests (push) Has been cancelled
Tests / Integration tests (push) Has been cancelled
Tests / Package install smoke (push) Has been cancelled
Upgrade checks / Static analysis (push) Has been cancelled
Upgrade checks / Tests: Python 3.10 on ubuntu-latest (push) Has been cancelled
Upgrade checks / Tests: Python 3.13 on ubuntu-latest (push) Has been cancelled
Upgrade checks / Tests: Python 3.10 on windows-latest (push) Has been cancelled
Upgrade checks / Integration tests (push) Has been cancelled
Update MCPServerConfig Schema / update-config-schema (push) Has been cancelled
Update SDK Documentation / update-sdk-docs (push) Has been cancelled
35 lines
1.1 KiB
Python
35 lines
1.1 KiB
Python
from fastmcp.utilities.openapi.schemas import _replace_ref_with_defs
|
|
|
|
|
|
def test_replace_ref_with_defs_rewrites_propertyNames_ref():
|
|
"""
|
|
Regression test for issue #3303.
|
|
|
|
When using dict[StrEnum, Model], Pydantic generates:
|
|
|
|
{
|
|
"type": "object",
|
|
"propertyNames": {"$ref": "#/components/schemas/Category"},
|
|
"additionalProperties": {"$ref": "#/components/schemas/ItemInfo"}
|
|
}
|
|
|
|
_replace_ref_with_defs should rewrite BOTH refs to #/$defs/.
|
|
"""
|
|
|
|
schema = {
|
|
"type": "object",
|
|
"propertyNames": {"$ref": "#/components/schemas/Category"},
|
|
"additionalProperties": {"$ref": "#/components/schemas/ItemInfo"},
|
|
}
|
|
|
|
result = _replace_ref_with_defs(schema)
|
|
|
|
# additionalProperties ref is rewritten
|
|
assert result["additionalProperties"]["$ref"] == "#/$defs/ItemInfo"
|
|
|
|
# propertyNames ref must also be rewritten (this was the bug)
|
|
assert result["propertyNames"]["$ref"] == "#/$defs/Category"
|
|
|
|
# Ensure no dangling OpenAPI refs remain
|
|
assert "#/components/schemas/" not in str(result)
|