22
33namespace Tests \Tempest \Integration \Database ;
44
5+ use PHPUnit \Framework \Attributes \Test ;
56use Tempest \Cryptography \Encryption \Encrypter ;
67use Tempest \Database \DatabaseMigration ;
78use Tempest \Database \Encrypted ;
1314use Tempest \Database \Table ;
1415use Tests \Tempest \Integration \FrameworkIntegrationTestCase ;
1516
17+ use function Tempest \Database \query ;
18+
1619final class EncryptedAttributeTest extends FrameworkIntegrationTestCase
1720{
1821 private Encrypter $ encrypter {
1922 get => $ this ->container ->get (Encrypter::class);
2023 }
2124
22- public function test_encrypted_attribute_encrypts_value_on_insert (): void
25+ #[Test]
26+ public function encrypts_value_on_insert (): void
2327 {
2428 $ this ->migrate (CreateMigrationsTable::class, CreateUserWithEncryptedDataTable::class);
2529
26- $ user = new UserWithEncryptedData (
30+ $ user = query ( UserWithEncryptedData::class)-> create (
2731 email: 'test@example.com ' ,
2832 secret: 'sensitive information ' , // @mago-expect security/no-literal-password
29- )-> save ()-> refresh () ;
33+ );
3034
3135 $ this ->assertSame ('sensitive information ' , $ user ->secret );
3236
@@ -35,14 +39,15 @@ public function test_encrypted_attribute_encrypts_value_on_insert(): void
3539 $ this ->assertNotSame ('sensitive information ' , $ encrypted ['secret ' ]);
3640 }
3741
38- public function test_encrypted_attribute_encrypts_value_on_update (): void
42+ #[Test]
43+ public function encrypts_value_on_update (): void
3944 {
4045 $ this ->migrate (CreateMigrationsTable::class, CreateUserWithEncryptedDataTable::class);
4146
42- $ user = new UserWithEncryptedData (
47+ $ user = query ( UserWithEncryptedData::class)-> create (
4348 email: 'test@example.com ' ,
4449 secret: 'original secret ' , // @mago-expect security/no-literal-password
45- )-> save ()-> refresh () ;
50+ );
4651
4752 $ user ->update (secret: 'new secret ' )->refresh (); // @mago-expect security/no-literal-password
4853
@@ -54,40 +59,41 @@ public function test_encrypted_attribute_encrypts_value_on_update(): void
5459 $ this ->assertNotSame ('new secret ' , $ encrypted ['secret ' ]);
5560 }
5661
57- public function test_encrypted_attribute_does_not_re_encrypt_already_encrypted_values (): void
62+ #[Test]
63+ public function does_not_re_encrypt_already_encrypted_values (): void
5864 {
5965 $ this ->migrate (CreateMigrationsTable::class, CreateUserWithEncryptedDataTable::class);
6066
61- $ alreadyEncrypted = $ this ->encrypter ->encrypt ('sensitive data ' );
62-
63- $ user = new UserWithEncryptedData (
67+ $ user = query (UserWithEncryptedData::class)->create (
6468 email: 'test@example.com ' ,
65- secret: $ alreadyEncrypted ,
66- )-> save ()-> refresh () ;
69+ secret: $ this -> encrypter -> encrypt ( ' sensitive data ' ) ,
70+ );
6771
6872 $ this ->assertSame ('sensitive data ' , $ user ->secret );
6973 }
7074
71- public function test_encrypted_attribute_handles_null_values (): void
75+ #[Test]
76+ public function handles_null_values (): void
7277 {
7378 $ this ->migrate (CreateMigrationsTable::class, CreateUserWithNullableEncryptedDataTable::class);
7479
75- $ user = new UserWithNullableEncryptedData (
80+ $ user = query ( UserWithNullableEncryptedData::class)-> create (
7681 email: 'test@example.com ' ,
7782 secret: null ,
78- )-> save ()-> refresh () ;
83+ );
7984
8085 $ this ->assertNull ($ user ->secret );
8186 }
8287
83- public function test_encrypted_attribute_handles_empty_strings (): void
88+ #[Test]
89+ public function handles_empty_strings (): void
8490 {
8591 $ this ->migrate (CreateMigrationsTable::class, CreateUserWithEncryptedDataTable::class);
8692
87- $ user = new UserWithEncryptedData (
93+ $ user = query ( UserWithEncryptedData::class)-> create (
8894 email: 'test@example.com ' ,
8995 secret: '' ,
90- )-> save ()-> refresh () ;
96+ );
9197
9298 $ this ->assertSame ('' , $ user ->secret );
9399 }
0 commit comments