4
4
5
5
namespace Casts ;
6
6
7
+ use Illuminate \Database \Eloquent \Casts \Json ;
7
8
use Illuminate \Encryption \Encrypter ;
9
+ use Illuminate \Support \Collection ;
8
10
use MongoDB \Laravel \Tests \Models \Casting ;
9
11
use MongoDB \Laravel \Tests \TestCase ;
10
12
@@ -17,13 +19,81 @@ protected function setUp(): void
17
19
Casting::truncate ();
18
20
}
19
21
22
+ protected function decryptRaw (Casting $ model , $ key )
23
+ {
24
+ return app ()->make (Encrypter::class)
25
+ ->decryptString (
26
+ $ model ->getRawOriginal ($ key )
27
+ );
28
+ }
29
+
20
30
public function testEncryptedString (): void
21
31
{
22
32
$ model = Casting::query ()->create (['encryptedString ' => 'encrypted ' ]);
23
33
24
34
self ::assertIsString ($ model ->encryptedString );
25
35
self ::assertEquals ('encrypted ' , $ model ->encryptedString );
26
36
self ::assertNotEquals ('encrypted ' , $ model ->getRawOriginal ('encryptedString ' ));
27
- self ::assertEquals ('encrypted ' , app ()->make (Encrypter::class)->decryptString ($ model ->getRawOriginal ('encryptedString ' )));
37
+ self ::assertEquals ('encrypted ' , $ this ->decryptRaw ($ model , 'encryptedString ' ));
38
+
39
+ $ model ->update (['encryptedString ' => 'updated ' ]);
40
+ self ::assertIsString ($ model ->encryptedString );
41
+ self ::assertEquals ('updated ' , $ model ->encryptedString );
42
+ self ::assertNotEquals ('updated ' , $ model ->getRawOriginal ('encryptedString ' ));
43
+ self ::assertEquals ('updated ' , $ this ->decryptRaw ($ model , 'encryptedString ' ));
44
+ }
45
+
46
+ public function testEncryptedArray (): void
47
+ {
48
+ $ expected = ['foo ' => 'bar ' ];
49
+ $ model = Casting::query ()->create (['encryptedArray ' => $ expected ]);
50
+
51
+ self ::assertIsArray ($ model ->encryptedArray );
52
+ self ::assertEquals ($ expected , $ model ->encryptedArray );
53
+ self ::assertNotEquals ($ expected , $ model ->getRawOriginal ('encryptedArray ' ));
54
+ self ::assertEquals ($ expected , Json::decode ($ this ->decryptRaw ($ model , 'encryptedArray ' )));
55
+
56
+ $ updated = ['updated ' => 'array ' ];
57
+ $ model ->update (['encryptedArray ' => $ updated ]);
58
+ self ::assertIsArray ($ model ->encryptedArray );
59
+ self ::assertEquals ($ updated , $ model ->encryptedArray );
60
+ self ::assertNotEquals ($ updated , $ model ->getRawOriginal ('encryptedArray ' ));
61
+ self ::assertEquals ($ updated , Json::decode ($ this ->decryptRaw ($ model , 'encryptedArray ' )));
62
+ }
63
+
64
+ public function testEncryptedObject (): void
65
+ {
66
+ $ expected = (object ) ['foo ' => 'bar ' ];
67
+ $ model = Casting::query ()->create (['encryptedObject ' => $ expected ]);
68
+
69
+ self ::assertIsObject ($ model ->encryptedObject );
70
+ self ::assertEquals ($ expected , $ model ->encryptedObject );
71
+ self ::assertNotEquals ($ expected , $ model ->getRawOriginal ('encryptedObject ' ));
72
+ self ::assertEquals ($ expected , Json::decode ($ this ->decryptRaw ($ model , 'encryptedObject ' ), false ));
73
+
74
+ $ updated = (object ) ['updated ' => 'object ' ];
75
+ $ model ->update (['encryptedObject ' => $ updated ]);
76
+ self ::assertIsObject ($ model ->encryptedObject );
77
+ self ::assertEquals ($ updated , $ model ->encryptedObject );
78
+ self ::assertNotEquals ($ updated , $ model ->getRawOriginal ('encryptedObject ' ));
79
+ self ::assertEquals ($ updated , Json::decode ($ this ->decryptRaw ($ model , 'encryptedObject ' ), false ));
80
+ }
81
+
82
+ public function testEncryptedCollection (): void
83
+ {
84
+ $ expected = collect (['foo ' => 'bar ' ]);
85
+ $ model = Casting::query ()->create (['encryptedCollection ' => $ expected ]);
86
+
87
+ self ::assertInstanceOf (Collection::class, $ model ->encryptedCollection );
88
+ self ::assertEquals ($ expected , $ model ->encryptedCollection );
89
+ self ::assertNotEquals ($ expected , $ model ->getRawOriginal ('encryptedCollection ' ));
90
+ self ::assertEquals ($ expected , collect (Json::decode ($ this ->decryptRaw ($ model , 'encryptedCollection ' ), false )));
91
+
92
+ $ updated = collect (['updated ' => 'object ' ]);
93
+ $ model ->update (['encryptedCollection ' => $ updated ]);
94
+ self ::assertIsObject ($ model ->encryptedCollection );
95
+ self ::assertEquals ($ updated , $ model ->encryptedCollection );
96
+ self ::assertNotEquals ($ updated , $ model ->getRawOriginal ('encryptedCollection ' ));
97
+ self ::assertEquals ($ updated , collect (Json::decode ($ this ->decryptRaw ($ model , 'encryptedCollection ' ), false )));
28
98
}
29
99
}
0 commit comments