81 lines
2.7 KiB
Bash
Executable File
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=== [모든 테스트 통과!] ==="
|