first commit
This commit is contained in:
30
tests/Feature/Security/PdnEncryptionTest.php
Normal file
30
tests/Feature/Security/PdnEncryptionTest.php
Normal file
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
use App\Models\PersonalData;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
it('хранит поля ПДн в зашифрованном виде (ЗНИ)', function () {
|
||||
$pd = PersonalData::create([
|
||||
'last_name' => 'Иванов',
|
||||
'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();
|
||||
});
|
||||
Reference in New Issue
Block a user