Improve error handling and reporting for auth / invalid model / invalid summary level
This commit is contained in:
@@ -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."""
|
||||
|
||||
@@ -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-")
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user