rebuild(stage-1): establish isolated application skeleton
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
from fastapi.testclient import TestClient
|
||||
|
||||
from backend.bootstrap.application import create_application
|
||||
from backend.bootstrap.settings import Settings
|
||||
|
||||
|
||||
def test_health_reports_runtime_environment(tmp_path) -> None:
|
||||
application = create_application(
|
||||
Settings(environment="test", debug=False, data_directory=tmp_path)
|
||||
)
|
||||
|
||||
with TestClient(application) as client:
|
||||
response = client.get("/api/health")
|
||||
|
||||
assert response.status_code == 200
|
||||
assert response.json() == {"status": "ok", "environment": "test"}
|
||||
|
||||
|
||||
def test_unknown_failure_uses_safe_error_contract(tmp_path) -> None:
|
||||
application = create_application(
|
||||
Settings(environment="test", debug=False, data_directory=tmp_path)
|
||||
)
|
||||
|
||||
@application.get("/api/test/failure")
|
||||
def fail() -> None:
|
||||
raise RuntimeError("secret provider details")
|
||||
|
||||
with TestClient(application, raise_server_exceptions=False) as client:
|
||||
response = client.get("/api/test/failure")
|
||||
|
||||
payload = response.json()["error"]
|
||||
assert response.status_code == 500
|
||||
assert payload["code"] == "internal_error"
|
||||
assert payload["message"] == "服务暂时不可用,请稍后重试。"
|
||||
assert "secret provider details" not in response.text
|
||||
assert len(payload["correlation_id"]) == 32
|
||||
Reference in New Issue
Block a user