test: legg til smoke-test.sh for light/heavy/legacy/DAG/state/unauthorized
This commit is contained in:
parent
3e515bf86f
commit
216fcc5bd4
114
scripts/smoke-test.sh
Normal file
114
scripts/smoke-test.sh
Normal file
|
|
@ -0,0 +1,114 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
# smoke-test.sh — OSVauco OPAX røyktest
|
||||||
|
# Kjør fra Cloud Shell etter deploy:
|
||||||
|
# bash scripts/smoke-test.sh
|
||||||
|
#
|
||||||
|
# Forutsetning: gcloud-innlogget med tilgang til prosjektet.
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
URL="${OPAX_URL:-https://osvauco-agent-357036551735.europe-west1.run.app}"
|
||||||
|
TOKEN=$(gcloud auth print-identity-token)
|
||||||
|
H_AUTH="Authorization: Bearer $TOKEN"
|
||||||
|
H_JSON="Content-Type: application/json"
|
||||||
|
|
||||||
|
PASS=0
|
||||||
|
FAIL=0
|
||||||
|
|
||||||
|
check() {
|
||||||
|
local label="$1"
|
||||||
|
local expected_http="$2"
|
||||||
|
local body="$3"
|
||||||
|
local endpoint="$4"
|
||||||
|
|
||||||
|
http_code=$(curl -s -o /tmp/smoke_resp.json -w "%{http_code}" \
|
||||||
|
-X POST \
|
||||||
|
-H "$H_AUTH" \
|
||||||
|
-H "$H_JSON" \
|
||||||
|
-d "$body" \
|
||||||
|
"${URL}${endpoint}")
|
||||||
|
|
||||||
|
resp=$(cat /tmp/smoke_resp.json)
|
||||||
|
|
||||||
|
if [[ "$http_code" == "$expected_http" ]]; then
|
||||||
|
echo "✅ [$http_code] $label"
|
||||||
|
echo " └ $(echo "$resp" | head -c 120)"
|
||||||
|
PASS=$((PASS+1))
|
||||||
|
else
|
||||||
|
echo "❌ [$http_code] $label (forventet $expected_http)"
|
||||||
|
echo " └ $resp"
|
||||||
|
FAIL=$((FAIL+1))
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
check_get() {
|
||||||
|
local label="$1"
|
||||||
|
local expected_http="$2"
|
||||||
|
local endpoint="$3"
|
||||||
|
|
||||||
|
http_code=$(curl -s -o /tmp/smoke_resp.json -w "%{http_code}" \
|
||||||
|
-H "$H_AUTH" \
|
||||||
|
"${URL}${endpoint}")
|
||||||
|
|
||||||
|
resp=$(cat /tmp/smoke_resp.json)
|
||||||
|
|
||||||
|
if [[ "$http_code" == "$expected_http" ]]; then
|
||||||
|
echo "✅ [$http_code] $label"
|
||||||
|
echo " └ $(echo "$resp" | head -c 120)"
|
||||||
|
PASS=$((PASS+1))
|
||||||
|
else
|
||||||
|
echo "❌ [$http_code] $label (forventet $expected_http)"
|
||||||
|
echo " └ $resp"
|
||||||
|
FAIL=$((FAIL+1))
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "======================================"
|
||||||
|
echo " OSVauco OPAX RØYKTEST"
|
||||||
|
echo " URL: $URL"
|
||||||
|
echo "======================================"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# 1. Health
|
||||||
|
check_get "GET /health" 200 "/health"
|
||||||
|
|
||||||
|
# 2. Light mode
|
||||||
|
check "POST /run light" 200 \
|
||||||
|
'{"message": "Hva er OPAX?", "user_id": "opax", "mode": "light"}' "/run"
|
||||||
|
|
||||||
|
# 3. Heavy mode (autorisert)
|
||||||
|
check "POST /run heavy (autorisert)" 200 \
|
||||||
|
'{"message": "Hva gjør heavy mode?", "user_id": "opax", "mode": "heavy"}' "/run"
|
||||||
|
|
||||||
|
# 4. Legacy A → normalisert til light
|
||||||
|
check "POST /run legacy A (bakoverkompatibel)" 200 \
|
||||||
|
'{"message": "Test legacy mode", "user_id": "opax", "mode": "A"}' "/run"
|
||||||
|
|
||||||
|
# 5. Legacy A+ → normalisert til heavy
|
||||||
|
check "POST /run legacy A+ (bakoverkompatibel)" 200 \
|
||||||
|
'{"message": "Test legacy A+", "user_id": "opax", "mode": "A+"}' "/run"
|
||||||
|
|
||||||
|
# 6. Ugyldig mode → 400
|
||||||
|
check "POST /run ugyldig mode → 400" 400 \
|
||||||
|
'{"message": "Test ugyldig", "user_id": "opax", "mode": "turbo"}' "/run"
|
||||||
|
|
||||||
|
# 7. Uautorisert bruker heavy → 403
|
||||||
|
check "POST /run heavy uautorisert → 403" 403 \
|
||||||
|
'{"message": "Hemmelig", "user_id": "guest", "mode": "heavy"}' "/run"
|
||||||
|
|
||||||
|
# 8. DAG parallell
|
||||||
|
check "POST /run/dag (2 meldinger parallelt)" 200 \
|
||||||
|
'{"messages": ["Hva er OSVauco?", "Hva koster light mode?"], "user_id": "opax", "mode": "light"}' "/run/dag"
|
||||||
|
|
||||||
|
# 9. State snapshot
|
||||||
|
check_get "GET /state" 200 "/state"
|
||||||
|
|
||||||
|
# 10. Telemetri-historikk
|
||||||
|
check_get "GET /telemetry/history" 200 "/telemetry/history?limit=5"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "======================================"
|
||||||
|
echo " RESULTAT: ✅ $PASS bestod | ❌ $FAIL feilet"
|
||||||
|
echo "======================================"
|
||||||
|
|
||||||
|
[[ $FAIL -eq 0 ]] && exit 0 || exit 1
|
||||||
Loading…
Reference in New Issue
Block a user