Ability to handle missing accesors for unknown objects in json

-  JSON body that has objects who do not have Model Getter Setters are handled properly
This commit is contained in:
Jay Patel
2015-02-23 21:18:45 -06:00
parent 397f1a66e2
commit bedb6aa047
7 changed files with 89 additions and 25 deletions

View File

@@ -98,6 +98,28 @@ class ModelTest extends \PHPUnit_Framework_TestCase
}
}
/**
* Test Case to determine if the unknown object is returned, it would not add that object to the model.
*/
public function testUnknownObjectConversion()
{
PayPalConfigManager::getInstance()->addConfigs(array('validation.level' => 'disabled'));
$json = '{"name":"test","unknown":{ "id" : "123", "object": "456"},"description":"description"}';
$obj = new SimpleClass();
$obj->fromJson($json);
$this->assertEquals("test", $obj->getName());
$this->assertEquals("description", $obj->getDescription());
$resultJson = $obj->toJSON();
$this->assertContains("unknown", $resultJson);
$this->assertContains("id", $resultJson);
$this->assertContains("object", $resultJson);
$this->assertContains("123", $resultJson);
$this->assertContains("456", $resultJson);
PayPalConfigManager::getInstance()->addConfigs(array('validation.level' => 'strict'));
}
public function testInvalidMagicMethodWithDisabledValidation()
{
PayPalConfigManager::getInstance()->addConfigs(array('validation.level' => 'disabled'));

View File

@@ -146,5 +146,3 @@ class PayPalCredentialManagerTest extends \PHPUnit_Framework_TestCase
$this->assertAttributeEquals($this->config['acct1.ClientSecret'], 'clientSecret', $cred);
}
}
?>

View File

@@ -1,6 +1,7 @@
<?php
namespace PayPal\Test\Validation;
use PayPal\Core\PayPalConfigManager;
use PayPal\Test\Common\SimpleClass;
use PayPal\Validation\ModelAccessorValidator;
@@ -27,6 +28,16 @@ class ModelAccessValidatorTest extends \PHPUnit_Framework_TestCase
);
}
public function setUp()
{
PayPalConfigManager::getInstance()->addConfigs(array('validation.level' => 'strict'));
}
public function tearDown()
{
PayPalConfigManager::getInstance()->addConfigs(array('validation.level' => 'strict'));
}
/**
*
* @dataProvider positiveProvider