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