Skip to content

Commit

Permalink
Replace unused Entity private method
Browse files Browse the repository at this point in the history
  • Loading branch information
paulbalandan committed Aug 26, 2021
1 parent 4d0110f commit 35fa4d5
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 33 deletions.
1 change: 0 additions & 1 deletion rector.php
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,6 @@

// private method called via getPrivateMethodInvoker
RemoveUnusedPrivateMethodRector::class => [
__DIR__ . '/system/Entity/Entity.php',
__DIR__ . '/tests/system/Test/ReflectionHelperTest.php',
],

Expand Down
14 changes: 0 additions & 14 deletions system/Entity/Entity.php
Original file line number Diff line number Diff line change
Expand Up @@ -389,20 +389,6 @@ protected function castAs($value, string $attribute, string $method = 'get')
return $handlers[$type]::$method($value, $params);
}

/**
* Cast as JSON
*
* @param mixed $value
*
* @throws CastException
*
* @return mixed
*/
private function castAsJson($value, bool $asArray = false)
{
return JsonCast::get($value, $asArray ? ['array'] : []);
}

/**
* Support for json_encode()
*
Expand Down
43 changes: 25 additions & 18 deletions tests/system/Entity/EntityTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@

namespace CodeIgniter\Entity;

use Closure;
use CodeIgniter\Entity\Exceptions\CastException;
use CodeIgniter\HTTP\URI;
use CodeIgniter\I18n\Time;
Expand Down Expand Up @@ -589,54 +590,60 @@ public function testCastAsJSONErrorUTF8()

public function testCastAsJSONSyntaxError()
{
$entity = new Entity();

$method = $this->getPrivateMethodInvoker($entity, 'castAsJson');

$this->expectException(CastException::class);
$this->expectExceptionMessage('Syntax error, malformed JSON');

$method('{ this is bad string', true);
(Closure::bind(static function (string $value) {
$entity = new Entity();
$entity->casts['dummy'] = 'json[array]';

return $entity->castAs($value, 'dummy');
}, null, Entity::class))('{ this is bad string');
}

public function testCastAsJSONAnotherErrorDepth()
{
$entity = new Entity();

$method = $this->getPrivateMethodInvoker($entity, 'castAsJson');

$this->expectException(CastException::class);
$this->expectExceptionMessage('Maximum stack depth exceeded');

$string = '{' . str_repeat('"test":{', 513) . '"test":"value"' . str_repeat('}', 513) . '}';

$method($string, true);
(Closure::bind(static function (string $value) {
$entity = new Entity();
$entity->casts['dummy'] = 'json[array]';

return $entity->castAs($value, 'dummy');
}, null, Entity::class))($string);
}

public function testCastAsJSONControlCharCheck()
{
$entity = new Entity();
$method = $this->getPrivateMethodInvoker($entity, 'castAsJson');

$this->expectException(CastException::class);
$this->expectExceptionMessage('Unexpected control character found');

$string = "{\n\t\"property1\": \"The quick brown fox\njumps over the lazy dog\",\n\t\"property2\":\"value2\"\n}";

$method($string, true);
(Closure::bind(static function (string $value) {
$entity = new Entity();
$entity->casts['dummy'] = 'json[array]';

return $entity->castAs($value, 'dummy');
}, null, Entity::class))($string);
}

public function testCastAsJSONStateMismatch()
{
$entity = new Entity();
$method = $this->getPrivateMethodInvoker($entity, 'castAsJson');

$this->expectException(CastException::class);
$this->expectExceptionMessage('Underflow or the modes mismatch');

$string = '[{"name":"jack","product_id":"1234"]';

$method($string, true);
(Closure::bind(static function (string $value) {
$entity = new Entity();
$entity->casts['dummy'] = 'json[array]';

return $entity->castAs($value, 'dummy');
}, null, Entity::class))($string);
}

public function testCastSetter()
Expand Down

0 comments on commit 35fa4d5

Please sign in to comment.