diff --git a/src/edge_proxy/main.py b/src/edge_proxy/main.py index 4e48e36..63d61b4 100644 --- a/src/edge_proxy/main.py +++ b/src/edge_proxy/main.py @@ -9,6 +9,7 @@ def serve(): "edge_proxy.server:app", host=str(settings.server.host), port=settings.server.port, + proxy_headers=settings.server.proxy_headers, reload=settings.server.reload, use_colors=settings.logging.colours, ) diff --git a/src/edge_proxy/settings.py b/src/edge_proxy/settings.py index d4e2b90..2c5dfdd 100644 --- a/src/edge_proxy/settings.py +++ b/src/edge_proxy/settings.py @@ -96,6 +96,7 @@ class ServerSettings(BaseModel): host: IPvAnyAddress = "0.0.0.0" port: int = 8000 reload: bool = False + proxy_headers: bool = False class HealthCheckSettings(BaseModel): diff --git a/tests/test_server.py b/tests/test_server.py index 4791b7d..55c4c0b 100644 --- a/tests/test_server.py +++ b/tests/test_server.py @@ -4,6 +4,7 @@ from fastapi.testclient import TestClient from pytest_mock import MockerFixture +from edge_proxy.main import serve from tests.fixtures.response_data import environment_1 if typing.TYPE_CHECKING: @@ -217,3 +218,18 @@ def test_get_identities( assert response.status_code == 200 assert data["traits"] == [] assert data["flags"] + + +def test_serve_passes_proxy_headers_setting(mocker: MockerFixture) -> None: + # Given + mock_settings = mocker.patch("edge_proxy.main.get_settings") + mock_settings.return_value.server.proxy_headers = True + + mock_uvicorn = mocker.patch("edge_proxy.main.uvicorn.run") + + # When + serve() + + # Then + _, kwargs = mock_uvicorn.call_args + assert kwargs.get("proxy_headers") is True