main functions commit
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2025-10-19 19:50:00 +09:00
parent ce72785184
commit 3050e084fa
39 changed files with 7149 additions and 186 deletions

79
tests/test_emergency_auth.sh Executable file
View File

@@ -0,0 +1,79 @@
#!/bin/bash
echo "🔐 Testing Emergency Service Authorization Documentation"
echo "=" $(printf "%0.s=" {1..60})
# Проверяем что эндпоинт требует авторизацию
echo "🚫 Testing unauthorized access..."
UNAUTHORIZED_RESPONSE=$(curl -s -X GET "http://localhost:8002/api/v1/stats")
echo "Response without token: $UNAUTHORIZED_RESPONSE"
if echo "$UNAUTHORIZED_RESPONSE" | grep -q "Not authenticated"; then
echo "✅ Correctly requires authentication"
else
echo "❌ Should require authentication but doesn't"
fi
echo ""
# Получаем токен и тестируем авторизованный доступ
echo "🔑 Testing authorized access..."
TOKEN=$(curl -s -X POST "http://localhost:8001/api/v1/auth/login" \
-H "Content-Type: application/json" \
-d '{"username": "testuser", "password": "testpass"}' | \
jq -r '.access_token')
if [ "$TOKEN" = "null" ] || [ -z "$TOKEN" ]; then
echo "❌ Failed to get authentication token"
exit 1
fi
echo "✅ Authentication token obtained: ${TOKEN:0:20}..."
# Тестируем авторизованный запрос
AUTHORIZED_RESPONSE=$(curl -s -X GET "http://localhost:8002/api/v1/stats" \
-H "Authorization: Bearer $TOKEN")
echo "Response with token:"
echo "$AUTHORIZED_RESPONSE" | jq '.'
if echo "$AUTHORIZED_RESPONSE" | grep -q "total_alerts"; then
echo "✅ Authorized access works correctly"
else
echo "❌ Authorized access failed"
fi
echo ""
# Проверяем OpenAPI схему
echo "📋 Checking OpenAPI security scheme..."
SECURITY_SCHEME=$(curl -s "http://localhost:8002/openapi.json" | jq '.components.securitySchemes')
echo "Security schemes:"
echo "$SECURITY_SCHEME" | jq '.'
if echo "$SECURITY_SCHEME" | grep -q "JWT Bearer Token"; then
echo "✅ JWT Bearer Token scheme is properly configured"
else
echo "❌ JWT Bearer Token scheme is missing"
fi
# Проверяем что эндпоинты требуют авторизацию в схеме
STATS_SECURITY=$(curl -s "http://localhost:8002/openapi.json" | jq '.paths."/api/v1/stats".get.security')
echo ""
echo "Stats endpoint security requirements:"
echo "$STATS_SECURITY" | jq '.'
if echo "$STATS_SECURITY" | grep -q "JWT Bearer Token"; then
echo "✅ Stats endpoint correctly shows JWT Bearer Token requirement"
else
echo "❌ Stats endpoint missing JWT Bearer Token requirement in schema"
fi
echo ""
echo "=" $(printf "%0.s=" {1..60})
echo "🎯 Authorization documentation test completed!"
echo ""
echo "📚 Documentation available at:"
echo " - Swagger UI: http://localhost:8002/docs"
echo " - ReDoc: http://localhost:8002/redoc"
echo " - OpenAPI JSON: http://localhost:8002/openapi.json"