Skip to content

Commit b3ca755

Browse files
#32100: Admin login issue fix - unit test coverage.
1 parent db86583 commit b3ca755

File tree

1 file changed

+198
-0
lines changed
  • app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/Auth

1 file changed

+198
-0
lines changed
Lines changed: 198 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,198 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
namespace Magento\Backend\Test\Unit\Controller\Adminhtml\Auth;
9+
10+
use Laminas\Uri\Http;
11+
use Magento\Backend\App\Action\Context;
12+
use Magento\Backend\App\Area\FrontNameResolver;
13+
use Magento\Backend\App\BackendAppList;
14+
use Magento\Backend\Controller\Adminhtml\Auth\Login;
15+
use Magento\Backend\Helper\Data;
16+
use Magento\Backend\Model\Auth;
17+
use Magento\Backend\Model\Url;
18+
use Magento\Backend\Model\UrlFactory;
19+
use Magento\Backend\Model\View\Result\Redirect;
20+
use Magento\Framework\App\Cache\StateInterface as CacheState;
21+
use Magento\Framework\App\Cache\TypeListInterface as CacheTypeList;
22+
use Magento\Framework\App\RequestInterface as Request;
23+
use Magento\Framework\App\State;
24+
use Magento\Framework\Controller\Result\RedirectFactory;
25+
use Magento\Framework\Message\ManagerInterface as MessageManager;
26+
use Magento\Framework\TestFramework\Unit\Helper\ObjectManager as ObjectManagerHelper;
27+
use Magento\Framework\View\Result\PageFactory;
28+
use PHPUnit\Framework\MockObject\MockObject;
29+
use PHPUnit\Framework\TestCase;
30+
31+
/**
32+
* Test for \Magento\Backend\Controller\Adminhtml\Auth\Login.
33+
*/
34+
class LoginTest extends TestCase
35+
{
36+
/**
37+
* @var Login
38+
*/
39+
private $controller;
40+
41+
/**
42+
* @var Redirect|MockObject
43+
*/
44+
private $redirectMock;
45+
46+
/**
47+
* @var Request|MockObject
48+
*/
49+
private $requestMock;
50+
51+
/**
52+
* @var Auth|MockObject
53+
*/
54+
private $authMock;
55+
56+
/**
57+
* @var Http|MockObject
58+
*/
59+
private $uriMock;
60+
61+
/**
62+
* @var PageFactory|MockObject
63+
*/
64+
private $resultPageFactoryMock;
65+
66+
/**
67+
* @var BackendAppList|MockObject
68+
*/
69+
private $backendAppListMock;
70+
71+
/**
72+
* @var UrlFactory|MockObject
73+
*/
74+
private $backendUrlFactoryMock;
75+
76+
/**
77+
* @var Url|MockObject
78+
*/
79+
private $backendUrlMock;
80+
81+
/**
82+
* @var FrontNameResolver|MockObject
83+
*/
84+
private $frontNameResolverMock;
85+
86+
/**
87+
* @var RedirectFactory|MockObject
88+
*/
89+
private $resultRedirectFactoryMock;
90+
91+
/**
92+
* @var Data|MockObject
93+
*/
94+
private $helperMock;
95+
96+
protected function setUp(): void
97+
{
98+
$objectManagerHelper = new ObjectManagerHelper($this);
99+
100+
$this->helperMock = $this->createMock(Data::class);
101+
$this->requestMock = $this->getMockBuilder(Request::class)
102+
->setMethods(['getUri', 'getRequestUri'])
103+
->getMockForAbstractClass();
104+
$this->redirectMock = $this->getMockBuilder(Redirect::class)
105+
->disableOriginalConstructor()
106+
->disableOriginalClone()
107+
->getMock();
108+
$this->resultRedirectFactoryMock = $this->createMock(RedirectFactory::class);
109+
$this->resultPageFactoryMock = $this->createMock(PageFactory::class);
110+
$this->authMock = $this->createMock(Auth::class);
111+
$this->backendAppListMock = $this->createMock(BackendAppList::class);
112+
$this->backendUrlMock = $this->createMock(Url::class);
113+
$this->backendUrlFactoryMock = $this->createMock(UrlFactory::class);
114+
$this->frontNameResolverMock = $this->createMock(FrontNameResolver::class);
115+
$this->uriMock = $this->createMock(Http::class);
116+
117+
$this->resultRedirectFactoryMock->expects($this->any())
118+
->method('create')
119+
->willReturn($this->redirectMock);
120+
$this->backendUrlFactoryMock->expects($this->any())
121+
->method('create')
122+
->willReturn($this->backendUrlMock);
123+
$this->requestMock->expects($this->any())
124+
->method('getUri')
125+
->willReturn($this->uriMock);
126+
127+
$contextMock = $this->getMockBuilder(Context::class)
128+
->disableOriginalConstructor()
129+
->disableOriginalClone()
130+
->getMock();
131+
132+
$contextMock->expects($this->once())
133+
->method('getResultFactory')
134+
->willReturn($this->resultRedirectFactoryMock);
135+
$contextMock->expects($this->once())
136+
->method('getRequest')
137+
->willReturn($this->requestMock);
138+
$contextMock->expects($this->once())
139+
->method('getHelper')
140+
->willReturn($this->helperMock);
141+
$contextMock->expects($this->once())
142+
->method('getResultRedirectFactory')
143+
->willReturn($this->resultRedirectFactoryMock);
144+
$contextMock->expects($this->once())
145+
->method('getAuth')
146+
->willReturn($this->authMock);
147+
148+
$this->controller = $objectManagerHelper->getObject(
149+
Login::class,
150+
[
151+
'context' => $contextMock,
152+
'resultPageFactory' => $this->resultPageFactoryMock,
153+
'backendAppList' => $this->backendAppListMock,
154+
'backendUrlFactory' => $this->backendUrlFactoryMock,
155+
'frontNameResolver' => $this->frontNameResolverMock,
156+
]
157+
);
158+
}
159+
160+
/**
161+
* Test for isValidBackendUri method.
162+
*
163+
* @param string $requestUri
164+
* @param string $baseUrl
165+
* @param string $backendFrontName
166+
* @param bool $redirect
167+
*
168+
* @dataProvider isValidBackendUriDataProvider
169+
*/
170+
public function testIsValidBackendUri(string $requestUri, string $baseUrl, string $backendFrontName, bool $redirect)
171+
{
172+
$this->uriMock->expects($this->once())->method('isValid')->willReturn(true);
173+
$this->authMock->expects($this->once())->method('isLoggedIn')->willReturn(false);
174+
$this->requestMock->expects($this->once())->method('getRequestUri')->willReturn($requestUri);
175+
$this->backendUrlMock->expects($this->once())->method('getBaseUrl')->willReturn($baseUrl);
176+
$this->frontNameResolverMock->expects($this->once())->method('getFrontName')->willReturn($backendFrontName);
177+
178+
$this->resultPageFactoryMock->expects($this->exactly($redirect ? 0 : 1))->method('create');
179+
$this->resultRedirectFactoryMock->expects($this->exactly($redirect ? 1 : 0))->method('create');
180+
181+
$this->controller->execute();
182+
}
183+
184+
/**
185+
* Data provider for testIsValidBackendUri.
186+
*
187+
* @return array[]
188+
*/
189+
public function isValidBackendUriDataProvider()
190+
{
191+
return [
192+
'Rewrites on, valid url' => ['/index.php/admin', 'http://magento2.local/', 'admin', true],
193+
'Rewrites on, invalid url' => ['/admin', 'http://magento2.local/', 'admin', false],
194+
'Rewrites off, valid url' => ['/index.php/admin', 'http://magento2.local/index.php/', 'admin', false],
195+
'Rewrites off, invalid url' => ['/admin', 'http://magento2.local/index.php/', 'admin', true],
196+
];
197+
}
198+
}

0 commit comments

Comments
 (0)