62 lines
2.5 KiB
Bash
62 lines
2.5 KiB
Bash
#!/bin/bash
|
|
# API-тесты: все комбинации (без UI)
|
|
# Запуск: bash docs/test-api.sh
|
|
|
|
BASE="https://white.nodejsk8s.dev.nubes.ru"
|
|
PASS=0
|
|
FAIL=0
|
|
|
|
green() { echo -e "\033[32m$1\033[0m"; }
|
|
red() { echo -e "\033[31m$1\033[0m"; }
|
|
|
|
check() { # check "описание" expected actual
|
|
if [ "$2" = "$3" ]; then
|
|
green " ✓ $1"
|
|
PASS=$((PASS+1))
|
|
else
|
|
red " ✗ $1 (ожидалось: $2, получено: $3)"
|
|
FAIL=$((FAIL+1))
|
|
fi
|
|
}
|
|
|
|
# ── Получить mock JWT для заданного clientId ───────────────────
|
|
get_token() {
|
|
local CLIENT_ID="$1"
|
|
# POST /dev-login для получения токена через API
|
|
# Возвращает access_token из ответа
|
|
local RESP=$(curl -s -c /tmp/jar-test.txt "$BASE/login" > /dev/null && \
|
|
curl -s -b /tmp/jar-test.txt -c /tmp/jar-test.txt \
|
|
-X POST "$BASE/login" \
|
|
-d "clientId=$CLIENT_ID" \
|
|
-D - 2>&1)
|
|
# Извлечь токен из редиректа (он в сессии, получаем через API)
|
|
# Используем /dev-login для прямого получения токена
|
|
local CSRF=$(curl -s -b /tmp/jar-test.txt "$BASE/dev-login" | grep -oP 'name="_csrf" value="\K[^"]+')
|
|
curl -s -b /tmp/jar-test.txt -c /tmp/jar-test.txt \
|
|
-X POST "$BASE/dev-login" \
|
|
-d "clientId=$CLIENT_ID&_csrf=$CSRF&email=test@test.local&companyName=TestCo" \
|
|
> /dev/null
|
|
# Получить api-токен через сессию
|
|
# Пробуем получить через /login page (там токен генерится в сессию)
|
|
# Возвращаем токен из cookie
|
|
echo "TODO"
|
|
}
|
|
|
|
echo "========================================="
|
|
echo " API Tests v0.5.4"
|
|
echo "========================================="
|
|
echo ""
|
|
|
|
# ── 1. Без токена → 401 ────────────────────────────────────────
|
|
echo "--- 1. No token → 401 ---"
|
|
CODE=$(curl -s -o /dev/null -w '%{http_code}' "$BASE/api/v1/entries")
|
|
check "GET /entries без токена" "401" "$CODE"
|
|
|
|
CODE=$(curl -s -o /dev/null -w '%{http_code}' -X POST "$BASE/api/v1/entries" -H 'Content-Type: application/json' -d '{"value":"1.1.1.1/32"}')
|
|
check "POST /entries без токена" "401" "$CODE"
|
|
|
|
echo ""
|
|
echo "========================================="
|
|
echo " Результат: $PASS/$((PASS+FAIL))"
|
|
echo "========================================="
|