fix: respect root_path in FastAPI docs
This commit is contained in:
@@ -51,6 +51,7 @@ class Settings(BaseSettings):
|
|||||||
loki_port: int = Field(default=3100, validation_alias="LOKI_PORT")
|
loki_port: int = Field(default=3100, validation_alias="LOKI_PORT")
|
||||||
loki_enabled: bool = Field(default=False, validation_alias="LOKI_ENABLED")
|
loki_enabled: bool = Field(default=False, validation_alias="LOKI_ENABLED")
|
||||||
credential_encryption_key: str = Field(default="", validation_alias="CREDENTIAL_ENCRYPTION_KEY")
|
credential_encryption_key: str = Field(default="", validation_alias="CREDENTIAL_ENCRYPTION_KEY")
|
||||||
|
root_path: str = Field(default="", validation_alias="PORTFOLIOHUB_ROOT_PATH")
|
||||||
|
|
||||||
model_config = SettingsConfigDict(
|
model_config = SettingsConfigDict(
|
||||||
env_prefix="PORTFOLIOHUB_",
|
env_prefix="PORTFOLIOHUB_",
|
||||||
|
|||||||
@@ -63,6 +63,7 @@ def create_app(
|
|||||||
version=settings.app_version,
|
version=settings.app_version,
|
||||||
docs_url="/docs",
|
docs_url="/docs",
|
||||||
redoc_url="/redoc",
|
redoc_url="/redoc",
|
||||||
|
root_path=settings.root_path,
|
||||||
lifespan=lifespan,
|
lifespan=lifespan,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
from fastapi.testclient import TestClient
|
||||||
|
|
||||||
|
from app.main import create_app
|
||||||
|
from app.core.config import Settings
|
||||||
|
|
||||||
|
|
||||||
|
def test_docs_uses_root_path_for_openapi_url() -> None:
|
||||||
|
app = create_app(settings_factory=lambda: Settings(root_path="/portfolio-hub"))
|
||||||
|
|
||||||
|
with TestClient(app) as client:
|
||||||
|
response = client.get("/docs")
|
||||||
|
|
||||||
|
assert response.status_code == 200
|
||||||
|
assert "url: '/portfolio-hub/openapi.json'" in response.text
|
||||||
|
|
||||||
|
|
||||||
|
def test_openapi_is_served_under_root_path() -> None:
|
||||||
|
app = create_app(settings_factory=lambda: Settings(root_path="/portfolio-hub"))
|
||||||
|
|
||||||
|
with TestClient(app) as client:
|
||||||
|
response = client.get("/portfolio-hub/openapi.json")
|
||||||
|
|
||||||
|
assert response.status_code == 200
|
||||||
|
assert response.json()["info"]["title"] == "PortfolioHub"
|
||||||
Reference in New Issue
Block a user