atk4\data\tests\FieldTest::testEncryptedField PHP Method

testEncryptedField() public method

public testEncryptedField ( )
    public function testEncryptedField()
    {
        $db = new Persistence_SQL($this->db->connection);
        $a = ['user' => ['_' => ['id' => 1, 'name' => 'John', 'secret' => 'Smith']]];
        $this->setDB($a);
        $encrypt = function ($value, $field, $persistence) {
            if (!$persistence instanceof \atk4\data\Persistence_SQL) {
                return $value;
            }
            /*
                        $algorithm = 'rijndael-128';
                        $key = md5($field->password, true);
                        $iv_length = mcrypt_get_iv_size( $algorithm, MCRYPT_MODE_CBC );
                        $iv = mcrypt_create_iv( $iv_length, MCRYPT_RAND );
                        return mcrypt_encrypt( $algorithm, $key, $value, MCRYPT_MODE_CBC, $iv );
            */
            return base64_encode($value);
        };
        $decrypt = function ($value, $field, $persistence) {
            if (!$persistence instanceof \atk4\data\Persistence_SQL) {
                return $value;
            }
            /*
                        $algorithm = 'rijndael-128';
                        $key = md5($field->password, true);
                        $iv_length = mcrypt_get_iv_size( $algorithm, MCRYPT_MODE_CBC );
                        $iv = mcrypt_create_iv( $iv_length, MCRYPT_RAND );
                        return mcrypt_encrypt( $algorithm, $key, $value, MCRYPT_MODE_CBC, $iv );
            */
            return base64_decode($value);
        };
        $m = new Model($db, 'user');
        $m->addField('name', ['mandatory' => true]);
        $m->addField('secret', ['typecast' => [$encrypt, $decrypt]]);
        $m->save(['name' => 'John', 'secret' => 'i am a woman']);
        $a = $this->getDB();
        $this->assertNotNull($a['user'][1]['secret']);
        $this->assertNotEquals('i am a woman', $a['user'][1]['secret']);
        $m->unload()->load(1);
        $this->assertEquals('i am a woman', $m['secret']);
    }