from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from app import __version__ from app.main import create_app def test_create_app_returns_fastapi_instance(): app = create_app() assert isinstance(app, FastAPI) assert app.title == "Multimodal AI Intelligence Platform" assert app.version == __version__ def test_create_app_mounts_v1_router(): # Use the OpenAPI spec (public, stable surface) instead of walking # `app.routes` — newer FastAPI hides included routes behind a wrapper # that exposes neither `.path` nor a recursible `.routes`. app = create_app() spec = app.openapi() assert "/api/v1/health" in spec.get("paths", {}) def test_create_app_registers_cors_middleware(): app = create_app() cors_middlewares = [m for m in app.user_middleware if m.cls is CORSMiddleware] assert len(cors_middlewares) == 1 def test_cors_preflight_allows_configured_origin(client): response = client.options( "/api/v1/health", headers={ "Origin": "http://localhost:3000", "Access-Control-Request-Method": "GET", }, ) assert response.status_code == 200 assert response.headers["access-control-allow-origin"] == "http://localhost:3000" def test_cors_get_includes_allow_origin_header(client): response = client.get( "/api/v1/health", headers={"Origin": "http://localhost:3000"}, ) assert response.status_code == 200 assert response.headers["access-control-allow-origin"] == "http://localhost:3000"