Webhook Validate Event Support

- Added validateWebhookEvent method
- Updated Tests
- Updated Samples
This commit is contained in:
Jay Patel
2015-06-08 13:18:13 -05:00
parent ddefd1d633
commit c6f8971c7e
3 changed files with 172 additions and 2 deletions

View File

@@ -3,6 +3,7 @@
namespace PayPal\Test\Api;
use PayPal\Common\PayPalResourceModel;
use PayPal\Exception\PayPalConnectionException;
use PayPal\Validation\ArgumentValidator;
use PayPal\Api\WebhookEventList;
use PayPal\Rest\ApiContext;
@@ -128,6 +129,48 @@ class WebhookEventTest extends \PHPUnit_Framework_TestCase
$this->assertNotNull($result);
}
/**
* @dataProvider mockProvider
* @param WebhookEvent $obj
*/
public function testValidateWebhook($obj, $mockApiContext)
{
$mockPayPalRestCall = $this->getMockBuilder('\PayPal\Transport\PayPalRestCall')
->disableOriginalConstructor()
->getMock();
$mockPayPalRestCall->expects($this->any())
->method('execute')
->will($this->returnValue(
WebhookEventTest::getJson()
));
$result = WebhookEvent::validateAndGetReceivedEvent('{"id":"123"}', $mockApiContext, $mockPayPalRestCall);
//$result = $obj->get("eventId", $mockApiContext, $mockPayPalRestCall);
$this->assertNotNull($result);
}
/**
* @dataProvider mockProvider
* @param WebhookEvent $obj
* @param ApiContext $mockApiContext
* @expectedException \InvalidArgumentException
* @expectedExceptionMessage Webhook Event Id provided in the data is incorrect. This could happen if anyone other than PayPal is faking the incoming webhook data.
*/
public function testValidateWebhook404($obj, $mockApiContext)
{
$mockPayPalRestCall = $this->getMockBuilder('\PayPal\Transport\PayPalRestCall')
->disableOriginalConstructor()
->getMock();
$mockPayPalRestCall->expects($this->any())
->method('execute')
->will($this->throwException(new PayPalConnectionException(null, "404 not found", 404)));
$result = WebhookEvent::validateAndGetReceivedEvent('{"id":"123"}', $mockApiContext, $mockPayPalRestCall);
$this->assertNotNull($result);
}
public function mockProvider()
{
$obj = self::getObject();
@@ -139,4 +182,57 @@ class WebhookEventTest extends \PHPUnit_Framework_TestCase
array($obj, null)
);
}
/**
* @dataProvider mockProvider
* @expectedException \InvalidArgumentException
* @expectedExceptionMessage Body cannot be null or empty
*/
public function testValidateWebhookNull($mockApiContext)
{
WebhookEvent::validateAndGetReceivedEvent(null, $mockApiContext);
}
/**
* @dataProvider mockProvider
* @expectedException \InvalidArgumentException
* @expectedExceptionMessage Body cannot be null or empty
*/
public function testValidateWebhookEmpty($mockApiContext)
{
WebhookEvent::validateAndGetReceivedEvent('', $mockApiContext);
}
/**
* @dataProvider mockProvider
* @expectedException \InvalidArgumentException
* @expectedExceptionMessage Request Body is not a valid JSON.
*/
public function testValidateWebhookInvalid($mockApiContext)
{
WebhookEvent::validateAndGetReceivedEvent('something-invalid', $mockApiContext);
}
/**
* @dataProvider mockProvider
* @param $mockApiContext ApiContext
* @expectedException \PHPUnit_Framework_Error_Notice
* @expectedExceptionMessage Missing Accessor: PayPal\Api\WebhookEvent:setValid. You might be using older version of SDK. If not, create an issue at https://github.com/paypal/PayPal-PHP-SDK/issues
*/
public function testValidateWebhookValidJSONWithMissingObject($obj, $mockApiContext)
{
WebhookEvent::validateAndGetReceivedEvent('{"valid":"json"}', $mockApiContext);
}
/**
* @dataProvider mockProvider
* @param $mockApiContext ApiContext
* @expectedException \InvalidArgumentException
* @expectedExceptionMessage Id attribute not found in JSON. Possible reason could be invalid JSON Object
*/
public function testValidateWebhookValidJSONWithoutId($obj, $mockApiContext)
{
WebhookEvent::validateAndGetReceivedEvent('{"summary":"json"}', $mockApiContext);
}
}