magento2-docker/dev/tests/integration/testsuite/Magento/Backend/Controller/Adminhtml/AuthTest.php

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,
],
],
]
];
}
}