Files
portal/app/tests/Feature/SaasAdminMiddlewareTest.php
T
Дмитрий 0817c81e67 fix(admin): снять 503-замок saas-admin зоны — защиту держит nginx basic-auth
EnsureSaasAdmin fail-closed 503 вне dev/testing → вся админка на боевом
liderra.ru недоступна (все /api/admin/* падали). Настоящий saas-admin SSO
(Yandex 360) ещё не готов (Б-1 + DO-4), но держать зону наглухо закрытой
нельзя — заказчику нужна админка.

Стопгэп (выбор заказчика): защита /admin + /api/admin/* переносится на
nginx (отдельный HTTP Basic Auth, /etc/nginx/.htpasswd-admin), middleware
зону больше не закрывает. Тест production-кейса переведён с 503 на 200.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-25 07:35:03 +03:00

30 lines
1.4 KiB
PHP

<?php
declare(strict_types=1);
use Illuminate\Foundation\Testing\DatabaseTransactions;
/**
* J2 (Sprint 3F) — гейт SaaS-admin зоны.
*
* EnsureSaasAdmin на /api/admin/*: пропускает запрос во ВСЕХ окружениях.
* Защита боевой админ-зоны (/admin + /api/admin/*) перенесена на nginx
* (HTTP Basic Auth, отдельный пароль — /etc/nginx/.htpasswd-admin), потому
* что настоящий saas-admin SSO (Yandex 360) ещё не готов (Б-1 + DO-4).
* Ранее middleware fail-closed 503 вне dev/testing — это закрывало всю
* админку на проде наглухо; стопгэп заменил замок на nginx-дверь.
*/
uses(DatabaseTransactions::class);
test('/api/admin/* пропускается на testing-окружении', function () {
$this->getJson('/api/admin/tenants')->assertStatus(200);
});
test('/api/admin/* пропускается и на production (замок 503 снят, дверь держит nginx)', function () {
$this->app->detectEnvironment(fn () => 'production');
// Раньше тут был 503. Теперь приложение зону не закрывает — её держит
// nginx basic-auth (стопгэп до реального Yandex 360 SSO).
$this->getJson('/api/admin/tenants')->assertStatus(200);
});