aboutsummaryrefslogtreecommitdiff
path: root/tests/fake-model.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/fake-model.py')
-rwxr-xr-xtests/fake-model.py11
1 files changed, 10 insertions, 1 deletions
diff --git a/tests/fake-model.py b/tests/fake-model.py
index a02b98c..98a61db 100755
--- a/tests/fake-model.py
+++ b/tests/fake-model.py
@@ -1,7 +1,8 @@
#!/usr/bin/env python3
"""A fake OpenAI-compatible model for tests/pi-live.sh: streams a short reply
to /v1/chat/completions, after a delay taken from the last user message
-("slow 3" waits 3 seconds). Prints its port, then serves until killed."""
+("slow 3" waits 3 seconds), or fails as a provider does ("fail 401": an
+authentication error). Prints its port, then serves until killed."""
import json
import re
import sys
@@ -34,6 +35,14 @@ class Handler(BaseHTTPRequestHandler):
text = last_user_text(body)
match = re.search(r"slow (\d+(?:\.\d+)?)", text)
time.sleep(float(match.group(1)) if match else 0.2)
+ failure = re.search(r"fail (\d{3})", text)
+ if failure:
+ error = json.dumps({"type": "error", "error": {"type": "authentication_error", "message": "invalid x-api-key"}})
+ self.send_response(int(failure.group(1)))
+ self.send_header("Content-Type", "application/json")
+ self.end_headers()
+ self.wfile.write(error.encode())
+ return
self.send_response(200)
self.send_header("Content-Type", "text/event-stream")
self.send_header("Cache-Control", "no-cache")