93 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			93 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
<?php
 | 
						|
/**
 | 
						|
 * Copyright © Magento, Inc. All rights reserved.
 | 
						|
 * See COPYING.txt for license details.
 | 
						|
 */
 | 
						|
 | 
						|
namespace Magento\Paypal\Model;
 | 
						|
 | 
						|
use Magento\Framework\DataObject;
 | 
						|
use Magento\Framework\HTTP\LaminasClient;
 | 
						|
use Magento\Framework\HTTP\LaminasClientFactory;
 | 
						|
use Magento\Framework\Math\Random;
 | 
						|
use Magento\Framework\ObjectManagerInterface;
 | 
						|
use Magento\Payment\Model\Method\Logger;
 | 
						|
use Magento\Paypal\Model\Payflow\Service\Gateway;
 | 
						|
use Magento\Sales\Model\Order;
 | 
						|
use Magento\TestFramework\Helper\Bootstrap;
 | 
						|
use PHPUnit\Framework\TestCase;
 | 
						|
 | 
						|
class PayflowproTest extends TestCase
 | 
						|
{
 | 
						|
    /**
 | 
						|
     * @var ObjectManagerInterface
 | 
						|
     */
 | 
						|
    protected $_objectManager;
 | 
						|
 | 
						|
    /**
 | 
						|
     * @var Payflowpro
 | 
						|
     */
 | 
						|
    protected $_model;
 | 
						|
 | 
						|
    /**
 | 
						|
     * @var LaminasClient
 | 
						|
     */
 | 
						|
    protected $_httpClientMock;
 | 
						|
 | 
						|
    /**
 | 
						|
     * @var Gateway
 | 
						|
     */
 | 
						|
    protected $gatewayMock;
 | 
						|
 | 
						|
    protected function setUp(): void
 | 
						|
    {
 | 
						|
        $this->_objectManager = Bootstrap::getObjectManager();
 | 
						|
        $httpClientFactoryMock = $this->getMockBuilder(LaminasClientFactory::class)
 | 
						|
            ->setMethods(['create'])
 | 
						|
            ->disableOriginalConstructor()
 | 
						|
            ->getMock();
 | 
						|
        $this->_httpClientMock = $this->getMockBuilder(LaminasClient::class)->setMethods([])
 | 
						|
            ->disableOriginalConstructor()->getMock();
 | 
						|
        $this->_httpClientMock->expects($this->any())->method('setUri')->willReturnSelf();
 | 
						|
        $this->_httpClientMock->expects($this->any())->method('setOptions')->willReturnSelf();
 | 
						|
        $this->_httpClientMock->expects($this->any())->method('setMethod')->willReturnSelf();
 | 
						|
        $this->_httpClientMock->expects($this->any())->method('setParameterPost')->willReturnSelf();
 | 
						|
        $this->_httpClientMock->expects($this->any())->method('setHeaders')->willReturnSelf();
 | 
						|
        $this->_httpClientMock->expects($this->any())->method('setUrlEncodeBody')->willReturnSelf();
 | 
						|
 | 
						|
        $httpClientFactoryMock->expects($this->any())->method('create')
 | 
						|
            ->willReturn($this->_httpClientMock);
 | 
						|
 | 
						|
        $mathRandomMock = $this->createMock(Random::class);
 | 
						|
        $loggerMock = $this->createMock(Logger::class);
 | 
						|
        $this->gatewayMock =$this->_objectManager->create(
 | 
						|
            Gateway::class,
 | 
						|
            [
 | 
						|
                'httpClientFactory' => $httpClientFactoryMock,
 | 
						|
                'mathRandom' => $mathRandomMock,
 | 
						|
                'logger' => $loggerMock,
 | 
						|
            ]
 | 
						|
        );
 | 
						|
        $this->_model = $this->_objectManager->create(
 | 
						|
            Payflowpro::class,
 | 
						|
            ['gateway' => $this->gatewayMock]
 | 
						|
        );
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @magentoDataFixture Magento/Sales/_files/order_paid_with_payflowpro.php
 | 
						|
     */
 | 
						|
    public function testReviewPaymentNullResponce()
 | 
						|
    {
 | 
						|
        /** @var Order $order */
 | 
						|
        $order = $this->_objectManager->create(Order::class);
 | 
						|
        $order->loadByIncrementId('100000001');
 | 
						|
 | 
						|
        $this->_httpClientMock->expects($this->any())->method('send')
 | 
						|
            ->willReturn(new DataObject(['body' => 'RESULTval=12&val2=34']));
 | 
						|
        $expectedResult = ['resultval' => '12', 'val2' => '34', 'result_code' => null];
 | 
						|
 | 
						|
        $this->assertEquals($expectedResult, $this->_model->acceptPayment($order->getPayment()));
 | 
						|
    }
 | 
						|
}
 |