Spaces:
Runtime error
Runtime error
"""Tests to validate that the simple authentication mechanism is working. | |
NOTE: We are not testing the switch based on the config in | |
`private_gpt.server.utils.auth`. This is not done because of the way the code | |
is currently architecture (it is hard to patch the `settings` and the app while | |
the tests are directly importing them). | |
""" | |
from typing import Annotated | |
import pytest | |
from fastapi import Depends | |
from fastapi.testclient import TestClient | |
from private_gpt.server.utils.auth import ( | |
NOT_AUTHENTICATED, | |
_simple_authentication, | |
authenticated, | |
) | |
from private_gpt.settings.settings import settings | |
def _copy_simple_authenticated( | |
_simple_authentication: Annotated[bool, Depends(_simple_authentication)] | |
) -> bool: | |
"""Check if the request is authenticated.""" | |
if not _simple_authentication: | |
raise NOT_AUTHENTICATED | |
return True | |
def _patch_authenticated_dependency(test_client: TestClient): | |
# Patch the server to use simple authentication | |
test_client.app.dependency_overrides[authenticated] = _copy_simple_authenticated | |
# Call the actual test | |
yield | |
# Remove the patch for other tests | |
test_client.app.dependency_overrides = {} | |
def test_default_auth_working_when_enabled_401(test_client: TestClient) -> None: | |
response = test_client.get("/v1/ingest/list") | |
assert response.status_code == 401 | |
def test_default_auth_working_when_enabled_200(test_client: TestClient) -> None: | |
response_fail = test_client.get("/v1/ingest/list") | |
assert response_fail.status_code == 401 | |
response_success = test_client.get( | |
"/v1/ingest/list", headers={"Authorization": settings().server.auth.secret} | |
) | |
assert response_success.status_code == 200 | |