magento2-docker/dev/tests/integration/testsuite/Magento/Paypal/Controller/PayflowTest.php

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());
}
}