This commit is contained in:
79
tests/test_emergency_auth.sh
Executable file
79
tests/test_emergency_auth.sh
Executable 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"
|
||||
Reference in New Issue
Block a user