veza/scripts/lab/test_auth.sh

63 lines
1.6 KiB
Bash
Raw Normal View History

#!/bin/bash
set -euo pipefail
# scripts/lab/test_auth.sh
API_URL="http://localhost:8080/api/v1"
EMAIL="test_auth_$(date +%s)@example.com"
PASSWORD="Password123!"
echo ">>> Testing Auth API..."
echo "Target: $API_URL"
echo "User: $EMAIL"
# 1. Register
echo -n "1. Registering... "
REGISTER_RES=$(curl -s -X POST "$API_URL/auth/register" \
-H "Content-Type: application/json" \
-d "{\"email\": \"$EMAIL\", \"password\": \"$PASSWORD\", \"username\": \"user_$(date +%s)\"}")
if echo "$REGISTER_RES" | grep -q "id"; then
echo "OK"
else
echo "FAIL"
echo "Response: $REGISTER_RES"
exit 1
fi
# 1.5 Manually Verify User (Bypass Email)
echo -n "1.5 Verifying User via DB... "
docker compose -f infra/docker-compose.lab.yml exec -T postgres psql -U veza -d veza_lab -c "UPDATE users SET is_verified=true WHERE email='$EMAIL';" > /dev/null 2>&1
echo "OK"
# 2. Login
echo -n "2. Logging in... "
LOGIN_RES=$(curl -s -X POST "$API_URL/auth/login" \
-H "Content-Type: application/json" \
-d "{\"email\": \"$EMAIL\", \"password\": \"$PASSWORD\"}")
if echo "$LOGIN_RES" | grep -q "access_token"; then
echo "OK"
TOKEN=$(echo "$LOGIN_RES" | grep -o '"access_token":"[^"]*' | cut -d'"' -f4)
echo "Token received: ${TOKEN:0:10}..."
else
echo "FAIL"
echo "Response: $LOGIN_RES"
exit 1
fi
# 3. Access Protected Route (Me)
echo -n "3. Accessing /auth/me... "
ME_RES=$(curl -s -X GET "$API_URL/auth/me" \
-H "Authorization: Bearer $TOKEN")
if echo "$ME_RES" | grep -q "$EMAIL"; then
echo "OK"
else
echo "FAIL"
echo "Response: $ME_RES"
exit 1
fi
echo "✅ Auth API Verification Passed!"