Spaces:
Running
Running
| # Backend API verification script | |
| set -e | |
| BASE_URL=${BASE_URL:-http://localhost:3000} | |
| PASSWORD=${BASIC_AUTH_PASSWORD:-cz-2025} | |
| TEST_USER="backend_verify_$(date +%s)" | |
| echo "๐ Verifying backend APIs..." | |
| echo "Base URL: $BASE_URL" | |
| echo "" | |
| # 1. Health check | |
| echo "โ Testing /api/health" | |
| HEALTH=$(curl -s "$BASE_URL/api/health") | |
| echo "$HEALTH" | jq . | |
| if echo "$HEALTH" | jq -e '.status == "healthy"' > /dev/null; then | |
| echo "โ Health check passed" | |
| else | |
| echo "โ Health check failed" | |
| exit 1 | |
| fi | |
| echo "" | |
| # 2. Register user | |
| echo "โ Testing /api/auth/register" | |
| REGISTER=$(curl -s -X POST "$BASE_URL/api/auth/register" \ | |
| -H "Content-Type: application/json" \ | |
| -d "{\"username\":\"$TEST_USER\"}") | |
| echo "$REGISTER" | jq . | |
| USER_ID=$(echo "$REGISTER" | jq -r '.user.id') | |
| if [ -n "$USER_ID" ] && [ "$USER_ID" != "null" ]; then | |
| echo "โ User registered: $TEST_USER (ID: $USER_ID)" | |
| else | |
| echo "โ User registration failed" | |
| exit 1 | |
| fi | |
| echo "" | |
| # 3. Get personalities | |
| echo "โ Testing /api/personalities" | |
| PERSONALITIES=$(curl -s "$BASE_URL/api/personalities") | |
| echo "$PERSONALITIES" | jq . | |
| PERSONALITY_COUNT=$(echo "$PERSONALITIES" | jq '.personalities | length') | |
| if [ "$PERSONALITY_COUNT" -ge 3 ]; then | |
| echo "โ Personalities loaded: $PERSONALITY_COUNT types" | |
| else | |
| echo "โ Personalities endpoint failed" | |
| exit 1 | |
| fi | |
| echo "" | |
| # 4. Get coach types | |
| echo "โ Testing /api/coach/types" | |
| COACHES=$(curl -s "$BASE_URL/api/coach/types") | |
| echo "$COACHES" | jq . | |
| COACH_COUNT=$(echo "$COACHES" | jq '.coaches | length') | |
| if [ "$COACH_COUNT" -eq 3 ]; then | |
| echo "โ Coach types loaded: $COACH_COUNT coaches" | |
| else | |
| echo "โ Coach types endpoint failed" | |
| exit 1 | |
| fi | |
| echo "" | |
| # 5. Get conversations (with auth) | |
| echo "โ Testing /api/conversations (with auth)" | |
| AUTH_HEADER=$(echo -n "$TEST_USER:$PASSWORD" | base64) | |
| CONVERSATIONS=$(curl -s "$BASE_URL/api/conversations" \ | |
| -H "Authorization: Basic $AUTH_HEADER") | |
| echo "$CONVERSATIONS" | jq . | |
| CONV_COUNT=$(echo "$CONVERSATIONS" | jq '.conversations | length') | |
| if [ "$CONV_COUNT" -ge 0 ]; then | |
| echo "โ Conversations endpoint: $CONV_COUNT conversations" | |
| else | |
| echo "โ Conversations endpoint failed" | |
| exit 1 | |
| fi | |
| echo "" | |
| # 6. Create conversation | |
| echo "โ Testing /api/conversations/create" | |
| CREATE_CONV=$(curl -s -X POST "$BASE_URL/api/conversations/create" \ | |
| -H "Content-Type: application/json" \ | |
| -H "Authorization: Basic $AUTH_HEADER" \ | |
| -d '{"studentPromptId":"grade_3","coachPromptId":"balanced","include3ConversationSummary":false}') | |
| echo "$CREATE_CONV" | jq . | |
| CONV_ID=$(echo "$CREATE_CONV" | jq -r '.conversation.id') | |
| if [ -n "$CONV_ID" ] && [ "$CONV_ID" != "null" ]; then | |
| echo "โ Conversation created: $CONV_ID" | |
| else | |
| echo "โ Conversation creation failed" | |
| exit 1 | |
| fi | |
| echo "" | |
| # 7. Get conversation messages | |
| echo "โ Testing /api/conversations/$CONV_ID/messages" | |
| MESSAGES=$(curl -s "$BASE_URL/api/conversations/$CONV_ID/messages" \ | |
| -H "Authorization: Basic $AUTH_HEADER") | |
| echo "$MESSAGES" | jq . | |
| MSG_COUNT=$(echo "$MESSAGES" | jq '.messages | length') | |
| if [ "$MSG_COUNT" -ge 0 ]; then | |
| echo "โ Messages endpoint: $MSG_COUNT messages" | |
| else | |
| echo "โ Messages endpoint failed" | |
| exit 1 | |
| fi | |
| echo "" | |
| # 8. Create coach-direct conversation (for persistence test) | |
| echo "โ Testing coach-direct conversation creation" | |
| CREATE_COACH=$(curl -s -X POST "$BASE_URL/api/conversations/create" \ | |
| -H "Content-Type: application/json" \ | |
| -H "Authorization: Basic $AUTH_HEADER" \ | |
| -d '{"studentPromptId":"coach_direct","coachPromptId":"balanced","include3ConversationSummary":false,"title":"่ซฎ่ฉขๆ็ทด"}') | |
| echo "$CREATE_COACH" | jq . | |
| COACH_CONV_ID=$(echo "$CREATE_COACH" | jq -r '.conversation.id') | |
| if [ -n "$COACH_CONV_ID" ] && [ "$COACH_CONV_ID" != "null" ]; then | |
| echo "โ Coach-direct conversation created: $COACH_CONV_ID" | |
| else | |
| echo "โ Coach-direct conversation creation failed" | |
| exit 1 | |
| fi | |
| echo "" | |
| # 9. Verify coach conversation in list | |
| echo "โ Verifying coach conversation filtering" | |
| ALL_CONVS=$(curl -s "$BASE_URL/api/conversations" \ | |
| -H "Authorization: Basic $AUTH_HEADER") | |
| TOTAL_CONVS=$(echo "$ALL_CONVS" | jq '.conversations | length') | |
| COACH_DIRECT_COUNT=$(echo "$ALL_CONVS" | jq '[.conversations[] | select(.studentPromptId == "coach_direct")] | length') | |
| echo "Total conversations: $TOTAL_CONVS" | |
| echo "Coach-direct conversations: $COACH_DIRECT_COUNT" | |
| if [ "$COACH_DIRECT_COUNT" -ge 1 ]; then | |
| echo "โ Coach-direct conversation exists in list" | |
| else | |
| echo "โ Coach-direct conversation not found" | |
| exit 1 | |
| fi | |
| echo "" | |
| echo "โ โ โ All backend tests passed! โ โ โ " | |
| echo "" | |
| echo "Test user: $TEST_USER" | |
| echo "Test conversation: $CONV_ID" | |
| echo "Coach conversation: $COACH_CONV_ID" | |