@@ -26,7 +26,7 @@ set -euo pipefail
2626# ---------------------------------------------------------------------------
2727# Configuration
2828# ---------------------------------------------------------------------------
29- BASE_URL=" http://localhost:3333"
29+ BASE_URL=" http://localhost:3333" # shellcheck disable=SC2034
3030API=" http://localhost:3333/api/v1"
3131TEST_EMAIL=" test@prostaff.gg"
3232TEST_PASSWORD=" Test123!@#"
@@ -71,7 +71,7 @@ get_token() {
7171 -d " {\" email\" :\" ${TEST_EMAIL} \" ,\" password\" :\" ${TEST_PASSWORD} \" }" \
7272 2> /dev/null) || code=" error"
7373
74- TOKEN=$( cat " ${tmp} " | python3 -c "
74+ TOKEN=$( python3 -c "
7575import sys, json
7676try:
7777 d = json.load(sys.stdin)
8181 print(t)
8282except Exception:
8383 pass
84- " 2> /dev/null) || TOKEN=" "
84+ " 2> /dev/null < " ${tmp} " ) || TOKEN=" "
8585 rm -f " ${tmp} "
8686
8787 if [ -z " ${TOKEN} " ]; then
@@ -224,7 +224,7 @@ curl -s -o "${TMP_LIST}" --max-time 10 \
224224 -H " Authorization: Bearer ${TOKEN} " \
225225 " ${API} /players" 2> /dev/null || true
226226
227- PLAYER_ID_FOR_DELETE=$( cat " ${TMP_LIST} " | python3 -c "
227+ PLAYER_ID_FOR_DELETE=$( python3 -c "
228228import sys, json
229229try:
230230 d = json.load(sys.stdin)
@@ -237,15 +237,15 @@ try:
237237 print('1')
238238except Exception:
239239 print('1')
240- " 2> /dev/null) || PLAYER_ID_FOR_DELETE=" 1"
240+ " 2> /dev/null < " ${TMP_LIST} " ) || PLAYER_ID_FOR_DELETE=" 1"
241241rm -f " ${TMP_LIST} "
242242
243243TMP_MLIST=" $( mktemp) "
244244curl -s -o " ${TMP_MLIST} " --max-time 10 \
245245 -H " Authorization: Bearer ${TOKEN} " \
246246 " ${API} /matches" 2> /dev/null || true
247247
248- MATCH_ID_FOR_DELETE=$( cat " ${TMP_MLIST} " | python3 -c "
248+ MATCH_ID_FOR_DELETE=$( python3 -c "
249249import sys, json
250250try:
251251 d = json.load(sys.stdin)
258258 print('1')
259259except Exception:
260260 print('1')
261- " 2> /dev/null) || MATCH_ID_FOR_DELETE=" 1"
261+ " 2> /dev/null < " ${TMP_MLIST} " ) || MATCH_ID_FOR_DELETE=" 1"
262262rm -f " ${TMP_MLIST} "
263263
264264info " Using Player ID ${PLAYER_ID_FOR_DELETE} and Match ID ${MATCH_ID_FOR_DELETE} for delete tests"
@@ -379,9 +379,9 @@ OVERRIDE_CODE=$(curl -s -o "${TMP_OVERRIDE}" -w "%{http_code}" --max-time 10 \
379379 " ${API} /players/${PLAYER_ID_FOR_DELETE} " \
380380 2> /dev/null) || OVERRIDE_CODE=" error"
381381echo " STATUS : ${OVERRIDE_CODE} "
382- cat " ${TMP_OVERRIDE} " | python3 -m json.tool 2> /dev/null || cat " ${TMP_OVERRIDE} "
382+ python3 -m json.tool 2> /dev/null < " ${TMP_OVERRIDE} " || cat " ${TMP_OVERRIDE} "
383383rm -f " ${TMP_OVERRIDE} "
384- [ " ${OVERRIDE_CODE} " == " 200" ] && finding " Method override succeeded - DELETE via POST!" || ok " HTTP ${OVERRIDE_CODE} - method override not accepted"
384+ if [ " ${OVERRIDE_CODE} " == " 200" ]; then finding " Method override succeeded - DELETE via POST!" ; else ok " HTTP ${OVERRIDE_CODE} - method override not accepted" ; fi
385385
386386# _method param in body
387387echo " "
@@ -396,9 +396,9 @@ MP_CODE=$(curl -s -o "${TMP_METHOD_PARAM}" -w "%{http_code}" --max-time 10 \
396396 " ${API} /players/${PLAYER_ID_FOR_DELETE} " \
397397 2> /dev/null) || MP_CODE=" error"
398398echo " STATUS : ${MP_CODE} "
399- cat " ${TMP_METHOD_PARAM} " | python3 -m json.tool 2> /dev/null || cat " ${TMP_METHOD_PARAM} "
399+ python3 -m json.tool 2> /dev/null < " ${TMP_METHOD_PARAM} " || cat " ${TMP_METHOD_PARAM} "
400400rm -f " ${TMP_METHOD_PARAM} "
401- [ " ${MP_CODE} " == " 200" ] && finding " _method=DELETE override succeeded!" || ok " HTTP ${MP_CODE} - _method param not honored"
401+ if [ " ${MP_CODE} " == " 200" ]; then finding " _method=DELETE override succeeded!" ; else ok " HTTP ${MP_CODE} - _method param not honored" ; fi
402402
403403# X-HTTP-Method-Override: PATCH for escalation
404404probe_post " POST with X-HTTP-Method-Override: PATCH" \
@@ -422,10 +422,10 @@ RE_CODE=$(curl -s -o "${TMP_ROLE_ESC}" -w "%{http_code}" --max-time 10 \
422422 " ${API} /auth/me" \
423423 2> /dev/null) || RE_CODE=" error"
424424echo " PATCH /auth/me with role=admin -> HTTP ${RE_CODE} "
425- cat " ${TMP_ROLE_ESC} " | python3 -m json.tool 2> /dev/null || cat " ${TMP_ROLE_ESC} "
425+ python3 -m json.tool 2> /dev/null < " ${TMP_ROLE_ESC} " || cat " ${TMP_ROLE_ESC} "
426426rm -f " ${TMP_ROLE_ESC} "
427427
428- [ " ${RE_CODE} " == " 200" ] && finding " Role escalation via PATCH /auth/me succeeded!" || ok " HTTP ${RE_CODE} - role escalation rejected"
428+ if [ " ${RE_CODE} " == " 200" ]; then finding " Role escalation via PATCH /auth/me succeeded!" ; else ok " HTTP ${RE_CODE} - role escalation rejected" ; fi
429429
430430# Attempt role escalation on player endpoint
431431TMP_PLAYER_ESC=" $( mktemp) "
@@ -437,10 +437,10 @@ PE_CODE=$(curl -s -o "${TMP_PLAYER_ESC}" -w "%{http_code}" --max-time 10 \
437437 " ${API} /players/${PLAYER_ID_FOR_DELETE} " \
438438 2> /dev/null) || PE_CODE=" error"
439439echo " PATCH /players/${PLAYER_ID_FOR_DELETE} with role=admin -> HTTP ${PE_CODE} "
440- cat " ${TMP_PLAYER_ESC} " | python3 -m json.tool 2> /dev/null || cat " ${TMP_PLAYER_ESC} "
440+ python3 -m json.tool 2> /dev/null < " ${TMP_PLAYER_ESC} " || cat " ${TMP_PLAYER_ESC} "
441441rm -f " ${TMP_PLAYER_ESC} "
442442
443- [ " ${PE_CODE} " == " 200" ] && finding " Role escalation via player PATCH succeeded!" || ok " HTTP ${PE_CODE} "
443+ if [ " ${PE_CODE} " == " 200" ]; then finding " Role escalation via player PATCH succeeded!" ; else ok " HTTP ${PE_CODE} " ; fi
444444
445445# ===========================================================================
446446# 8. Pundit-specific bypasses
0 commit comments