PersonalAuthMod/test_mod.sh

81 lines
2.7 KiB
Bash
Executable File

#!/bin/bash
# SPT C# Server Mod Test Script (Robust Version)
SERVER_URL="https://127.0.0.1:6969"
USERNAME="testuser_$(date +%s)"
PASSWORD="testpassword"
WRONG_PASSWORD="wrongpassword123"
# Helper function for curl
call_api() {
local endpoint=$1
local data=$2
local cookie=$3
local headers=(-H "Content-Type: application/json" -H "requestcompressed: 0" -H "responsecompressed: 0")
if [ ! -z "$cookie" ]; then
headers+=(-H "Cookie: PHPSESSID=$cookie")
fi
curl -k -s -i -X POST "$SERVER_URL$endpoint" "${headers[@]}" -d "$data"
}
get_body() {
echo "$1" | awk '/^\r?$/ {p=1; next} p {print}' | xargs
}
echo "=== [테스트 시작: $USERNAME] ==="
echo "1. 회원가입 테스트 (신규 가입)"
REG_RESP=$(call_api "/launcher/profile/register" "{\"username\":\"$USERNAME\",\"password\":\"$PASSWORD\",\"edition\":\"Edge Of Darkness\"}")
REG_BODY=$(get_body "$REG_RESP")
echo "결과: $REG_BODY"
if [[ "$REG_BODY" == "FAILED" ]]; then
echo "오류: 신규 가입이 실패했습니다."
exit 1
fi
echo -e "\n2. 중복 회원가입 테스트 (이미 존재하는 아이디)"
DUP_REG_RESP=$(call_api "/launcher/profile/register" "{\"username\":\"$USERNAME\",\"password\":\"$PASSWORD\",\"edition\":\"Edge Of Darkness\"}")
DUP_REG_BODY=$(get_body "$DUP_REG_RESP")
echo "결과: $DUP_REG_BODY (예상: FAILED)"
if [[ "$DUP_REG_BODY" != "FAILED" ]]; then
echo "오류: 중복 가입이 허용되었습니다!"
exit 1
fi
echo -e "\n3. 로그인 테스트 (틀린 비밀번호)"
WRONG_LOGIN_RESP=$(call_api "/launcher/profile/login" "{\"username\":\"$USERNAME\",\"password\":\"$WRONG_PASSWORD\"}")
WRONG_LOGIN_BODY=$(get_body "$WRONG_LOGIN_RESP")
echo "결과: $WRONG_LOGIN_BODY (예상: FAILED)"
if [[ "$WRONG_LOGIN_BODY" != "FAILED" ]]; then
echo "오류: 틀린 비밀번호로 로그인이 성공했습니다!"
exit 1
fi
echo -e "\n4. 로그인 테스트 (정상 로그인)"
LOGIN_RESP=$(call_api "/launcher/profile/login" "{\"username\":\"$USERNAME\",\"password\":\"$PASSWORD\"}")
SESSION_ID=$(get_body "$LOGIN_RESP")
echo "결과: $SESSION_ID (세션 ID 전송됨)"
if [[ "$SESSION_ID" == "FAILED" || -z "$SESSION_ID" ]]; then
echo "오류: 정상 로그인이 실패했습니다."
exit 1
fi
echo -e "\n5. 프로필 목록 조회 테스트"
PROF_RESP=$(call_api "/launcher/profiles" "{}" "$SESSION_ID")
PROF_BODY=$(get_body "$PROF_RESP")
# 앞 15글자만 출력
TRUNCATED_BODY="${PROF_BODY:0:15}..."
echo "결과 (앞 15자): $TRUNCATED_BODY"
if [[ "$PROF_BODY" == "["* ]]; then
echo "성공: 정상적인 프로필 리스트(JSON Array)가 수신되었습니다."
else
echo "오류: 프로필 조회 응답이 올바르지 않습니다."
echo "전체 응답: $PROF_BODY"
exit 1
fi
echo -e "\n=== [모든 테스트 통과!] ==="