Spaces:
Running
Running
| """ | |
| Tests for authentication middleware and helpers. | |
| """ | |
| import pytest | |
| import jwt | |
| import time | |
| import os | |
| class TestMiddlewareAuth: | |
| """Test cases for middleware authentication functions.""" | |
| def test_verify_api_key_valid(self): | |
| """Test that valid API key is accepted.""" | |
| from middleware import verify_api_key | |
| # When no API key is configured, all requests should pass | |
| os.environ.pop("AI_ENGINE_API_KEY", None) | |
| assert verify_api_key(None) is True | |
| def test_verify_api_key_with_key_set(self): | |
| """Test API key verification when key is set.""" | |
| import importlib | |
| import middleware | |
| # Set the API key and reload the module | |
| os.environ["AI_ENGINE_API_KEY"] = "test-api-key" | |
| importlib.reload(middleware) | |
| # Valid key | |
| assert middleware.verify_api_key("test-api-key") is True | |
| # Invalid key | |
| assert middleware.verify_api_key("wrong-key") is False | |
| # No key provided | |
| assert middleware.verify_api_key(None) is False | |
| # Clean up and reload | |
| os.environ.pop("AI_ENGINE_API_KEY", None) | |
| importlib.reload(middleware) | |
| def test_verify_jwt_token_valid(self): | |
| """Test JWT token verification with valid token.""" | |
| from middleware import verify_jwt_token | |
| token = jwt.encode( | |
| { | |
| "user_id": "user-123", | |
| "role": "CONTRIBUTOR", | |
| "exp": int(time.time()) + 3600 | |
| }, | |
| os.environ.get("JWT_SECRET", "test-secret"), | |
| algorithm="HS256" | |
| ) | |
| payload = verify_jwt_token(token) | |
| assert payload["user_id"] == "user-123" | |
| assert payload["role"] == "CONTRIBUTOR" | |
| def test_verify_jwt_token_expired(self): | |
| """Test JWT token verification with expired token.""" | |
| from middleware import verify_jwt_token | |
| from fastapi import HTTPException | |
| token = jwt.encode( | |
| { | |
| "user_id": "user-123", | |
| "role": "CONTRIBUTOR", | |
| "exp": int(time.time()) - 3600 # Expired 1 hour ago | |
| }, | |
| os.environ.get("JWT_SECRET", "test-secret"), | |
| algorithm="HS256" | |
| ) | |
| with pytest.raises(HTTPException) as exc_info: | |
| verify_jwt_token(token) | |
| assert exc_info.value.status_code == 401 | |
| assert "expired" in str(exc_info.value.detail).lower() | |
| def test_verify_jwt_token_invalid(self): | |
| """Test JWT token verification with invalid token.""" | |
| from middleware import verify_jwt_token | |
| from fastapi import HTTPException | |
| with pytest.raises(HTTPException) as exc_info: | |
| verify_jwt_token("invalid-token") | |
| assert exc_info.value.status_code == 401 | |
| class TestOriginValidation: | |
| """Test cases for origin validation.""" | |
| def test_validate_origin_allowed(self): | |
| """Test that allowed origins pass validation.""" | |
| from middleware import ALLOWED_ORIGINS | |
| allowed = [ | |
| "http://localhost:3000", | |
| "http://localhost:5173", | |
| "https://open-triage.vercel.app", | |
| ] | |
| for origin in allowed: | |
| assert origin in ALLOWED_ORIGINS | |
| def test_validate_origin_blocked(self): | |
| """Test that non-allowed origins are blocked.""" | |
| from middleware import ALLOWED_ORIGINS | |
| blocked = [ | |
| "http://malicious-site.com", | |
| "https://fake-opentriage.com", | |
| ] | |
| for origin in blocked: | |
| assert origin not in ALLOWED_ORIGINS | |