Skip to content

Commit

Permalink
add transaction refund client unit test for custom headers
Browse files Browse the repository at this point in the history
  • Loading branch information
RokPopov committed Jan 19, 2024
1 parent 78d3e45 commit 324bf49
Showing 1 changed file with 98 additions and 0 deletions.
98 changes: 98 additions & 0 deletions Test/Unit/Gateway/Http/Client/TransactionRefundTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
<?php
/**
*
* Adyen Payment module (https://www.adyen.com/)
*
* Copyright (c) 2024 Adyen N.V. (https://www.adyen.com/)
* See LICENSE.txt for license details.
*
* Author: Adyen <magento@adyen.com>
*/

namespace Adyen\Payment\Test\Unit\Gateway\Http\Client;

use Adyen\Client;
use Adyen\Payment\Gateway\Http\Client\TransactionRefund;
use Adyen\Payment\Helper\Data;
use Adyen\Payment\Helper\Idempotency;
use Adyen\Payment\Test\Unit\AbstractAdyenTestCase;
use Adyen\Service\Checkout;
use Magento\Payment\Gateway\Http\TransferInterface;
use PHPUnit\Framework\MockObject\MockObject;

class TransactionRefundTest extends AbstractAdyenTestCase
{
/**
* @var Data|MockObject
*/
private $adyenHelperMock;

/**
* @var Idempotency|MockObject
*/
private $idempotencyHelperMock;

/**
* @var TransactionRefund
*/
private $transactionRefund;

protected function setUp(): void
{
$this->adyenHelperMock = $this->createMock(Data::class);
$this->idempotencyHelperMock = $this->createMock(Idempotency::class);

$this->transactionRefund = new TransactionRefund(
$this->adyenHelperMock,
$this->idempotencyHelperMock
);
}

public function testPlaceRequestIncludesHeadersInRequest()
{
$requestBody = [
'amount' => ['value' => 1000, 'currency' => 'EUR'],
'paymentPspReference' => '123456789'
];

$headers = ['idempotencyExtraData' => ['order_id' => '1001']];

$transferObjectMock = $this->createConfiguredMock(TransferInterface::class, [
'getBody' => [$requestBody],
'getHeaders' => $headers,
'getClientConfig' => []
]);

$checkoutServiceMock = $this->createMock(Checkout::class);
$adyenClientMock = $this->createMock(Client::class);

$this->adyenHelperMock->method('initializeAdyenClientWithClientConfig')->willReturn($adyenClientMock);
$this->adyenHelperMock->method('createAdyenCheckoutService')->willReturn($checkoutServiceMock);
$this->adyenHelperMock->method('buildRequestHeaders')->willReturn(['custom-header' => 'value']);

$this->idempotencyHelperMock->expects($this->once())
->method('generateIdempotencyKey')
->with($requestBody, $headers['idempotencyExtraData'])
->willReturn('generated_idempotency_key');

$checkoutServiceMock->expects($this->once())
->method('refunds')
->with(
$this->equalTo($requestBody),
$this->callback(function ($requestOptions) {
$this->assertArrayHasKey('idempotencyKey', $requestOptions);
$this->assertArrayHasKey('headers', $requestOptions);
$this->assertEquals('generated_idempotency_key', $requestOptions['idempotencyKey']);
$this->assertArrayHasKey('custom-header', $requestOptions['headers']);
return true;
})
)
->willReturn(['pspReference' => 'refund_psp_reference']);

$responses = $this->transactionRefund->placeRequest($transferObjectMock);

$this->assertIsArray($responses);
$this->assertCount(1, $responses);
$this->assertArrayHasKey('pspReference', $responses[0]);
}
}

0 comments on commit 324bf49

Please sign in to comment.