127 lines
4.2 KiB
PHP
Executable File
127 lines
4.2 KiB
PHP
Executable File
<?php
|
|
/**
|
|
* Copyright © Magento, Inc. All rights reserved.
|
|
* See COPYING.txt for license details.
|
|
*/
|
|
namespace Magento\Backend\App;
|
|
|
|
use Magento\TestFramework\Bootstrap;
|
|
|
|
/**
|
|
* Test class for \Magento\Backend\App\AbstractAction.
|
|
* @magentoAppArea adminhtml
|
|
*/
|
|
class AbstractActionTest extends \Magento\TestFramework\TestCase\AbstractBackendController
|
|
{
|
|
/**
|
|
* Check redirection to startup page for logged user
|
|
* @magentoConfigFixture current_store admin/security/use_form_key 1
|
|
* @magentoAppIsolation enabled
|
|
*/
|
|
public function testPreDispatchWithEmptyUrlRedirectsToStartupPage()
|
|
{
|
|
$this->markTestSkipped('Session destruction doesn\'t work');
|
|
\Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
|
|
\Magento\Framework\Config\ScopeInterface::class
|
|
)->setCurrentScope(
|
|
\Magento\Backend\App\Area\FrontNameResolver::AREA_CODE
|
|
);
|
|
$this->dispatch('backend');
|
|
/** @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));
|
|
}
|
|
|
|
/**
|
|
* Check login redirection
|
|
*
|
|
* @magentoDbIsolation enabled
|
|
*/
|
|
public function testInitAuthentication()
|
|
{
|
|
/**
|
|
* Logout current session
|
|
*/
|
|
$this->_auth->logout();
|
|
|
|
/** @var \Magento\Framework\Data\Form\FormKey $formKey */
|
|
$formKey = $this->_objectManager->get(\Magento\Framework\Data\Form\FormKey::class);
|
|
$postLogin = [
|
|
'login' => [
|
|
'username' => \Magento\TestFramework\Bootstrap::ADMIN_NAME,
|
|
'password' => \Magento\TestFramework\Bootstrap::ADMIN_PASSWORD,
|
|
],
|
|
'form_key' => $formKey->getFormKey(),
|
|
];
|
|
|
|
$this->getRequest()->setPostValue($postLogin);
|
|
$this->dispatch('backend/admin/system_account/index');
|
|
|
|
$expected = 'backend/admin/system_account/index';
|
|
$this->assertRedirect($this->stringContains($expected));
|
|
}
|
|
|
|
/**
|
|
* Check layout attribute "acl" for check access to
|
|
*
|
|
* @param string $blockName
|
|
* @param string $resource
|
|
* @param bool $isLimitedAccess
|
|
* @dataProvider nodesWithAcl
|
|
*/
|
|
public function testAclInNodes($blockName, $resource, $isLimitedAccess)
|
|
{
|
|
/** @var $noticeInbox \Magento\AdminNotification\Model\Inbox */
|
|
$noticeInbox = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
|
|
\Magento\AdminNotification\Model\Inbox::class
|
|
);
|
|
if (!$noticeInbox->loadLatestNotice()->getId()) {
|
|
$noticeInbox->addCritical('Test notice', 'Test description');
|
|
}
|
|
|
|
$this->_auth->login(
|
|
\Magento\TestFramework\Bootstrap::ADMIN_NAME,
|
|
\Magento\TestFramework\Bootstrap::ADMIN_PASSWORD
|
|
);
|
|
|
|
/** @var $acl \Magento\Framework\Acl */
|
|
$acl = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()
|
|
->get(\Magento\Framework\Acl\Builder::class)
|
|
->getAcl();
|
|
if ($isLimitedAccess) {
|
|
$acl->deny(Bootstrap::ADMIN_ROLE_ID, $resource);
|
|
}
|
|
|
|
$this->dispatch('backend/admin/dashboard');
|
|
|
|
$layout = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
|
|
\Magento\Framework\View\LayoutInterface::class
|
|
);
|
|
$actualBlocks = $layout->getAllBlocks();
|
|
|
|
$this->assertNotEmpty($actualBlocks);
|
|
if ($isLimitedAccess) {
|
|
$this->assertNotContains($blockName, array_keys($actualBlocks));
|
|
} else {
|
|
$this->assertContains($blockName, array_keys($actualBlocks));
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Data provider with expected blocks with acl properties
|
|
*
|
|
* @return array
|
|
*/
|
|
public function nodesWithAcl()
|
|
{
|
|
return [
|
|
['notification_window', 'Magento_AdminNotification::show_toolbar', true],
|
|
['notification_window', 'Magento_AdminNotification::show_toolbar', false]
|
|
];
|
|
}
|
|
}
|