249 lines
8.2 KiB
PHP
Executable File
249 lines
8.2 KiB
PHP
Executable File
<?php
|
|
/**
|
|
* Copyright © Magento, Inc. All rights reserved.
|
|
* See COPYING.txt for license details.
|
|
*/
|
|
namespace Magento\Backend\Controller\Adminhtml;
|
|
|
|
use Magento\Framework\Message\MessageInterface;
|
|
|
|
/**
|
|
* Test class for \Magento\Backend\Controller\Adminhtml\Auth
|
|
* @magentoAppArea adminhtml
|
|
* @magentoDbIsolation enabled
|
|
*/
|
|
class AuthTest extends \Magento\TestFramework\TestCase\AbstractController
|
|
{
|
|
/**
|
|
* @var \Magento\Backend\Model\Auth\Session
|
|
*/
|
|
protected $_session;
|
|
|
|
/**
|
|
* @var \Magento\Backend\Model\Auth
|
|
*/
|
|
protected $_auth;
|
|
|
|
protected function tearDown(): void
|
|
{
|
|
$this->_session = null;
|
|
$this->_auth = null;
|
|
parent::tearDown();
|
|
}
|
|
|
|
/**
|
|
* Performs user login
|
|
*/
|
|
protected function _login()
|
|
{
|
|
\Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
|
|
\Magento\Backend\Model\UrlInterface::class
|
|
)->turnOffSecretKey();
|
|
|
|
$this->_auth = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
|
|
\Magento\Backend\Model\Auth::class
|
|
);
|
|
$this->_auth->login(
|
|
\Magento\TestFramework\Bootstrap::ADMIN_NAME,
|
|
\Magento\TestFramework\Bootstrap::ADMIN_PASSWORD
|
|
);
|
|
$this->_session = $this->_auth->getAuthStorage();
|
|
}
|
|
|
|
/**
|
|
* Performs user logout
|
|
*/
|
|
protected function _logout()
|
|
{
|
|
$this->_auth->logout();
|
|
\Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
|
|
\Magento\Backend\Model\UrlInterface::class
|
|
)->turnOnSecretKey();
|
|
}
|
|
|
|
/**
|
|
* Check not logged state
|
|
* @covers \Magento\Backend\Controller\Adminhtml\Auth\Login::execute
|
|
*/
|
|
public function testNotLoggedLoginAction()
|
|
{
|
|
$this->dispatch('backend/admin/auth/login');
|
|
/** @var $backendUrlModel \Magento\Backend\Model\UrlInterface */
|
|
$backendUrlModel = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
|
|
\Magento\Backend\Model\UrlInterface::class
|
|
);
|
|
$backendUrlModel->turnOffSecretKey();
|
|
$url = $backendUrlModel->getUrl('admin');
|
|
$this->assertRedirect($this->stringStartsWith($url));
|
|
}
|
|
|
|
/**
|
|
* Check logged state
|
|
* @covers \Magento\Backend\Controller\Adminhtml\Auth\Login::execute
|
|
* @magentoDbIsolation enabled
|
|
*/
|
|
public function testLoggedLoginAction()
|
|
{
|
|
$this->_login();
|
|
|
|
$this->dispatch('backend/admin/auth/login');
|
|
/** @var $backendUrlModel \Magento\Backend\Model\UrlInterface */
|
|
$backendUrlModel = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
|
|
\Magento\Backend\Model\UrlInterface::class
|
|
);
|
|
$url = $backendUrlModel->getStartupPageUrl();
|
|
$expected = $backendUrlModel->getUrl($url);
|
|
$this->assertRedirect($this->stringStartsWith($expected));
|
|
|
|
$this->_logout();
|
|
}
|
|
|
|
/**
|
|
* @magentoAppIsolation enabled
|
|
*/
|
|
public function testNotLoggedLoginActionWithRedirect()
|
|
{
|
|
/** @var \Magento\Framework\Data\Form\FormKey $formKey */
|
|
$formKey = $this->_objectManager->get(\Magento\Framework\Data\Form\FormKey::class);
|
|
$this->getRequest()->setPostValue(
|
|
[
|
|
'login' => [
|
|
'username' => \Magento\TestFramework\Bootstrap::ADMIN_NAME,
|
|
'password' => \Magento\TestFramework\Bootstrap::ADMIN_PASSWORD,
|
|
],
|
|
'form_key' => $formKey->getFormKey(),
|
|
]
|
|
);
|
|
|
|
$this->dispatch('backend/admin/index/index');
|
|
|
|
$response = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()
|
|
->get(\Magento\Framework\App\ResponseInterface::class);
|
|
$code = $response->getHttpResponseCode();
|
|
$this->assertTrue($code >= 300 && $code < 400, 'Incorrect response code');
|
|
|
|
$this->assertTrue(
|
|
\Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
|
|
\Magento\Backend\Model\Auth::class
|
|
)->isLoggedIn()
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @covers \Magento\Backend\Controller\Adminhtml\Auth\Logout::execute
|
|
* @magentoDbIsolation enabled
|
|
*/
|
|
public function testLogoutAction()
|
|
{
|
|
$this->_login();
|
|
$this->dispatch('backend/admin/auth/logout');
|
|
$this->assertRedirect(
|
|
$this->equalTo(
|
|
\Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
|
|
\Magento\Backend\Helper\Data::class
|
|
)->getHomePageUrl()
|
|
)
|
|
);
|
|
$this->assertFalse($this->_session->isLoggedIn(), 'User is not logged out.');
|
|
}
|
|
|
|
/**
|
|
* @covers \Magento\Backend\Controller\Adminhtml\Auth\DeniedJson::execute
|
|
* @covers \Magento\Backend\Controller\Adminhtml\Auth\DeniedJson::_getDeniedJson
|
|
* @magentoDbIsolation enabled
|
|
*/
|
|
public function testDeniedJsonAction()
|
|
{
|
|
$this->_login();
|
|
$this->dispatch('backend/admin/auth/deniedJson');
|
|
$data = [
|
|
'ajaxExpired' => 1,
|
|
'ajaxRedirect' => \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
|
|
\Magento\Backend\Helper\Data::class
|
|
)->getHomePageUrl(),
|
|
];
|
|
$expected = json_encode($data);
|
|
$this->assertEquals($expected, $this->getResponse()->getBody());
|
|
$this->_logout();
|
|
}
|
|
|
|
/**
|
|
* @covers \Magento\Backend\Controller\Adminhtml\Auth\DeniedIframe::execute
|
|
* @covers \Magento\Backend\Controller\Adminhtml\Auth\DeniedIframe::_getDeniedIframe
|
|
* @magentoDbIsolation enabled
|
|
*/
|
|
public function testDeniedIframeAction()
|
|
{
|
|
$this->_login();
|
|
$this->dispatch('backend/admin/auth/deniedIframe');
|
|
$homeUrl = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
|
|
\Magento\Backend\Helper\Data::class
|
|
)->getHomePageUrl();
|
|
$expected = '<script>parent.window.location =';
|
|
$this->assertStringStartsWith($expected, $this->getResponse()->getBody());
|
|
$this->assertStringContainsString($homeUrl, $this->getResponse()->getBody());
|
|
$this->_logout();
|
|
}
|
|
|
|
/**
|
|
* Test user logging process when user not assigned to any role
|
|
* @dataProvider incorrectLoginDataProvider
|
|
* @magentoDbIsolation enabled
|
|
*
|
|
* @param $params
|
|
*/
|
|
public function testIncorrectLogin($params)
|
|
{
|
|
/** @var \Magento\Framework\Data\Form\FormKey $formKey */
|
|
$formKey = $this->_objectManager->get(\Magento\Framework\Data\Form\FormKey::class);
|
|
$params['form_key'] = $formKey->getFormKey();
|
|
$this->getRequest()->setPostValue($params);
|
|
$this->dispatch('backend/admin/auth/login');
|
|
$this->assertSessionMessages(
|
|
$this->equalTo(
|
|
[
|
|
'The account sign-in was incorrect or your account is disabled temporarily. '
|
|
. 'Please wait and try again later.'
|
|
]
|
|
),
|
|
MessageInterface::TYPE_ERROR
|
|
);
|
|
$backendUrlModel = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
|
|
\Magento\Backend\Model\UrlInterface::class
|
|
);
|
|
$backendUrlModel->turnOffSecretKey();
|
|
$url = $backendUrlModel->getUrl('admin');
|
|
$this->assertRedirect($this->stringStartsWith($url));
|
|
}
|
|
|
|
public function incorrectLoginDataProvider()
|
|
{
|
|
return [
|
|
'login dummy user' => [
|
|
[
|
|
'login' => [
|
|
'username' => 'test1',
|
|
'password' => \Magento\TestFramework\Bootstrap::ADMIN_PASSWORD,
|
|
],
|
|
],
|
|
],
|
|
'login without role' => [
|
|
[
|
|
'login' => [
|
|
'username' => 'test2',
|
|
'password' => \Magento\TestFramework\Bootstrap::ADMIN_PASSWORD,
|
|
],
|
|
],
|
|
],
|
|
'login not active user' => [
|
|
[
|
|
'login' => [
|
|
'username' => 'test3',
|
|
'password' => \Magento\TestFramework\Bootstrap::ADMIN_PASSWORD,
|
|
],
|
|
],
|
|
]
|
|
];
|
|
}
|
|
}
|