From 463021161aee0de4f6b69e0f3d9796de665f1245 Mon Sep 17 00:00:00 2001 From: grendervill Date: Sat, 19 Sep 2026 21:56:47 +0300 Subject: [PATCH] =?UTF-8?q?test(smoke):=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5?= =?UTF-8?q?=D1=80=D0=BA=D0=B8=20API=20=D0=A4=D0=B0=D0=B7=D1=8B=201=20?= =?UTF-8?q?=D0=B2=20smoke-=D1=82=D0=B5=D1=81=D1=82=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Добавлен блок [2b]: `/api/v1/instance` с созданным главным сервером, наличие ручек серверов в OpenAPI, 401 на `/users/@me` без сессии, отказ регистрации на пустое тело и отклонение обычного GET на `/gateway` (апгрейд обязателен). --- deploy/smoke.sh | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) 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): публичная проверка пропущена"