47 $this->contextMock = $this->getMockBuilder(\
Magento\Framework\
App\Action\Context::class)
48 ->disableOriginalConstructor()
50 $this->sessionMock = $this->getMockBuilder(\
Magento\Customer\Model\Session::class)
51 ->disableOriginalConstructor()
52 ->setMethods([
'getId',
'logout',
'setBeforeAuthUrl',
'setLastCustomerId'])
55 $this->cookieMetadataFactory = $this->getMockBuilder(CookieMetadataFactory::class)
56 ->disableOriginalConstructor()
58 $this->cookieManager = $this->getMockBuilder(PhpCookieManager::class)
59 ->disableOriginalConstructor()
61 $this->cookieMetadata = $this->getMockBuilder(CookieMetadata::class)
62 ->disableOriginalConstructor()
64 $this->redirectFactory = $this->getMockBuilder(RedirectFactory::class)
65 ->disableOriginalConstructor()
67 $this->resultRedirect = $this->getMockBuilder(Redirect::class)
68 ->disableOriginalConstructor()
70 $this->contextMock->expects($this->once())
71 ->method(
'getResultRedirectFactory')
72 ->willReturn($this->redirectFactory);
74 $this->redirect = $this->getMockBuilder(RedirectInterface::class)
75 ->getMockForAbstractClass();
76 $this->contextMock->expects($this->once())
77 ->method(
'getRedirect')
78 ->willReturn($this->redirect);
80 $this->controller =
new Logout($this->contextMock, $this->sessionMock);
82 $refClass = new \ReflectionClass(Logout::class);
83 $cookieMetadataManagerProperty = $refClass->getProperty(
'cookieMetadataManager');
84 $cookieMetadataManagerProperty->setAccessible(
true);
85 $cookieMetadataManagerProperty->setValue($this->controller, $this->cookieManager);
87 $cookieMetadataFactoryProperty = $refClass->getProperty(
'cookieMetadataFactory');
88 $cookieMetadataFactoryProperty->setAccessible(
true);
89 $cookieMetadataFactoryProperty->setValue($this->controller, $this->cookieMetadataFactory);
95 $refererUrl =
'http://referer.url';
97 $this->sessionMock->expects($this->once())
100 $this->sessionMock->expects($this->once())
103 $this->redirect->expects($this->once())
104 ->method(
'getRefererUrl')
105 ->willReturn($refererUrl);
106 $this->sessionMock->expects($this->once())
107 ->method(
'setBeforeAuthUrl')
110 $this->sessionMock->expects($this->once())
111 ->method(
'setLastCustomerId')
114 $this->cookieManager->expects($this->once())
115 ->method(
'getCookie')
116 ->with(
'mage-cache-sessid')
118 $this->cookieMetadataFactory->expects($this->once())
119 ->method(
'createCookieMetadata')
120 ->willReturn($this->cookieMetadata);
121 $this->cookieMetadata->expects($this->once())
124 $this->cookieManager->expects($this->once())
125 ->method(
'deleteCookie')
126 ->with(
'mage-cache-sessid', $this->cookieMetadata);
127 $this->redirectFactory->expects($this->once())
129 ->willReturn($this->resultRedirect);
130 $this->resultRedirect->expects($this->once())
132 ->with(
'*/*/logoutSuccess');
133 $this->assertSame($this->resultRedirect, $this->controller->execute());