You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

136 lines
4.1 KiB

#!/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"