#!/bin/bash # 用户管理 API 测试脚本 BASE_URL="http://localhost:8787" TOKEN="" echo "===================================" echo "用户管理 API 测试" echo "===================================" echo "" # 1. 检查系统状态 echo "1. 检查系统状态..." STATUS=$(curl -s "${BASE_URL}/api/auth/status") echo "响应: $STATUS" echo "" # 2. Setup 初始管理员(如果需要) NEEDS_SETUP=$(echo "$STATUS" | grep -o '"needs_setup":true' | wc -l) if [ "$NEEDS_SETUP" -gt 0 ]; then echo "2. 创建初始管理员账号..." SETUP_RESULT=$(curl -s -X POST "${BASE_URL}/api/auth/setup" \ -H "Content-Type: application/json" \ -d '{ "username": "admin", "password": "Admin123456!" }') echo "响应: $SETUP_RESULT" TOKEN=$(echo "$SETUP_RESULT" | grep -o '"token":"[^"]*"' | cut -d'"' -f4) echo "Token: $TOKEN" echo "" else echo "2. 系统已初始化,使用 admin 登录..." LOGIN_RESULT=$(curl -s -X POST "${BASE_URL}/login" \ -H "Content-Type: application/json" \ -d '{ "username": "admin", "password": "Admin123456!" }') echo "响应: $LOGIN_RESULT" TOKEN=$(echo "$LOGIN_RESULT" | grep -o '"token":"[^"]*"' | cut -d'"' -f4) echo "Token: $TOKEN" echo "" fi if [ -z "$TOKEN" ]; then echo "错误: 未能获取 token,测试终止" exit 1 fi # 3. 列出所有用户 echo "3. 列出所有用户 (GET /api/users)..." USERS=$(curl -s -X GET "${BASE_URL}/api/users" \ -H "Authorization: Bearer $TOKEN") echo "响应: $USERS" echo "" # 4. 创建新用户 echo "4. 创建新用户 (POST /api/users)..." CREATE_RESULT=$(curl -s -X POST "${BASE_URL}/api/users" \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{ "username": "testuser", "password": "Test123456!", "role": "user" }') echo "响应: $CREATE_RESULT" USER_ID=$(echo "$CREATE_RESULT" | grep -o '"id":"[^"]*"' | head -1 | cut -d'"' -f4) echo "新用户ID: $USER_ID" echo "" # 5. 获取单个用户 if [ -n "$USER_ID" ]; then echo "5. 获取用户详情 (GET /api/users/$USER_ID)..." USER_DETAIL=$(curl -s -X GET "${BASE_URL}/api/users/${USER_ID}" \ -H "Authorization: Bearer $TOKEN") echo "响应: $USER_DETAIL" echo "" fi # 6. 更新用户 if [ -n "$USER_ID" ]; then echo "6. 更新用户角色为 admin (PUT /api/users/$USER_ID)..." UPDATE_RESULT=$(curl -s -X PUT "${BASE_URL}/api/users/${USER_ID}" \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{ "role": "admin" }') echo "响应: $UPDATE_RESULT" echo "" fi # 7. 再次列出所有用户,验证更新 echo "7. 再次列出所有用户,验证更新..." USERS=$(curl -s -X GET "${BASE_URL}/api/users" \ -H "Authorization: Bearer $TOKEN") echo "响应: $USERS" echo "" # 8. 删除用户 if [ -n "$USER_ID" ]; then echo "8. 删除测试用户 (DELETE /api/users/$USER_ID)..." DELETE_RESULT=$(curl -s -X DELETE "${BASE_URL}/api/users/${USER_ID}" \ -H "Authorization: Bearer $TOKEN") echo "响应: $DELETE_RESULT" echo "" fi # 9. 最终用户列表 echo "9. 最终用户列表..." USERS=$(curl -s -X GET "${BASE_URL}/api/users" \ -H "Authorization: Bearer $TOKEN") echo "响应: $USERS" echo "" echo "===================================" echo "测试完成" echo "==================================="