133 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			133 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
<?php
 | 
						|
/**
 | 
						|
 * Copyright © Magento, Inc. All rights reserved.
 | 
						|
 * See COPYING.txt for license details.
 | 
						|
 */
 | 
						|
namespace Magento\Paypal\Controller;
 | 
						|
 | 
						|
use Magento\Checkout\Model\Session;
 | 
						|
use Magento\Paypal\Model\Config;
 | 
						|
use Magento\Quote\Model\Quote;
 | 
						|
use Magento\Quote\Api\CartRepositoryInterface;
 | 
						|
use Magento\Framework\Api\FilterBuilder;
 | 
						|
use Magento\Framework\Api\SearchCriteriaBuilder;
 | 
						|
use Magento\Sales\Api\Data\OrderInterface;
 | 
						|
use Magento\Sales\Api\OrderRepositoryInterface;
 | 
						|
 | 
						|
/**
 | 
						|
 * @magentoDataFixture Magento/Sales/_files/order.php
 | 
						|
 */
 | 
						|
class PayflowTest extends \Magento\TestFramework\TestCase\AbstractController
 | 
						|
{
 | 
						|
    /**
 | 
						|
     * @var OrderRepositoryInterface
 | 
						|
     */
 | 
						|
    private $orderRepository;
 | 
						|
 | 
						|
    /**
 | 
						|
     * @var CartRepositoryInterface
 | 
						|
     */
 | 
						|
    private $quoteRepository;
 | 
						|
 | 
						|
    /**
 | 
						|
     * @var OrderInterface
 | 
						|
     */
 | 
						|
    private $order;
 | 
						|
 | 
						|
    /**
 | 
						|
     * @inheritdoc
 | 
						|
     */
 | 
						|
    protected function setUp(): void
 | 
						|
    {
 | 
						|
        parent::setUp();
 | 
						|
 | 
						|
        /** @var FilterBuilder $filterBuilder */
 | 
						|
        $filterBuilder = $this->_objectManager->get(FilterBuilder::class);
 | 
						|
        $filters = [
 | 
						|
            $filterBuilder->setField(OrderInterface::INCREMENT_ID)
 | 
						|
                ->setValue('100000001')
 | 
						|
                ->create(),
 | 
						|
        ];
 | 
						|
 | 
						|
        /** @var SearchCriteriaBuilder $searchCriteriaBuilder */
 | 
						|
        $searchCriteriaBuilder = $this->_objectManager->get(SearchCriteriaBuilder::class);
 | 
						|
        $searchCriteria = $searchCriteriaBuilder->addFilters($filters)
 | 
						|
            ->create();
 | 
						|
 | 
						|
        $this->orderRepository = $this->_objectManager->get(OrderRepositoryInterface::class);
 | 
						|
        $orders = $this->orderRepository->getList($searchCriteria)
 | 
						|
            ->getItems();
 | 
						|
 | 
						|
        /** @var OrderInterface $order */
 | 
						|
        $this->order = array_pop($orders);
 | 
						|
        $this->order->getPayment()->setMethod(Config::METHOD_PAYFLOWLINK);
 | 
						|
 | 
						|
        /** @var $quote \Magento\Quote\Model\Quote */
 | 
						|
        $quote = $this->_objectManager->create(Quote::class)->setStoreid($this->order->getStoreId());
 | 
						|
 | 
						|
        $this->quoteRepository = $this->_objectManager->get(CartRepositoryInterface::class);
 | 
						|
        $this->quoteRepository->save($quote);
 | 
						|
 | 
						|
        $this->order->setQuoteId($quote->getId());
 | 
						|
        $this->orderRepository->save($this->order);
 | 
						|
 | 
						|
        $session = $this->_objectManager->get(Session::class);
 | 
						|
        $session->setLastRealOrderId($this->order->getRealOrderId())->setLastQuoteId($this->order->getQuoteId());
 | 
						|
    }
 | 
						|
 | 
						|
    public function testCancelPaymentActionIsContentGenerated()
 | 
						|
    {
 | 
						|
        $this->dispatch('paypal/payflow/cancelpayment');
 | 
						|
        $this->assertStringContainsString("goToSuccessPage = ''", $this->getResponse()->getBody());
 | 
						|
    }
 | 
						|
 | 
						|
    public function testReturnurlActionIsContentGenerated()
 | 
						|
    {
 | 
						|
        $checkoutHelper = $this->_objectManager->create(\Magento\Paypal\Helper\Checkout::class);
 | 
						|
        $checkoutHelper->cancelCurrentOrder('test');
 | 
						|
        $this->dispatch('paypal/payflow/returnurl');
 | 
						|
        $this->assertStringContainsString("goToSuccessPage = ''", $this->getResponse()->getBody());
 | 
						|
    }
 | 
						|
 | 
						|
    public function testFormActionIsContentGenerated()
 | 
						|
    {
 | 
						|
        $this->dispatch('paypal/payflow/form');
 | 
						|
        $this->assertStringContainsString(
 | 
						|
            '<form id="token_form" method="GET" action="https://payflowlink.paypal.com">',
 | 
						|
            $this->getResponse()->getBody()
 | 
						|
        );
 | 
						|
        // Check P3P header
 | 
						|
        $headerConstraints = [];
 | 
						|
        foreach ($this->getResponse()->getHeaders() as $header) {
 | 
						|
            $headerConstraints[] = new \PHPUnit\Framework\Constraint\IsEqual($header->getFieldName());
 | 
						|
        }
 | 
						|
        $constraint = new \PHPUnit\Framework\Constraint\LogicalOr();
 | 
						|
        $constraint->setConstraints($headerConstraints);
 | 
						|
        $this->assertThat('P3P', $constraint);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @magentoConfigFixture current_store payment/paypal_payflow/active 1
 | 
						|
     * @magentoConfigFixture current_store paypal/general/business_account merchant_2012050718_biz@example.com
 | 
						|
     * @return void
 | 
						|
     */
 | 
						|
    public function testCancelAction(): void
 | 
						|
    {
 | 
						|
        $orderId = $this->order->getEntityId();
 | 
						|
        /** @var \Magento\Sales\Model\Order $order */
 | 
						|
        $order = $this->orderRepository->get($orderId);
 | 
						|
        /** @var $quote \Magento\Quote\Model\Quote */
 | 
						|
        $quote = $this->quoteRepository->get($order->getQuoteId());
 | 
						|
 | 
						|
        $session = $this->_objectManager->get(Session::class);
 | 
						|
        $session->setQuoteId($quote->getId());
 | 
						|
        $session->setPaypalStandardQuoteId($quote->getId())->setLastRealOrderId('100000001');
 | 
						|
        $this->dispatch('paypal/payflow/cancelpayment');
 | 
						|
 | 
						|
        $order = $this->_objectManager->create(OrderRepositoryInterface::class)->get($orderId);
 | 
						|
        $this->assertEquals('canceled', $order->getState());
 | 
						|
        $this->assertEquals($session->getQuote()->getGrandTotal(), $quote->getGrandTotal());
 | 
						|
        $this->assertEquals($session->getQuote()->getItemsCount(), $quote->getItemsCount());
 | 
						|
    }
 | 
						|
}
 |