Files
inecs f8d3cbdd59 Initial commit: VMware vSphere API simulator scaffold.
Add the FastAPI app, PostgreSQL migrations, Docker/Helm packaging, API
contracts, docs, client examples, and the unit/integration/compatibility
test suite for local client and tooling labs without a real vCenter.
2026-07-18 04:42:11 +03:00

52 lines
1.8 KiB
Python

"""Broadcom universe registry coverage."""
from fastapi.routing import APIRoute
from app.vsphere.rest.coverage import (
CORE_IMPLEMENTED,
IMPLEMENTED,
catalog_entries,
reload_coverage,
universe_stats,
)
from app.vsphere.rest.stub_surface import router as stub_surface_router
def test_universe_covers_broadcom_operations_index() -> None:
reload_coverage()
stats = universe_stats()
assert stats["broadcom_operations"] == 1348
assert int(stats["unique_routes"]) >= 1000
assert int(stats["registry_methods"]) >= int(stats["unique_routes"])
assert int(stats["core_methods"]) == len(CORE_IMPLEMENTED)
assert int(stats["stub_methods"]) >= 850
def test_registry_includes_put_and_all_core_routes() -> None:
reload_coverage()
entries = {(e["verb"], e["path"]): e["status"] for e in catalog_entries()}
assert any(verb == "PUT" for verb, _path in entries)
for key, status in CORE_IMPLEMENTED.items():
assert entries[key] == status
def test_stub_surface_registers_each_contract_path_separately() -> None:
"""Universe stubs are individual FastAPI routes, not a catch-all."""
stub_routes = [
route
for route in stub_surface_router.routes
if isinstance(route, APIRoute) and str(route.name or "").startswith("vsphere-stub:")
]
expected = {(verb, path) for (verb, path), status in IMPLEMENTED.items() if status == "stub"}
registered: set[tuple[str, str]] = set()
for route in stub_routes:
methods = {
method for method in (route.methods or set()) if method not in {"HEAD", "OPTIONS"}
}
assert len(methods) == 1, route.path
registered.add((next(iter(methods)), route.path))
assert len(stub_routes) == len(expected)
assert registered == expected
assert not any("{full_path" in route.path for route in stub_routes)