27bf64a885
Лимиты гостя по решению владельца: разговорился — пусть говорит (60 вопросов в первый час), но если завис в чате на весь день — тормозим до 30 в час, иначе один посетитель съест дневной бюджет. Потолок одного разговора поднят 40 → 150 (иначе «60 в час» упиралось бы в обрыв разговора). Страница разборов «Как это работает» отдаётся самим порталом по адресу /kak-eto-rabotaet: на боевом nginx отдаёт лендинг только по «/», все остальные пути уходят в портал — значит, конфиги сервера трогать не нужно. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
28 lines
1.5 KiB
PHP
28 lines
1.5 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
/**
|
|
* Страница разборов «Как это работает» — единственное, что бот присылает ГОСТЮ.
|
|
* На боевом лендинг отдаётся только по адресу «/», все остальные пути уходят в портал,
|
|
* поэтому страницу отдаёт сам портал по красивому адресу /kak-eto-rabotaet (nginx не трогаем).
|
|
*/
|
|
it('страница разборов открывается гостю по адресу /kak-eto-rabotaet', function () {
|
|
$page = public_path('kak-eto-rabotaet.html');
|
|
|
|
expect(file_exists($page))->toBeTrue('Страница разборов должна лежать в public/kak-eto-rabotaet.html');
|
|
|
|
$response = $this->get('/kak-eto-rabotaet');
|
|
|
|
$response->assertOk();
|
|
expect($response->headers->get('content-type'))->toContain('text/html');
|
|
// Страница отдаётся файлом (BinaryFileResponse), тело в тесте пустое — смотрим сам файл.
|
|
expect(file_get_contents($page))->toContain('Как это работает');
|
|
});
|
|
|
|
it('страница разборов не требует входа в кабинет', function () {
|
|
// Гость с лендинга не аутентифицирован — если маршрут случайно попадёт под auth,
|
|
// бот будет слать людей на страницу входа.
|
|
$this->get('/kak-eto-rabotaet')->assertOk();
|
|
});
|