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
39 lines
1.2 KiB
Python
39 lines
1.2 KiB
Python
from fastmcp.utilities.openapi.json_schema_converter import (
|
|
convert_openapi_schema_to_json_schema,
|
|
)
|
|
|
|
|
|
def test_discriminator_property_remains_required_when_removed():
|
|
schema = {
|
|
"oneOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"kind": {"const": "comprehensive", "type": "string"},
|
|
},
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"kind": {"const": "validate", "type": "string"},
|
|
"target_id": {"type": "string"},
|
|
},
|
|
"required": ["target_id"],
|
|
},
|
|
],
|
|
"discriminator": {"propertyName": "kind"},
|
|
}
|
|
|
|
result = convert_openapi_schema_to_json_schema(schema, "3.0.0")
|
|
|
|
assert "oneOf" not in result
|
|
assert "discriminator" not in result
|
|
for variant in result["anyOf"]:
|
|
assert "kind" in variant["required"]
|
|
validate_schema = next(
|
|
variant
|
|
for variant in result["anyOf"]
|
|
if variant["properties"]["kind"]["const"] == "validate"
|
|
)
|
|
assert validate_schema["required"] == ["target_id", "kind"]
|