test: add integration smoke test script

This commit is contained in:
2026-06-05 23:38:03 +07:00
parent 68e6c8c46e
commit 732ca01cc7
+79
View File
@@ -0,0 +1,79 @@
#!/usr/bin/env bash
set -euo pipefail
BASE_URL="${PROXY_URL:-http://localhost:8080}"
API_KEY="${UPSTREAM_API_KEY:-test-key}"
echo "=== Smoke testing openai-proxy at $BASE_URL ==="
echo ""
echo "1. GET /health"
HEALTH=$(curl -sf "$BASE_URL/health")
echo " Response: $HEALTH"
echo "$HEALTH" | grep -q '"ok"' && echo " PASS" || { echo " FAIL"; exit 1; }
echo ""
echo "2. POST /v1/chat/completions (non-streaming)"
RESP=$(curl -sf "$BASE_URL/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $API_KEY" \
-d '{
"model": "gpt-4o-mini",
"messages": [
{"role": "system", "content": "You are a concise assistant."},
{"role": "user", "content": "Reply with exactly: pong"}
],
"max_tokens": 10
}')
echo " Response: $RESP"
echo "$RESP" | grep -q '"choices"' && echo " PASS" || { echo " FAIL"; exit 1; }
echo ""
echo "3. POST /v1/chat/completions (streaming)"
STREAM_RESP=$(curl -sf "$BASE_URL/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $API_KEY" \
-d '{
"model": "gpt-4o-mini",
"messages": [{"role": "user", "content": "Say hi"}],
"stream": true,
"max_tokens": 10
}')
echo " First bytes: $(echo "$STREAM_RESP" | head -c 100)"
echo "$STREAM_RESP" | grep -q 'data:' && echo " PASS" || { echo " FAIL"; exit 1; }
echo ""
echo "4. GET /v1/models"
MODELS=$(curl -sf "$BASE_URL/v1/models" \
-H "Authorization: Bearer $API_KEY")
echo " Response (first 200 chars): $(echo "$MODELS" | head -c 200)"
echo "$MODELS" | grep -q '"data"' && echo " PASS" || { echo " FAIL"; exit 1; }
echo ""
echo "5. POST /v1/chat/completions (with tools)"
TOOL_RESP=$(curl -sf "$BASE_URL/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $API_KEY" \
-d '{
"model": "gpt-4o-mini",
"messages": [{"role": "user", "content": "What is the weather in NYC?"}],
"tools": [{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get current weather",
"parameters": {
"type": "object",
"properties": {"city": {"type": "string"}},
"required": ["city"]
}
}
}],
"tool_choice": "auto",
"max_tokens": 100
}')
echo " Response: $(echo "$TOOL_RESP" | head -c 300)"
echo "$TOOL_RESP" | grep -q '"choices"' && echo " PASS" || { echo " FAIL"; exit 1; }
echo ""
echo "=== All smoke tests PASSED ==="