Improve error handling and reporting for auth / invalid model / invalid summary level

This commit is contained in:
gabrii
2025-09-25 12:17:37 +02:00
parent f5796469b3
commit fe505d8846
7 changed files with 96 additions and 11 deletions
+7 -2
View File
@@ -101,8 +101,13 @@ class ReplyBase:
def assert_upstream_request(self, mock: Any) -> None:
"""Assert upstream request matches the recorded upstream request."""
expected_upstream_request_json = json.loads(self.expected_upstream_request_body)
assert mock.last_request.json() == expected_upstream_request_json
if self.expected_upstream_request_body:
expected_upstream_request_json = json.loads(
self.expected_upstream_request_body
)
assert mock.last_request.json() == expected_upstream_request_json
else:
assert mock.last_request is None
def assert_downstream_response(self, response) -> None:
"""Assert downstream response matches the recorded downstream response."""
+39
View File
@@ -0,0 +1,39 @@
"""Functional tests using WebTest.
See: http://webtest.readthedocs.org/
"""
from .replay_base import ReplyBase
class TestBadSummaryLevel(ReplyBase):
"""Test a single ping-pong interaction, no tool calls."""
expected_upstream_request_body = None
expected_downstream_status_code = 400
expected_downstream_response_body = b"""Service configuration error, check your .env file.
\tAZURE_SUMMARY_LEVEL must be either auto, detailed, or concise.
\t
\tGot: foo"""
def modify_settings(self, app) -> None:
"""Set invalid summary level in settings."""
app.config["AZURE_SUMMARY_LEVEL"] = "foo"
class TestBadModelName(ReplyBase):
"""Test a single ping-pong interaction, no tool calls."""
expected_upstream_request_body = None
expected_downstream_status_code = 400
expected_downstream_response_body = b"""Cursor configuration error, check your Cursor settings.
\tModel name must be either gpt-high, gpt-medium, gpt-low, or gpt-minimal.
\t
\tGot: foo-minimal"""
@property
def downstream_request_body(self) -> str:
"""Set invalid model name in request body."""
return super().downstream_request_body.replace("gpt-", "foo-")
+3 -3
View File
@@ -8,11 +8,11 @@ class TestModels:
"""Models."""
def test_models_endpoint_returns_400(self, testapp):
"""Ensure /models endpoint returns HTTP 400."""
"""Ensure /models endpoint returns HTTP 400 wihtout auth."""
testapp.get("/models", status=400)
def test_models_endpoint_returns_200(self, testapp):
"""Ensure /models endpoint returns HTTP 400."""
"""Ensure /models endpoint returns HTTP 400 with auth."""
response = testapp.get(
"/models",
status=200,
@@ -25,5 +25,5 @@ class TestModels:
assert '"gpt-minimal"' in content
def test_health_endpoint_returns_200(self, testapp):
"""Ensure /health endpoint returns HTTP 200."""
"""Ensure /health endpoint returns HTTP 200 without auth."""
testapp.get("/health", status=200)