@mytec: added smoke script
This commit is contained in:
100
scripts/rfcp-backend-smoke-test.sh
Normal file
100
scripts/rfcp-backend-smoke-test.sh
Normal file
@@ -0,0 +1,100 @@
|
||||
#!/bin/bash
|
||||
# RFCP Backend Smoke Test
|
||||
# Usage: ./rfcp-backend-smoke-test.sh [base_url]
|
||||
|
||||
BASE_URL="${1:-https://api.rfcp.eliah.one}"
|
||||
PASSED=0
|
||||
FAILED=0
|
||||
|
||||
# Colors
|
||||
GREEN='\033[0;32m'
|
||||
RED='\033[0;31m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m'
|
||||
|
||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
echo " RFCP Backend Smoke Test"
|
||||
echo " Target: $BASE_URL"
|
||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
echo ""
|
||||
|
||||
test_endpoint() {
|
||||
local name="$1"
|
||||
local method="$2"
|
||||
local endpoint="$3"
|
||||
local expected="$4"
|
||||
local data="$5"
|
||||
|
||||
if [ "$method" == "GET" ]; then
|
||||
response=$(curl -s "$BASE_URL$endpoint")
|
||||
else
|
||||
response=$(curl -s -X "$method" "$BASE_URL$endpoint" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "$data")
|
||||
fi
|
||||
|
||||
if echo "$response" | grep -q "$expected"; then
|
||||
echo -e "${GREEN}✓${NC} $name"
|
||||
((PASSED++))
|
||||
else
|
||||
echo -e "${RED}✗${NC} $name"
|
||||
echo " Expected: $expected"
|
||||
echo " Got: $response"
|
||||
((FAILED++))
|
||||
fi
|
||||
}
|
||||
|
||||
# 1. Root
|
||||
test_endpoint "Root endpoint" "GET" "/" "RFCP Backend API"
|
||||
|
||||
# 2. Health
|
||||
test_endpoint "Health check" "GET" "/api/health/" '"status":"ok"'
|
||||
|
||||
# 3. Database
|
||||
test_endpoint "Database connection" "GET" "/api/health/db" '"database":"connected"'
|
||||
|
||||
# 4. Get project (auto-creates)
|
||||
test_endpoint "Get global project" "GET" "/api/projects/current" '"name":"global"'
|
||||
|
||||
# 5. Get settings
|
||||
test_endpoint "Get coverage settings" "GET" "/api/projects/current/settings" '"radius"'
|
||||
|
||||
# 6. PUT sites
|
||||
test_endpoint "Update sites" "PUT" "/api/projects/current/sites" '"updated"' \
|
||||
'[{"id":"smoke-test","name":"Smoke Test Site","lat":48.5,"lon":35.0,"height":30,"power":43}]'
|
||||
|
||||
# 7. GET sites (verify write)
|
||||
test_endpoint "Verify sites saved" "GET" "/api/projects/current/sites" "Smoke Test Site"
|
||||
|
||||
# 8. PUT settings
|
||||
test_endpoint "Update settings" "PUT" "/api/projects/current/settings" '"radius":15000' \
|
||||
'{"radius":15000,"resolution":200,"min_signal":-105,"max_signal":-65}'
|
||||
|
||||
# 9. Swagger docs
|
||||
swagger_response=$(curl -s -o /dev/null -w "%{http_code}" "$BASE_URL/docs")
|
||||
if [ "$swagger_response" == "200" ]; then
|
||||
echo -e "${GREEN}✓${NC} Swagger UI accessible"
|
||||
((PASSED++))
|
||||
else
|
||||
echo -e "${RED}✗${NC} Swagger UI (HTTP $swagger_response)"
|
||||
((FAILED++))
|
||||
fi
|
||||
|
||||
# 10. OpenAPI schema
|
||||
test_endpoint "OpenAPI schema" "GET" "/openapi.json" '"openapi"'
|
||||
|
||||
# Cleanup - restore default settings
|
||||
curl -s -X PUT "$BASE_URL/api/projects/current/settings" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"radius":10000,"resolution":200,"min_signal":-105,"max_signal":-65}' > /dev/null
|
||||
|
||||
echo ""
|
||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
if [ $FAILED -eq 0 ]; then
|
||||
echo -e " ${GREEN}All tests passed!${NC} ($PASSED/$((PASSED+FAILED)))"
|
||||
else
|
||||
echo -e " ${YELLOW}Results:${NC} ${GREEN}$PASSED passed${NC}, ${RED}$FAILED failed${NC}"
|
||||
fi
|
||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
|
||||
exit $FAILED
|
||||
Reference in New Issue
Block a user