Skip to content
This repository was archived by the owner on Apr 7, 2021. It is now read-only.

Commit 8bd738d

Browse files
committed
potential laravel 5.5/5.6/5.7 fix for newly created models re: #30
1 parent 1fcead6 commit 8bd738d

File tree

2 files changed

+23
-6
lines changed

2 files changed

+23
-6
lines changed

src/Traits/HasEncryptedAttributes.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -318,6 +318,6 @@ protected function getArrayableAttributes()
318318
*/
319319
public function getAttributes()
320320
{
321-
return $this->doDecryptAttributes(parent::getAttributes());
321+
return $this->exists ? $this->doDecryptAttributes(parent::getAttributes()) : parent::getAttributes();
322322
}
323323
}

tests/Traits/DatabaseTest.php

+22-5
Original file line numberDiff line numberDiff line change
@@ -42,39 +42,56 @@ public function testUpdate()
4242

4343
public function testUpdateShouldBeEncrypted()
4444
{
45-
$model = DatabaseModel::create($this->randomValues());
45+
$strings = $this->randomValues();
46+
$model = DatabaseModel::create($strings);
4647

4748
$this->assertTrue($model->exists);
49+
$this->assertTrue(self::callProtectedMethod($model, 'shouldEncrypt', ['should_be_encrypted']));
50+
51+
$this->assertNotEquals($strings['should_be_encrypted'], $model->getOriginal('should_be_encrypted'));
52+
$this->assertEquals($strings['should_be_encrypted'], $model->should_be_encrypted);
4853

4954
$strings = $this->randomValues();
5055
$new_model = DatabaseModel::findOrFail($model->id);
51-
$new_model->update(['should_be_encrypted' => $strings['should_be_encrypted']]);
5256

5357
$this->assertTrue(self::callProtectedMethod($model, 'shouldEncrypt', ['should_be_encrypted']));
58+
59+
$new_model->update(['should_be_encrypted' => $strings['should_be_encrypted']]);
60+
5461
$this->assertNotEquals($model->getOriginal('should_be_encrypted'), $new_model->getOriginal('should_be_encrypted'));
5562
$this->assertNotEquals($model->should_be_encrypted, $new_model->should_be_encrypted);
63+
$this->assertEquals($model->getOriginal('shouldnt_be_encrypted'), $new_model->getOriginal('shouldnt_be_encrypted'));
64+
$this->assertEquals($model->shouldnt_be_encrypted, $new_model->shouldnt_be_encrypted);
5665
}
5766

5867
public function testUpdateShouldntBeEncrypted()
5968
{
60-
$model = DatabaseModel::create($this->randomValues());
69+
$strings = $this->randomValues();
70+
$model = DatabaseModel::create($strings);
6171

6272
$this->assertTrue($model->exists);
73+
$this->assertFalse(self::callProtectedMethod($model, 'shouldEncrypt', ['shouldnt_be_encrypted']));
74+
75+
$this->assertEquals($strings['shouldnt_be_encrypted'], $model->getOriginal('shouldnt_be_encrypted'));
76+
$this->assertEquals($strings['shouldnt_be_encrypted'], $model->shouldnt_be_encrypted);
6377

6478
$strings = $this->randomValues();
6579
$new_model = DatabaseModel::findOrFail($model->id);
6680

81+
$this->assertFalse(self::callProtectedMethod($model, 'shouldEncrypt', ['shouldnt_be_encrypted']));
82+
6783
$new_model->update(['shouldnt_be_encrypted' => $strings['shouldnt_be_encrypted']]);
6884

69-
$this->assertFalse(self::callProtectedMethod($model, 'shouldEncrypt', ['shouldnt_be_encrypted']));
85+
$this->assertEquals($model->getOriginal('should_be_encrypted'), $new_model->getOriginal('should_be_encrypted'));
86+
$this->assertEquals($model->should_be_encrypted, $new_model->should_be_encrypted);
7087
$this->assertNotEquals($model->getOriginal('shouldnt_be_encrypted'), $new_model->getOriginal('shouldnt_be_encrypted'));
7188
$this->assertNotEquals($model->shouldnt_be_encrypted, $new_model->shouldnt_be_encrypted);
7289
}
7390

7491
public function testGetArrayableAttributes()
7592
{
7693
$strings = $this->randomValues();
77-
$model = DatabaseModel::create($strings);
94+
$model = DatabaseModel::create($strings);
7895

7996
$this->assertTrue($model->exists);
8097

0 commit comments

Comments
 (0)