|
2 | 2 |
|
3 | 3 | use DirectoryTree\Anonymize\Facades\Anonymize; |
4 | 4 | use DirectoryTree\Anonymize\Tests\AnonymizedJsonResource; |
| 5 | +use DirectoryTree\Anonymize\Tests\NestedAnonymizedResource; |
5 | 6 |
|
6 | 7 | it('anonymizes json resource when anonymization is enabled', function () { |
7 | 8 | Anonymize::enable(); |
|
26 | 27 | expect($resource->resolve())->toHaveKey('name', 'Foo Bar') |
27 | 28 | ->and($resource->resolve())->toHaveKey('address', '1600 Pennsylvania Avenue'); |
28 | 29 | }); |
| 30 | + |
| 31 | +it('anonymizes nested arrays and resources', function () { |
| 32 | + Anonymize::enable(); |
| 33 | + |
| 34 | + $resource = new AnonymizedJsonResource([ |
| 35 | + 'name' => 'Foo Bar', |
| 36 | + 'address' => '1600 Pennsylvania Avenue', |
| 37 | + 'role' => [ |
| 38 | + 'name' => 'Admin', |
| 39 | + 'permissions' => [ |
| 40 | + ['name' => 'View Users'], |
| 41 | + ['name' => 'View Roles'], |
| 42 | + ], |
| 43 | + 'created_at' => '2023-01-01 00:00:00', |
| 44 | + ], |
| 45 | + 'nested' => new NestedAnonymizedResource([ |
| 46 | + 'name' => 'Foo Bar', |
| 47 | + ]), |
| 48 | + ]); |
| 49 | + |
| 50 | + $attributes = $resource->resolve(); |
| 51 | + |
| 52 | + expect($attributes['role'])->toHaveKey('created_at'); |
| 53 | + expect($attributes['role']['name'])->not->toBe('Admin'); |
| 54 | + |
| 55 | + expect($attributes['role']['permissions'])->toHaveCount(1); |
| 56 | + expect($attributes['role']['permissions'][0])->toHaveKey('name'); |
| 57 | + expect($attributes['role']['permissions'][0]['name'])->not->toBe('View Users'); |
| 58 | + |
| 59 | + expect($attributes['nested'])->toHaveKey('name'); |
| 60 | + expect($attributes['nested']['name'])->not->toBe('Foo Bar'); |
| 61 | +}); |
0 commit comments