#!/bin/bash BASE_URL="http://localhost:8888/api/v1" MODULE="user" TIMESTAMP=$(date +%s) log_step() { echo -e "\n\033[36m--- Step $1: $2 ---\033[0m" } log_success() { echo -e "\033[32m[SUCCESS]\033[0m $1" } log_error() { echo -e "\033[31m[ERROR]\033[0m $1" } extract_value() { echo "$1" | grep -o "\"$2\":\"[^\"]*\"" | sed 's/"'"$2'""://' | sed 's/^"//' | sed 's/"$//' } extract_int() { echo "$1" | grep -o "\"$2\":[^,}]*" | sed 's/"'"$2'"://' | tr -d ' ' } AUTH_TOKEN="" log_step "0" "Register admin" REGISTER_RESULT=$(curl -s -X POST ${BASE_URL}/register -H "Content-Type: application/json" -d "{\"username\":\"admin${TIMESTAMP}\",\"email\":\"admin${TIMESTAMP}@example.com\",\"password\":\"password123\",\"phone\":\"13800138000\"}") log_success "Register success" echo "$REGISTER_RESULT" log_step "0.1" "Admin login" LOGIN_RESULT=$(curl -s -X POST ${BASE_URL}/login -H "Content-Type: application/json" -d "{\"email\":\"admin${TIMESTAMP}@example.com\",\"password\":\"password123\"}") AUTH_TOKEN=$(extract_value "$LOGIN_RESULT" "token") LOGIN_CODE=$(extract_int "$LOGIN_RESULT" "code") if [ "$LOGIN_CODE" != "200" ] || [ -z "$AUTH_TOKEN" ]; then log_error "Login failed" echo "$LOGIN_RESULT" exit 1 fi log_success "Login success" echo "$LOGIN_RESULT" log_step "1" "Create user" CREATE_RESULT=$(curl -s -X POST ${BASE_URL}/${MODULE} -H "Content-Type: application/json" -H "Authorization: Bearer ${AUTH_TOKEN}" -d "{\"username\":\"testuser${TIMESTAMP}\",\"email\":\"test${TIMESTAMP}@example.com\",\"password\":\"password123\",\"phone\":\"13800138000\"}") ID=$(extract_int "$CREATE_RESULT" "id") if [ -z "$ID" ]; then log_error "Create failed" echo "$CREATE_RESULT" exit 1 fi log_success "Create success, ID: $ID" echo "$CREATE_RESULT" log_step "2" "Query user" QUERY_RESULT=$(curl -s -X GET ${BASE_URL}/${MODULE}/${ID} -H "Authorization: Bearer ${AUTH_TOKEN}") QUERY_ID=$(extract_int "$QUERY_RESULT" "id") if [ "$QUERY_ID" != "$ID" ]; then log_error "Query failed" echo "$QUERY_RESULT" exit 1 fi log_success "Query success" echo "$QUERY_RESULT" log_step "3" "Update user" UPDATE_RESULT=$(curl -s -X PUT ${BASE_URL}/${MODULE}/${ID} -H "Content-Type: application/json" -H "Authorization: Bearer ${AUTH_TOKEN}" -d "{\"username\":\"testuser${TIMESTAMP}_updated\",\"phone\":\"13900139000\"}") VERIFY_UPDATE_RESULT=$(curl -s -X GET ${BASE_URL}/${MODULE}/${ID} -H "Authorization: Bearer ${AUTH_TOKEN}") VERIFY_USERNAME=$(extract_value "$VERIFY_UPDATE_RESULT" "username") VERIFY_PHONE=$(extract_value "$VERIFY_UPDATE_RESULT" "phone") EXPECTED_USERNAME="testuser${TIMESTAMP}_updated" if [ "$VERIFY_USERNAME" != "$EXPECTED_USERNAME" ] || [ "$VERIFY_PHONE" != "13900139000" ]; then log_error "Update failed" echo "$VERIFY_UPDATE_RESULT" exit 1 fi log_success "Update success" log_step "4" "Verify update" VERIFY_RESULT=$(curl -s -X GET ${BASE_URL}/${MODULE}/${ID} -H "Authorization: Bearer ${AUTH_TOKEN}") VERIFY_USERNAME=$(extract_value "$VERIFY_RESULT" "username") if [ "$VERIFY_USERNAME" != "$EXPECTED_USERNAME" ]; then log_error "Verify failed" echo "$VERIFY_RESULT" exit 1 fi log_success "Verify success" log_step "5" "List query" LIST_RESULT=$(curl -s -X GET "${BASE_URL}/${MODULE}s?page=1&pageSize=10" -H "Authorization: Bearer ${AUTH_TOKEN}") if echo "$LIST_RESULT" | grep -q "\"id\"; then log_success "List success" else log_error "List failed" echo "$LIST_RESULT" exit 1 fi log_step "6" "Delete user" DELETE_RESULT=$(curl -s -X DELETE ${BASE_URL}/${MODULE}/${ID} -H "Authorization: Bearer ${AUTH_TOKEN}") DELETE_CODE=$(extract_int "$DELETE_RESULT" "code") if [ "$DELETE_CODE" = "200" ]; then log_success "Delete success" else log_error "Delete failed" echo "$DELETE_RESULT" exit 1 fi log_step "7" "Verify delete" VERIFY_DELETE_RESULT=$(curl -s -X GET ${BASE_URL}/${MODULE}/${ID} -H "Authorization: Bearer ${AUTH_TOKEN}") VERIFY_CODE=$(extract_int "$VERIFY_DELETE_RESULT" "code") if [ "$VERIFY_CODE" = "404" ]; then log_success "Verify success" else log_error "Verify failed" echo "$VERIFY_DELETE_RESULT" exit 1 fi echo -e "\n\033[32m=== User module test completed ===\033[0m"