44
55namespace Casts ;
66
7+ use Illuminate \Database \Eloquent \Casts \Json ;
78use Illuminate \Encryption \Encrypter ;
9+ use Illuminate \Support \Collection ;
810use MongoDB \Laravel \Tests \Models \Casting ;
911use MongoDB \Laravel \Tests \TestCase ;
1012
@@ -17,13 +19,81 @@ protected function setUp(): void
1719 Casting::truncate ();
1820 }
1921
22+ protected function decryptRaw (Casting $ model , $ key )
23+ {
24+ return app ()->make (Encrypter::class)
25+ ->decryptString (
26+ $ model ->getRawOriginal ($ key )
27+ );
28+ }
29+
2030 public function testEncryptedString (): void
2131 {
2232 $ model = Casting::query ()->create (['encryptedString ' => 'encrypted ' ]);
2333
2434 self ::assertIsString ($ model ->encryptedString );
2535 self ::assertEquals ('encrypted ' , $ model ->encryptedString );
2636 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 )));
2898 }
2999}
0 commit comments