forked from LiveCarta/PayPal-PHP-SDK
Webhook Validate Event Support
- Added validateWebhookEvent method - Updated Tests - Updated Samples
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user