1
0
Files
PayPal-PHP-Server-SDK/tests/E2E/AuthenticationMultiStepFlowTest.php
2024-09-16 15:00:03 +05:00

221 lines
8.3 KiB
PHP

<?php
declare(strict_types=1);
/*
* PaypalServerSDKLib
*
* This file was automatically generated by APIMATIC v3.0 ( https://www.apimatic.io ).
*/
namespace PaypalServerSDKLib\Tests\E2E;
use Exception;
use PaypalServerSDKLib\Controllers\OrdersController;
use PaypalServerSDKLib\Models\Builders\AddressBuilder;
use PaypalServerSDKLib\Models\Builders\AmountBreakdownBuilder;
use PaypalServerSDKLib\Models\Builders\AmountWithBreakdownBuilder;
use PaypalServerSDKLib\Models\Builders\CardAttributesBuilder;
use PaypalServerSDKLib\Models\Builders\CardExperienceContextBuilder;
use PaypalServerSDKLib\Models\Builders\CardRequestBuilder;
use PaypalServerSDKLib\Models\Builders\CardVerificationBuilder;
use PaypalServerSDKLib\Models\Builders\ItemBuilder;
use PaypalServerSDKLib\Models\Builders\MoneyBuilder;
use PaypalServerSDKLib\Models\Builders\OrderCaptureRequestBuilder;
use PaypalServerSDKLib\Models\Builders\OrderCaptureRequestPaymentSourceBuilder;
use PaypalServerSDKLib\Models\Builders\OrderRequestBuilder;
use PaypalServerSDKLib\Models\Builders\PurchaseUnitRequestBuilder;
use PaypalServerSDKLib\Models\CardVerificationMethod;
use PaypalServerSDKLib\Models\CheckoutPaymentIntent;
use PaypalServerSDKLib\Models\Order;
use PaypalServerSDKLib\Tests\Controllers\BaseTestController;
use PaypalServerSDKLib\Tests\WebDriverUtilities;
class AuthenticationMultiStepFlowTest extends BaseTestController
{
/**
* @var OrdersController OrdersController instance
*/
protected static $ordersController;
/**
* Setup test class
*/
public static function setUpBeforeClass(): void
{
$client = parent::getClient();
self::$ordersController = $client->getOrdersController();
}
public function testCreateOrder(): Order
{
$request = [
'body' => OrderRequestBuilder::init(
CheckoutPaymentIntent::CAPTURE,
[
PurchaseUnitRequestBuilder::init(
AmountWithBreakdownBuilder::init(
'USD',
'10.00'
)
->breakdown(
AmountBreakdownBuilder::init()
->itemTotal(
MoneyBuilder::init(
'USD',
'10.00'
)->build()
)->build()
)->build()
)
->description('Camera Shop')
->customId('testcustom_id')
->invoiceId('invoice_number_' . rand(1, 99999999999))
->items([
ItemBuilder::init(
'Levis 501 Selvedge STF',
MoneyBuilder::init(
'USD',
'5.00'
)->build(),
'1'
)
->tax(MoneyBuilder::init(
'USD',
'0.00'
)->build())
->sku('5158936')
->build(),
ItemBuilder::init(
'T-Shirt',
MoneyBuilder::init(
'USD',
'5.00'
)->build(),
'1'
)
->tax(MoneyBuilder::init(
'USD',
'0.00'
)->build())
->sku('1457432')
->build()
])
->build()
]
)->build(),
'payPalRequestId' => strval(rand(1, 99999999999)),
'payPalPartnerAttributionId' => 'PayPal-Partner-Attribution-Id',
'payPalClientMetadataId' => 'PayPal-Client-Metadata-Id',
'prefer' => 'return=representation'
];
$response = self::$ordersController->ordersCreate($request);
$this->assertTrue($response->isSuccess());
$this->assertEquals(201, $response->getStatusCode());
return $response->getResult();
}
/**
* @depends testCreateOrder
*/
public function testCaptureOrder(Order $orderDetail): ?string
{
$request = [
'id' => $orderDetail->getId(),
'prefer' => 'return=representation',
'body' => OrderCaptureRequestBuilder::init()
->paymentSource(
OrderCaptureRequestPaymentSourceBuilder::init()
->card(
CardRequestBuilder::init()
->name('John Doe')
->number('4868719460707704')
->expiry('2027-02')
->billingAddress(
AddressBuilder::init(
'US'
)
->addressLine1('2211 N First Street')
->adminArea1('CA')
->adminArea2('San Jose')
->postalCode('95131')
->build()
)
->attributes(
CardAttributesBuilder::init()
->verification(
CardVerificationBuilder::init()
->method(CardVerificationMethod::SCA_ALWAYS)
->build()
)
->build()
)
->experienceContext(CardExperienceContextBuilder::init()
->returnUrl('https://example.com/returnUrl')
->cancelUrl('https://example.com/cancelUrl')
->build())
->build()
)
->build()
)
->build()
];
$response = self::$ordersController->ordersCapture($request);
// TODO: Verify status 422, as its currently considered as a success case
$this->assertTrue($response->isError());
$this->assertEquals(422, $response->getStatusCode());
return $response->getResult()['links'][0]->href;
}
/**
* @depends testCaptureOrder
* @throws Exception
*/
public function testCompleteHeliosVerification(?string $href): void
{
$this->assertNotNull($href);
WebDriverUtilities::completeHeliosVerification($href ?? '');
}
/**
* @depends testCreateOrder
* @depends testCompleteHeliosVerification
*/
public function testCaptureOrderAgain(Order $orderDetail): void
{
$request = [
'id' => $orderDetail->getId(),
'payPalRequestId' => strval(rand(1, 99999999999)),
'prefer' => 'return=representation'
];
$response = self::$ordersController->ordersCapture($request);
$this->assertTrue($response->isSuccess());
$this->assertEquals(201, $response->getStatusCode());
}
/**
* @depends testCreateOrder
* @depends testCaptureOrderAgain
*/
public function testGetOrderDetails(Order $orderDetail): void
{
$request = [
'id' => $orderDetail->getId()
];
$response = self::$ordersController->ordersGet($request);
$this->assertTrue($response->isSuccess());
$this->assertEquals(200, $response->getStatusCode());
$this->assertEquals('COMPLETED', $response->getResult()->getStatus());
}
}