import pytest from fastapi.testclient import TestClient from dashboard.app import app @pytest.fixture def client(): return TestClient(app) def test_security_headers_middleware_is_used(client): """Verify that SecurityHeadersMiddleware is used instead of the inline function.""" response = client.get("/") # SecurityHeadersMiddleware sets X-Frame-Options to 'SAMEORIGIN' by default assert response.headers["X-Frame-Options"] == "SAMEORIGIN" # SecurityHeadersMiddleware also sets Permissions-Policy assert "Permissions-Policy" in response.headers def test_request_logging_middleware_is_used(client): """Verify that RequestLoggingMiddleware is used.""" response = client.get("/") # RequestLoggingMiddleware adds X-Correlation-ID to the response assert "X-Correlation-ID" in response.headers def test_csrf_middleware_is_used(client): """Verify that CSRFMiddleware is used.""" from config import settings original = settings.timmy_disable_csrf settings.timmy_disable_csrf = False try: # GET request should set a csrf_token cookie if not present response = client.get("/") assert "csrf_token" in response.cookies # POST request without token should be blocked (403) # Use a path that isn't likely to be exempt response = client.post("/agents/create") assert response.status_code == 403 assert response.json()["code"] == "CSRF_INVALID" finally: settings.timmy_disable_csrf = original