62 lines
1.6 KiB
Bash
62 lines
1.6 KiB
Bash
#!/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!"
|