test(smoke): проверки API Фазы 1 в smoke-тесте

Добавлен блок [2b]: `/api/v1/instance` с созданным главным сервером,
наличие ручек серверов в OpenAPI, 401 на `/users/@me` без сессии, отказ
регистрации на пустое тело и отклонение обычного GET на `/gateway`
(апгрейд обязателен).
This commit is contained in:
2026-09-19 21:56:47 +03:00
parent b189b3592b
commit 463021161a
+40
View File
@@ -75,6 +75,46 @@ else
fail "некорректный ответ на /" fail "некорректный ответ на /"
fi 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' printf '\n[3] Публичный доступ\n'
if [ "$SKIP_TLS" = "1" ]; then if [ "$SKIP_TLS" = "1" ]; then
skip "TLS отключён (--skip-tls): публичная проверка пропущена" skip "TLS отключён (--skip-tls): публичная проверка пропущена"