diff --git a/deploy/smoke.sh b/deploy/smoke.sh index e011fcc..877042d 100755 --- a/deploy/smoke.sh +++ b/deploy/smoke.sh @@ -75,6 +75,46 @@ else fail "некорректный ответ на /" fi +printf '\n[2b] API Фазы 1 (аккаунты, права, gateway)\n' +instance="$(curl -fsS "${APP_URL}/api/v1/instance" 2>/dev/null || true)" +if printf '%s' "$instance" | grep -q '"registration_enabled"'; then + if printf '%s' "$instance" | grep -q '"main_guild_id":"[0-9]'; then + pass "/api/v1/instance отвечает, главный сервер создан" + else + fail "/api/v1/instance: главный сервер не создан (выполните bootstrap-admin)" + fi +else + fail "/api/v1/instance недоступен" +fi + +openapi="$(curl -fsS "${APP_URL}/api/v1/openapi.json" 2>/dev/null || true)" +if printf '%s' "$openapi" | grep -q '"/guilds"'; then + pass "/api/v1/openapi.json содержит ручки серверов" +else + fail "/api/v1/openapi.json без ручек Фазы 1" +fi + +me_status="$(curl -s -o /dev/null -w '%{http_code}' "${APP_URL}/api/v1/users/@me" 2>/dev/null || echo 000)" +if [ "$me_status" = "401" ]; then + pass "/api/v1/users/@me без сессии отдаёт 401" +else + fail "/api/v1/users/@me без сессии вернул ${me_status}, ожидался 401" +fi + +register_status="$(curl -s -o /dev/null -w '%{http_code}' -X POST "${APP_URL}/api/v1/auth/register" \ + -H 'Content-Type: application/json' -d '{}' 2>/dev/null || echo 000)" +case "$register_status" in + 4*) pass "регистрация защищена от пустого запроса (${register_status})" ;; + *) fail "некорректный ответ регистрации на пустое тело: ${register_status}" ;; +esac + +gateway_status="$(curl -s -o /dev/null -w '%{http_code}' "${APP_URL}/gateway" 2>/dev/null || echo 000)" +if [ "$gateway_status" = "200" ]; then + fail "/gateway отвечает 200 на обычный GET: апгрейд обязателен" +else + pass "/gateway без апгрейда отклонён (${gateway_status})" +fi + printf '\n[3] Публичный доступ\n' if [ "$SKIP_TLS" = "1" ]; then skip "TLS отключён (--skip-tls): публичная проверка пропущена"