'Иванов', 'passport' => '1234 567890', ]); // В приложении значение доступно в открытом виде. expect($pd->fresh()->last_name)->toBe('Иванов'); // В БД хранится шифртекст, а не исходное значение. $raw = DB::table('personal_data')->where('id', $pd->id)->value('last_name'); expect($raw)->not->toBe('Иванов') ->and(strlen((string) $raw))->toBeGreaterThan(20); }); it('контролирует целостность записи ПДн (ОЦЛ.2)', function () { $pd = PersonalData::create(['last_name' => 'Петров']); expect($pd->integrityValid())->toBeTrue(); // Подмена шифртекста в обход приложения нарушает контрольную сумму. DB::table('personal_data')->where('id', $pd->id)->update(['last_name' => 'tampered']); expect(PersonalData::find($pd->id)->integrityValid())->toBeFalse(); });