459947f76b
Круг смены 6 оборвали средой, работа помощника лежала в дереве несохранённой и её снёс бы первый же чужой откат. Замерил целостность, прочёл его отчёт, прогнал своей рукой, вынес приговор. Заново ничего не переделывал. ПРИНЯТО. Третья и последняя дверь с ключом рендера закрыта той же проверенной дверью. Список разрешённых машин общий с рендером и это доказано работой, а не доводом. Закрытая дверь красит СЕРЫМ, а не красным, и ключ при этом физически никуда не уходит, замерено мной двумя случаями по отдельному запуску на каждый. Помощник сверх задания нашёл и починил ложь, которой никто не искал: подпись плитки называла серый словами не отвечает, то есть гнала владельца продлевать исправные прокси. Мои ошибки называю первыми, их три. Пятьдесят девятая. Я назвал adminDashboardHelpers.ts чужим файлом соседней смены прямо в промте смене 7, в списке не трогать и в коммит не брать. Взял из головы, не замерив. Вся правка в этом файле - работа моего же помощника. Исполни следующая смена мой промт дословно, починка подписи плитки не попала бы в коммит и сгорела. Шестидесятая. Мой снимок оборванного круга был неполон: записал шесть файлов, их семь. Перечень собрал командой, но раньше, чем помощник закончил, и не перемерил перед тем, как назвать его окончательным. Шестьдесят первая. Мой датчик прогона искал не то слово и я чуть не объявил состоявшийся прогон несостоявшимся. Спас узкий прогон, которым я прибор перепроверил. Вырезание второго рода дало дыру. Допущение защиты: дверь проверяет адрес из настройки и считает, что запрос уйдёт именно туда. Случай мимо: разрешённая машина отвечает иди на другой адрес. Замерено на двух подставных машинах: тайный ключ уехал на машину, которой в списке разрешённых НЕТ, а плитка осталась ЗЕЛЁНОЙ и показала чужой адрес как свой. Перемерил на живой двери боевого Поиска клиентов тем же ножом, отдельным запуском - то же самое. Причина прочитана в исходнике библиотеки: при уходе на чужой адрес снимаются только два заголовка, и нашего среди них нет. Вторым прибором замерено, что отключения переадресации нет нигде во всём боевом коде. Это не отменяет Р126, дверь делает обещанное на своих случаях, но обещание шире дела и про это не сказано нигде. Отдельным кругом. Датчики: полный прогон моей рукой на своей базе 5344 проверки, 5340 зелёных, 4 пропущено, красных 0, арифметика сходится. Проверки интерфейса 3 из 3. Разметка 0 ошибок.
23 lines
1.2 KiB
TypeScript
23 lines
1.2 KiB
TypeScript
import { describe, it, expect } from 'vitest';
|
|
import { proxyMoney, proxyStatus } from '../../resources/js/views/admin/adminDashboardHelpers';
|
|
|
|
describe('строка proxy_market на плашке', () => {
|
|
it('баланс = «до <дата>»', () => {
|
|
expect(proxyMoney({ service_key: 'proxy_market', expires_at: '04.08.2026' })).toBe('до 04.08.2026');
|
|
expect(proxyMoney({ service_key: 'proxy_market', expires_at: null })).toBe('—');
|
|
});
|
|
|
|
it('статус словом по светофору', () => {
|
|
expect(proxyStatus('green')).toBe('жив');
|
|
expect(proxyStatus('amber')).toBe('скоро истекает');
|
|
expect(proxyStatus('red')).toBe('не отвечает');
|
|
});
|
|
|
|
// 🔴 Р126, третья дверь. Серый = «не проверяем», красный = «прокси кончились». Подпись
|
|
// «не отвечает» на сером погнала бы владельца продлевать исправные прокси.
|
|
it('серый НЕ выдаёт себя за красный', () => {
|
|
expect(proxyStatus('grey')).toBe('не проверяем');
|
|
expect(proxyStatus('grey')).not.toBe(proxyStatus('red'));
|
|
});
|
|
});
|