toBe(2) ->and(Audit::verifyIntegrity())->toBe([]); }); it('обнаруживает подделку записи журнала (РСБ.3)', function () { Audit::log('pdn.viewed', 'read', 'PersonalData:1'); $entry = Audit::log('pdn.updated', 'update', 'PersonalData:1'); // Изменение записи в обход подписи. $entry->result = 'failure'; $entry->saveQuietly(); expect(Audit::verifyIntegrity())->toContain($entry->id); }); it('обнаруживает разрыв хеш-цепочки при удалении записи (РСБ.3)', function () { Audit::log('e1', 'a', 'R:1'); $second = Audit::log('e2', 'a', 'R:2'); Audit::log('e3', 'a', 'R:3'); $second->delete(); expect(Audit::verifyIntegrity())->not->toBe([]); });