fix (config): Attempt to fix github actions

This commit is contained in:
Vineeth Voruganti 2025-05-27 18:28:43 -04:00
parent f36c51e858
commit 3c9c094d0f
3 changed files with 11 additions and 27 deletions

View File

@ -1,9 +1,9 @@
import datetime
import logging
import os
from fastapi import APIRouter, Depends, Query
from src.config import settings
from src.exceptions import DisabledException, ValidationException
from src.security import (
JWTParams,
@ -13,8 +13,6 @@ from src.security import (
logger = logging.getLogger(__name__)
USE_AUTH = os.getenv("USE_AUTH", "False").lower() == "true"
router = APIRouter(
prefix="/keys",
tags=["keys"],
@ -35,7 +33,7 @@ async def create_key(
expires_at: datetime.datetime | None = None,
):
"""Create a new Key"""
if not USE_AUTH:
if not settings.AUTH.USE_AUTH:
raise DisabledException()
# Validate that at least one parameter is provided for proper scoping

View File

@ -15,15 +15,6 @@ from .exceptions import AuthenticationException
logger = logging.getLogger(__name__)
USE_AUTH = settings.AUTH.USE_AUTH
AUTH_JWT_SECRET = settings.AUTH.JWT_SECRET
if USE_AUTH and not AUTH_JWT_SECRET:
print(
"\n ERROR: No JWT secret provided. Set the AUTH_JWT_SECRET environment variable.\n"
)
exit(1)
security = HTTPBearer(
auto_error=False,
)
@ -81,9 +72,9 @@ def create_admin_jwt() -> str:
def create_jwt(params: JWTParams) -> str:
"""Create a JWT token from the given parameters."""
payload = {k: v for k, v in params.__dict__.items() if v is not None}
if not AUTH_JWT_SECRET:
if not settings.AUTH.JWT_SECRET:
raise ValueError("AUTH_JWT_SECRET is not set, cannot create JWT.")
return jwt.encode(payload, AUTH_JWT_SECRET.encode("utf-8"), algorithm="HS256")
return jwt.encode(payload, settings.AUTH.JWT_SECRET.encode("utf-8"), algorithm="HS256")
async def verify_jwt(token: str) -> JWTParams:
@ -91,10 +82,10 @@ async def verify_jwt(token: str) -> JWTParams:
params = JWTParams()
try:
if not AUTH_JWT_SECRET:
if not settings.AUTH.JWT_SECRET:
raise ValueError("AUTH_JWT_SECRET is not set, cannot verify JWT.")
decoded = jwt.decode(
token, AUTH_JWT_SECRET.encode("utf-8"), algorithms=["HS256"]
token, settings.AUTH.JWT_SECRET.encode("utf-8"), algorithms=["HS256"]
)
if "t" in decoded:
params.t = decoded["t"]
@ -180,7 +171,7 @@ async def auth(
collection_id: Optional[str] = None,
) -> JWTParams:
"""Authenticate the given JWT and return the decoded parameters."""
if not USE_AUTH:
if not settings.AUTH.USE_AUTH:
return JWTParams(t="", ad=True)
if not credentials or not credentials.credentials:
logger.warning("No access token provided")

View File

@ -54,9 +54,8 @@ CONNECTION_URI = make_url(DB_URI)
TEST_DB_URL = CONNECTION_URI.set(database="test_db")
DEFAULT_DB_URL = str(CONNECTION_URI.set(database="postgres"))
# Test API authorization
USE_AUTH = settings.AUTH.USE_AUTH
AUTH_JWT_SECRET = settings.AUTH.JWT_SECRET or "test-secret"
# Test API authorization - no longer needed as module-level constants
# We'll use settings.AUTH directly where needed
def create_test_database(db_url):
@ -157,7 +156,7 @@ async def client(db_session):
app.dependency_overrides[get_db] = override_get_db
with TestClient(app) as c:
if USE_AUTH:
if settings.AUTH.USE_AUTH:
# give the test client the admin JWT
c.headers["Authorization"] = f"Bearer {create_admin_jwt()}"
yield c
@ -181,11 +180,7 @@ def auth_client(client, request, monkeypatch):
Always ensures USE_AUTH is set to True.
"""
# Ensure USE_AUTH is always True for this fixture
import src.routers.keys as keys_module
import src.security as security
monkeypatch.setattr(keys_module, "USE_AUTH", "true")
monkeypatch.setattr(security, "USE_AUTH", "true")
monkeypatch.setattr(settings.AUTH, "USE_AUTH", True)
# Clear any existing Authorization header
client.headers.pop("Authorization", None)