Find this useful? Enter your email to receive occasional updates for securing PHP code.

Signing you up...

Thank you for signing up!

PHP Decode

<?php declare(strict_types=1); namespace Casts; use Illuminate\Database\Eloquent\Casts\..

Decoded Output download

<?php

declare(strict_types=1);

namespace Casts;

use Illuminate\Database\Eloquent\Casts\Json;
use Illuminate\Encryption\Encrypter;
use Illuminate\Support\Collection;
use MongoDB\Laravel\Tests\Models\Casting;
use MongoDB\Laravel\Tests\TestCase;

use function app;
use function collect;

class EncryptionTest extends TestCase
{
    protected function setUp(): void
    {
        parent::setUp();

        Casting::truncate();
    }

    protected function decryptRaw(Casting $model, $key)
    {
        return app()->make(Encrypter::class)
            ->decryptString(
                $model->getRawOriginal($key),
            );
    }

    public function testEncryptedString(): void
    {
        $model = Casting::query()->create(['encryptedString' => 'encrypted']);

        self::assertIsString($model->encryptedString);
        self::assertEquals('encrypted', $model->encryptedString);
        self::assertNotEquals('encrypted', $model->getRawOriginal('encryptedString'));
        self::assertEquals('encrypted', $this->decryptRaw($model, 'encryptedString'));

        $model->update(['encryptedString' => 'updated']);
        self::assertIsString($model->encryptedString);
        self::assertEquals('updated', $model->encryptedString);
        self::assertNotEquals('updated', $model->getRawOriginal('encryptedString'));
        self::assertEquals('updated', $this->decryptRaw($model, 'encryptedString'));
    }

    public function testEncryptedArray(): void
    {
        $expected = ['foo' => 'bar'];
        $model = Casting::query()->create(['encryptedArray' => $expected]);

        self::assertIsArray($model->encryptedArray);
        self::assertEquals($expected, $model->encryptedArray);
        self::assertNotEquals($expected, $model->getRawOriginal('encryptedArray'));
        self::assertEquals($expected, Json::decode($this->decryptRaw($model, 'encryptedArray')));

        $updated = ['updated' => 'array'];
        $model->update(['encryptedArray' => $updated]);
        self::assertIsArray($model->encryptedArray);
        self::assertEquals($updated, $model->encryptedArray);
        self::assertNotEquals($updated, $model->getRawOriginal('encryptedArray'));
        self::assertEquals($updated, Json::decode($this->decryptRaw($model, 'encryptedArray')));
    }

    public function testEncryptedObject(): void
    {
        $expected = (object) ['foo' => 'bar'];
        $model = Casting::query()->create(['encryptedObject' => $expected]);

        self::assertIsObject($model->encryptedObject);
        self::assertEquals($expected, $model->encryptedObject);
        self::assertNotEquals($expected, $model->getRawOriginal('encryptedObject'));
        self::assertEquals($expected, Json::decode($this->decryptRaw($model, 'encryptedObject'), false));

        $updated = (object) ['updated' => 'object'];
        $model->update(['encryptedObject' => $updated]);
        self::assertIsObject($model->encryptedObject);
        self::assertEquals($updated, $model->encryptedObject);
        self::assertNotEquals($updated, $model->getRawOriginal('encryptedObject'));
        self::assertEquals($updated, Json::decode($this->decryptRaw($model, 'encryptedObject'), false));
    }

    public function testEncryptedCollection(): void
    {
        $expected = collect(['foo' => 'bar']);
        $model = Casting::query()->create(['encryptedCollection' => $expected]);

        self::assertInstanceOf(Collection::class, $model->encryptedCollection);
        self::assertEquals($expected, $model->encryptedCollection);
        self::assertNotEquals($expected, $model->getRawOriginal('encryptedCollection'));
        self::assertEquals($expected, collect(Json::decode($this->decryptRaw($model, 'encryptedCollection'), false)));

        $updated = collect(['updated' => 'object']);
        $model->update(['encryptedCollection' => $updated]);
        self::assertIsObject($model->encryptedCollection);
        self::assertEquals($updated, $model->encryptedCollection);
        self::assertNotEquals($updated, $model->getRawOriginal('encryptedCollection'));
        self::assertEquals($updated, collect(Json::decode($this->decryptRaw($model, 'encryptedCollection'), false)));
    }
}
 ?>

Did this file decode correctly?

Original Code

<?php

declare(strict_types=1);

namespace Casts;

use Illuminate\Database\Eloquent\Casts\Json;
use Illuminate\Encryption\Encrypter;
use Illuminate\Support\Collection;
use MongoDB\Laravel\Tests\Models\Casting;
use MongoDB\Laravel\Tests\TestCase;

use function app;
use function collect;

class EncryptionTest extends TestCase
{
    protected function setUp(): void
    {
        parent::setUp();

        Casting::truncate();
    }

    protected function decryptRaw(Casting $model, $key)
    {
        return app()->make(Encrypter::class)
            ->decryptString(
                $model->getRawOriginal($key),
            );
    }

    public function testEncryptedString(): void
    {
        $model = Casting::query()->create(['encryptedString' => 'encrypted']);

        self::assertIsString($model->encryptedString);
        self::assertEquals('encrypted', $model->encryptedString);
        self::assertNotEquals('encrypted', $model->getRawOriginal('encryptedString'));
        self::assertEquals('encrypted', $this->decryptRaw($model, 'encryptedString'));

        $model->update(['encryptedString' => 'updated']);
        self::assertIsString($model->encryptedString);
        self::assertEquals('updated', $model->encryptedString);
        self::assertNotEquals('updated', $model->getRawOriginal('encryptedString'));
        self::assertEquals('updated', $this->decryptRaw($model, 'encryptedString'));
    }

    public function testEncryptedArray(): void
    {
        $expected = ['foo' => 'bar'];
        $model = Casting::query()->create(['encryptedArray' => $expected]);

        self::assertIsArray($model->encryptedArray);
        self::assertEquals($expected, $model->encryptedArray);
        self::assertNotEquals($expected, $model->getRawOriginal('encryptedArray'));
        self::assertEquals($expected, Json::decode($this->decryptRaw($model, 'encryptedArray')));

        $updated = ['updated' => 'array'];
        $model->update(['encryptedArray' => $updated]);
        self::assertIsArray($model->encryptedArray);
        self::assertEquals($updated, $model->encryptedArray);
        self::assertNotEquals($updated, $model->getRawOriginal('encryptedArray'));
        self::assertEquals($updated, Json::decode($this->decryptRaw($model, 'encryptedArray')));
    }

    public function testEncryptedObject(): void
    {
        $expected = (object) ['foo' => 'bar'];
        $model = Casting::query()->create(['encryptedObject' => $expected]);

        self::assertIsObject($model->encryptedObject);
        self::assertEquals($expected, $model->encryptedObject);
        self::assertNotEquals($expected, $model->getRawOriginal('encryptedObject'));
        self::assertEquals($expected, Json::decode($this->decryptRaw($model, 'encryptedObject'), false));

        $updated = (object) ['updated' => 'object'];
        $model->update(['encryptedObject' => $updated]);
        self::assertIsObject($model->encryptedObject);
        self::assertEquals($updated, $model->encryptedObject);
        self::assertNotEquals($updated, $model->getRawOriginal('encryptedObject'));
        self::assertEquals($updated, Json::decode($this->decryptRaw($model, 'encryptedObject'), false));
    }

    public function testEncryptedCollection(): void
    {
        $expected = collect(['foo' => 'bar']);
        $model = Casting::query()->create(['encryptedCollection' => $expected]);

        self::assertInstanceOf(Collection::class, $model->encryptedCollection);
        self::assertEquals($expected, $model->encryptedCollection);
        self::assertNotEquals($expected, $model->getRawOriginal('encryptedCollection'));
        self::assertEquals($expected, collect(Json::decode($this->decryptRaw($model, 'encryptedCollection'), false)));

        $updated = collect(['updated' => 'object']);
        $model->update(['encryptedCollection' => $updated]);
        self::assertIsObject($model->encryptedCollection);
        self::assertEquals($updated, $model->encryptedCollection);
        self::assertNotEquals($updated, $model->getRawOriginal('encryptedCollection'));
        self::assertEquals($updated, collect(Json::decode($this->decryptRaw($model, 'encryptedCollection'), false)));
    }
}

Function Calls

None

Variables

None

Stats

MD5 49648dc5504750776a7fddf267f032ae
Eval Count 0
Decode Time 90 ms