mirror of
https://github.com/imartinez/privateGPT.git
synced 2025-07-07 04:18:47 +00:00
* Add simple Basic auth To enable the basic authentication, one must set `server.auth.enabled` to true. The static string defined in `server.auth.secret` must be set in the header `Authorization`. The health check endpoint will always be accessible, no matter the API auth configuration. * Fix linting and type check * Fighting with mypy being too restrictive Had to disable mypy in the `auth` as we are not using the same signature for the authenticated method. mypy was complaining that the signatures of `authenticated` must be identical, no matter in which logical branch we are. Given that fastapi is accomodating itself of method signatures (it will inject the dependencies in the method call), this warning of mypy is actually preventing us to do something legit. mypy doc: https://mypy.readthedocs.io/en/stable/common_issues.html * Write tests to verify that the simple auth is working
37 lines
1.3 KiB
Python
37 lines
1.3 KiB
Python
import tempfile
|
|
from pathlib import Path
|
|
|
|
from fastapi.testclient import TestClient
|
|
|
|
from tests.fixtures.ingest_helper import IngestHelper
|
|
|
|
|
|
def test_ingest_accepts_txt_files(ingest_helper: IngestHelper) -> None:
|
|
path = Path(__file__).parents[0] / "test.txt"
|
|
ingest_result = ingest_helper.ingest_file(path)
|
|
assert len(ingest_result.data) == 1
|
|
|
|
|
|
def test_ingest_accepts_pdf_files(ingest_helper: IngestHelper) -> None:
|
|
path = Path(__file__).parents[0] / "test.pdf"
|
|
ingest_result = ingest_helper.ingest_file(path)
|
|
assert len(ingest_result.data) == 1
|
|
|
|
|
|
def test_ingest_list_returns_something_after_ingestion(
|
|
test_client: TestClient, ingest_helper: IngestHelper
|
|
) -> None:
|
|
response_before = test_client.get("/v1/ingest/list")
|
|
count_ingest_before = len(response_before.json()["data"])
|
|
with tempfile.NamedTemporaryFile("w", suffix=".txt") as test_file:
|
|
test_file.write("Foo bar; hello there!")
|
|
test_file.flush()
|
|
test_file.seek(0)
|
|
ingest_result = ingest_helper.ingest_file(Path(test_file.name))
|
|
assert len(ingest_result.data) == 1, "The temp doc should have been ingested"
|
|
response_after = test_client.get("/v1/ingest/list")
|
|
count_ingest_after = len(response_after.json()["data"])
|
|
assert (
|
|
count_ingest_after == count_ingest_before + 1
|
|
), "The temp doc should be returned"
|