![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/cartforge.co/vendor/magento/module-sales/Test/Unit/Helper/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ declare(strict_types=1); namespace Magento\Sales\Test\Unit\Helper; use Magento\Customer\Model\Session; use Magento\Framework\Api\SearchCriteriaBuilder; use Magento\Framework\Api\SearchCriteriaInterface; use Magento\Framework\App\Helper\Context; use Magento\Framework\App\Request\Http; use Magento\Framework\App\ViewInterface; use Magento\Framework\Controller\Result\RedirectFactory; use Magento\Framework\Exception\InputException; use Magento\Framework\Message\ManagerInterface; use Magento\Framework\Registry; use Magento\Framework\Stdlib\Cookie\CookieMetadataFactory; use Magento\Framework\Stdlib\Cookie\CookieSizeLimitReachedException; use Magento\Framework\Stdlib\Cookie\FailureToSendException; use Magento\Framework\Stdlib\Cookie\PublicCookieMetadata; use Magento\Framework\Stdlib\CookieManagerInterface; use Magento\Framework\TestFramework\Unit\Helper\ObjectManager as ObjectManagerHelper; use Magento\Sales\Api\Data\OrderSearchResultInterface; use Magento\Sales\Api\OrderRepositoryInterface; use Magento\Sales\Helper\Guest; use Magento\Sales\Model\Order; use Magento\Sales\Model\Order\Address; use Magento\Sales\Model\OrderFactory; use Magento\Store\Model\Store; use Magento\Store\Model\StoreManagerInterface; use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; /** * @SuppressWarnings(PHPMD.CouplingBetweenObjects) */ class GuestTest extends TestCase { /** * @var Guest */ protected $guest; /** * @var Session|MockObject */ protected $sessionMock; /** * @var CookieManagerInterface|MockObject */ protected $cookieManagerMock; /** * @var CookieMetadataFactory|MockObject */ protected $cookieMetadataFactoryMock; /** * @var ManagerInterface|MockObject */ protected $managerInterfaceMock; /** * @var MockObject */ protected $orderFactoryMock; /** * @var ViewInterface|MockObject */ protected $viewInterfaceMock; /** * @var Store|MockObject */ protected $storeModelMock; /** * @var Order|MockObject */ protected $salesOrderMock; /** * @var OrderRepositoryInterface|MockObject */ private $orderRepository; /** * @var SearchCriteriaBuilder|MockObject */ private $searchCriteriaBuilder; /** * @inheritDoc */ protected function setUp(): void { $appContextHelperMock = $this->createMock(Context::class); $storeManagerInterfaceMock = $this->getMockForAbstractClass(StoreManagerInterface::class); $registryMock = $this->createMock(Registry::class); $this->sessionMock = $this->createMock(Session::class); $this->cookieManagerMock = $this->getMockForAbstractClass(CookieManagerInterface::class); $this->cookieMetadataFactoryMock = $this->createMock( CookieMetadataFactory::class ); $this->managerInterfaceMock = $this->getMockForAbstractClass(ManagerInterface::class); $this->orderFactoryMock = $this->createPartialMock(OrderFactory::class, ['create']); $this->viewInterfaceMock = $this->getMockForAbstractClass(ViewInterface::class); $this->storeModelMock = $this->getMockBuilder(Store::class) ->disableOriginalConstructor() ->getMock(); $this->salesOrderMock = $this->createPartialMock( Order::class, [ 'getProtectCode', 'loadByIncrementIdAndStoreId', 'loadByIncrementId', 'getId', 'getStoreId', 'getBillingAddress' ] ); $this->orderRepository = $this->getMockBuilder(OrderRepositoryInterface::class) ->onlyMethods(['getList']) ->disableOriginalConstructor() ->getMockForAbstractClass(); $this->searchCriteriaBuilder = $this->getMockBuilder(SearchCriteriaBuilder::class) ->onlyMethods(['addFilter', 'create']) ->disableOriginalConstructor() ->getMockForAbstractClass(); $orderSearchResult = $this->getMockBuilder(OrderSearchResultInterface::class) ->onlyMethods(['getTotalCount', 'getItems']) ->disableOriginalConstructor() ->getMockForAbstractClass(); $resultRedirectFactory = $this->getMockBuilder(RedirectFactory::class) ->onlyMethods(['create']) ->disableOriginalConstructor() ->getMock(); $this->orderRepository->method('getList')->willReturn($orderSearchResult); $orderSearchResult->method('getTotalCount')->willReturn(1); $orderSearchResult->method('getItems')->willReturn([ 2 => $this->salesOrderMock]); $searchCriteria = $this ->getMockBuilder(SearchCriteriaInterface::class) ->getMockForAbstractClass(); $storeManagerInterfaceMock->expects($this->any())->method('getStore')->willReturn($this->storeModelMock); $this->searchCriteriaBuilder->method('create')->willReturn($searchCriteria); $this->storeModelMock->method('getId')->willReturn(1); $this->salesOrderMock->expects($this->any())->method('getStoreId')->willReturn(1); $objectManagerHelper = new ObjectManagerHelper($this); $this->guest = $objectManagerHelper->getObject( Guest::class, [ 'context' => $appContextHelperMock, 'storeManager' => $storeManagerInterfaceMock, 'coreRegistry' => $registryMock, 'customerSession' => $this->sessionMock, 'cookieManager' => $this->cookieManagerMock, 'cookieMetadataFactory' => $this->cookieMetadataFactoryMock, 'messageManager' => $this->managerInterfaceMock, 'orderFactory' => $this->orderFactoryMock, 'view' => $this->viewInterfaceMock, 'orderRepository' => $this->orderRepository, 'searchCriteriaBuilder' => $this->searchCriteriaBuilder, 'resultRedirectFactory' => $resultRedirectFactory ] ); } /** * Test load valid order with non empty post data. * * @param array $post * * @return void * @throws InputException * @throws CookieSizeLimitReachedException * @throws FailureToSendException * @dataProvider loadValidOrderNotEmptyPostDataProvider */ public function testLoadValidOrderNotEmptyPost(array $post): void { $incrementId = $post['oar_order_id']; $protectedCode = 'protectedCode'; $this->sessionMock->expects($this->once())->method('isLoggedIn')->willReturn(false); $requestMock = $this->createMock(Http::class); $requestMock->expects($this->once())->method('getPostValue')->willReturn($post); $this->searchCriteriaBuilder ->method('addFilter') ->withConsecutive( ['increment_id', trim($incrementId)], ['store_id', $this->storeModelMock->getId()] )->willReturnOnConsecutiveCalls($this->searchCriteriaBuilder, $this->searchCriteriaBuilder); $this->salesOrderMock->expects($this->any())->method('getId')->willReturn($incrementId); $billingAddressMock = $this->createPartialMock( Address::class, ['getLastname', 'getEmail', 'getPostcode'] ); $billingAddressMock->expects($this->once())->method('getLastname') ->willReturn($post['oar_billing_lastname']); $billingAddressMock->expects($this->any())->method('getEmail')->willReturn($post['oar_email']); $billingAddressMock->expects($this->any())->method('getPostcode')->willReturn($post['oar_zip']); $this->salesOrderMock->expects($this->once())->method('getBillingAddress')->willReturn($billingAddressMock); $this->salesOrderMock->expects($this->once())->method('getProtectCode')->willReturn($protectedCode); $metaDataMock = $this->createMock(PublicCookieMetadata::class); $metaDataMock->expects($this->once())->method('setPath') ->with(Guest::COOKIE_PATH) ->willReturnSelf(); $metaDataMock->expects($this->once()) ->method('setHttpOnly') ->with(true) ->willReturnSelf(); $metaDataMock->expects($this->once()) ->method('setSameSite') ->with('Lax') ->willReturnSelf(); $this->cookieMetadataFactoryMock->expects($this->once()) ->method('createPublicCookieMetadata') ->willReturn($metaDataMock); $this->cookieManagerMock->expects($this->once()) ->method('setPublicCookie') ->with(Guest::COOKIE_NAME, $this->anything(), $metaDataMock); $this->assertTrue($this->guest->loadValidOrder($requestMock)); } /** * Load valid order with non empty post data provider. * * @return array */ public function loadValidOrderNotEmptyPostDataProvider(): array { return [ [ [ 'oar_order_id' => '1', 'oar_type' => 'email', 'oar_billing_lastname' => 'White', 'oar_email' => '[email protected]', 'oar_zip' => '' ] ], [ [ 'oar_order_id' => ' 14 ', 'oar_type' => 'email', 'oar_billing_lastname' => 'Black ', 'oar_email' => ' [email protected] ', 'oar_zip' => '' ] ], [ [ 'oar_order_id' => ' 14 ', 'oar_type' => 'zip', 'oar_billing_lastname' => 'Black ', 'oar_email' => ' [email protected] ', 'oar_zip' => '123456 ' ] ] ]; } /** * @return void */ public function testLoadValidOrderStoredCookie(): void { $protectedCode = 'protectedCode'; $incrementId = '1'; $cookieData = $protectedCode . ':' . $incrementId; $cookieDataHash = base64_encode($cookieData); $this->sessionMock->expects($this->once())->method('isLoggedIn')->willReturn(false); $this->cookieManagerMock->expects($this->once()) ->method('getCookie') ->with(Guest::COOKIE_NAME) ->willReturn($cookieDataHash); $this->searchCriteriaBuilder ->method('addFilter') ->withConsecutive( ['increment_id', trim($incrementId)], ['store_id', $this->storeModelMock->getId()] )->willReturnOnConsecutiveCalls($this->searchCriteriaBuilder, $this->searchCriteriaBuilder); $this->salesOrderMock->expects($this->any())->method('getId')->willReturn($incrementId); $this->salesOrderMock->expects($this->once())->method('getProtectCode')->willReturn($protectedCode); $metaDataMock = $this->createMock(PublicCookieMetadata::class); $metaDataMock->expects($this->once()) ->method('setPath') ->with(Guest::COOKIE_PATH) ->willReturnSelf(); $metaDataMock->expects($this->once()) ->method('setHttpOnly') ->with(true) ->willReturnSelf(); $metaDataMock->expects($this->once()) ->method('setSameSite') ->with('Lax') ->willReturnSelf(); $this->cookieMetadataFactoryMock->expects($this->once()) ->method('createPublicCookieMetadata') ->willReturn($metaDataMock); $this->cookieManagerMock->expects($this->once()) ->method('setPublicCookie') ->with(Guest::COOKIE_NAME, $this->anything(), $metaDataMock); $requestMock = $this->createMock(Http::class); $this->assertTrue($this->guest->loadValidOrder($requestMock)); } }