|
Apache/2.4.41 (Ubuntu) Linux vmi616275.contaboserver.net 5.4.0-84-generic #94-Ubuntu SMP Thu Aug 26 20:27:37 UTC 2021 x86_64 uid=33(www-data) gid=33(www-data) groups=33(www-data) server ip : 62.171.164.128 | your ip : 127.0.0.1 safemode OFF > / home / dev2.destoffenstraat.com / dev / tests / integration / testsuite / Magento / Backend / Model / |
Filename | /home/dev2.destoffenstraat.com/dev/tests/integration/testsuite/Magento/Backend/Model/UrlTest.php |
Size | 7.5 kb |
Permission | rw-r--r-- |
Owner | root : root |
Create time | 17-Aug-2025 10:26 |
Last modified | 28-Jan-2025 06:45 |
Last accessed | 23-Aug-2025 19:51 |
Actions | edit | rename | delete | download (gzip) |
View | text | code | image |
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Backend\Model;
use Magento\Framework\App\RequestInterface;
use Magento\Framework\Encryption\EncryptorInterface;
use Magento\Framework\Escaper;
use Magento\Framework\ObjectManagerInterface;
use Magento\Framework\Session\SessionManagerInterface;
use Magento\TestFramework\Helper\Bootstrap;
/**
* Test class for \Magento\Backend\Model\UrlInterface.
*
* @magentoAppArea adminhtml
*/
class UrlTest extends \PHPUnit\Framework\TestCase
{
/**
* @var RequestInterface
*/
private $request;
/**
* @var UrlInterface
*/
private $_model;
/**
* @var ObjectManagerInterface
*/
private $objectManager;
/**
* @inheritdoc
*/
protected function setUp(): void
{
$this->objectManager = Bootstrap::getObjectManager();
$this->request = $this->objectManager->get(RequestInterface::class);
$this->_model = $this->objectManager->create(UrlInterface::class);
}
/**
* App isolation is enabled to protect next tests from polluted registry by getUrl().
*
* @param string $routePath
* @param array $requestParams
* @param string $expectedResult
* @param array|null $routeParams
* @return void
*
* @dataProvider getUrlDataProvider
* @magentoAppIsolation enabled
*/
public function testGetUrl(
string $routePath,
array $requestParams,
string $expectedResult,
$routeParams = null
): void {
$this->request->setParams($requestParams);
$url = $this->_model->getUrl($routePath, $routeParams);
$this->assertStringContainsString($expectedResult, $url);
}
/**
* Data provider for getUrl method.
*
* @return array
*/
public function getUrlDataProvider(): array
{
/** @var $escaper Escaper */
$escaper = Bootstrap::getObjectManager()->get(Escaper::class);
return [
[
'routePath' => 'adminhtml/auth/login',
'requestParams' => [],
'expectedResult'=> 'admin/auth/login/key/',
],
[
'routePath' => 'adminhtml/auth/login',
'requestParams' => [],
'expectedResult'=> '/param1/a1==/',
'routeParams' => [
'_escape_params' => false,
'param1' => 'a1==',
],
],
[
'routePath' => 'adminhtml/auth/login',
'requestParams' => [],
'expectedResult'=> '/param1/a1==/',
'routeParams' => [
'_escape_params' => false,
'param1' => 'a1==',
],
],
[
'routePath' => 'adminhtml/auth/login',
'requestParams' => ['param2' => 'a2=='],
'expectedResult'=> '/param2/a2==/',
'routeParams' => [
'_current' => true,
'_escape_params' => false,
],
],
[
'routePath' => 'adminhtml/auth/login',
'requestParams' => [],
'expectedResult' => '/param3/' . $escaper->encodeUrlParam('a3==') . '/',
'routeParams' => [
'_escape_params' => true,
'param3' => 'a3==',
],
],
[
'routePath' => 'adminhtml/auth/login',
'requestParams' => ['param4' => 'a4=='],
'expectedResult' => '/param4/' . $escaper->encodeUrlParam('a4==') . '/',
'routeParams' => [
'_current' => true,
'_escape_params' => true,
],
],
[
'routePath' => 'route/controller/action/id/100',
'requestParams' => [],
'expectedResult' => 'id/100',
],
];
}
/**
* @param string $routeName
* @param string $controller
* @param string $action
* @param string $expectedHash
* @return void
*
* @dataProvider getSecretKeyDataProvider
* @magentoAppIsolation enabled
*/
public function testGetSecretKey(string $routeName, string $controller, string $action, string $expectedHash): void
{
$this->request->setControllerName('default_controller')
->setActionName('default_action')
->setRouteName('default_router');
$this->_model->setRequest($this->request);
$this->objectManager->get(SessionManagerInterface::class)->setData('_form_key', 'salt');
$this->assertEquals($expectedHash, $this->_model->getSecretKey($routeName, $controller, $action));
}
/**
* @return array
*/
public function getSecretKeyDataProvider(): array
{
/** @var $encryptor EncryptorInterface */
$encryptor = Bootstrap::getObjectManager()->get(EncryptorInterface::class);
return [
[
'',
'',
'',
$encryptor->getHash('default_router' . 'default_controller' . 'default_action' . 'salt'),
],
['', '', 'action', $encryptor->getHash('default_router' . 'default_controller' . 'action' . 'salt')],
[
'',
'controller',
'',
$encryptor->getHash('default_router' . 'controller' . 'default_action' . 'salt'),
],
[
'',
'controller',
'action',
$encryptor->getHash('default_router' . 'controller' . 'action' . 'salt'),
],
[
'adminhtml',
'',
'',
$encryptor->getHash('adminhtml' . 'default_controller' . 'default_action' . 'salt'),
],
[
'adminhtml',
'',
'action',
$encryptor->getHash('adminhtml' . 'default_controller' . 'action' . 'salt'),
],
[
'adminhtml',
'controller',
'',
$encryptor->getHash('adminhtml' . 'controller' . 'default_action' . 'salt'),
],
[
'adminhtml',
'controller',
'action',
$encryptor->getHash('adminhtml' . 'controller' . 'action' . 'salt'),
],
];
}
/**
* @magentoAppIsolation enabled
* @return void
*/
public function testGetSecretKeyForwarded(): void
{
/** @var $encryptor EncryptorInterface */
$encryptor = $this->objectManager->get(EncryptorInterface::class);
$this->request->setControllerName('controller')->setActionName('action');
$this->request->initForward()->setControllerName(uniqid())->setActionName(uniqid());
$this->_model->setRequest($this->request);
$this->objectManager->get(SessionManagerInterface::class)->setData('_form_key', 'salt');
$this->assertEquals($encryptor->getHash('controller' . 'action' . 'salt'), $this->_model->getSecretKey());
}
/**
* @return void
*/
public function testUseSecretKey(): void
{
$this->_model->setNoSecret(true);
$this->assertFalse($this->_model->useSecretKey());
$this->_model->setNoSecret(false);
$this->assertTrue($this->_model->useSecretKey());
}
}
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Backend\Model;
use Magento\Framework\App\RequestInterface;
use Magento\Framework\Encryption\EncryptorInterface;
use Magento\Framework\Escaper;
use Magento\Framework\ObjectManagerInterface;
use Magento\Framework\Session\SessionManagerInterface;
use Magento\TestFramework\Helper\Bootstrap;
/**
* Test class for \Magento\Backend\Model\UrlInterface.
*
* @magentoAppArea adminhtml
*/
class UrlTest extends \PHPUnit\Framework\TestCase
{
/**
* @var RequestInterface
*/
private $request;
/**
* @var UrlInterface
*/
private $_model;
/**
* @var ObjectManagerInterface
*/
private $objectManager;
/**
* @inheritdoc
*/
protected function setUp(): void
{
$this->objectManager = Bootstrap::getObjectManager();
$this->request = $this->objectManager->get(RequestInterface::class);
$this->_model = $this->objectManager->create(UrlInterface::class);
}
/**
* App isolation is enabled to protect next tests from polluted registry by getUrl().
*
* @param string $routePath
* @param array $requestParams
* @param string $expectedResult
* @param array|null $routeParams
* @return void
*
* @dataProvider getUrlDataProvider
* @magentoAppIsolation enabled
*/
public function testGetUrl(
string $routePath,
array $requestParams,
string $expectedResult,
$routeParams = null
): void {
$this->request->setParams($requestParams);
$url = $this->_model->getUrl($routePath, $routeParams);
$this->assertStringContainsString($expectedResult, $url);
}
/**
* Data provider for getUrl method.
*
* @return array
*/
public function getUrlDataProvider(): array
{
/** @var $escaper Escaper */
$escaper = Bootstrap::getObjectManager()->get(Escaper::class);
return [
[
'routePath' => 'adminhtml/auth/login',
'requestParams' => [],
'expectedResult'=> 'admin/auth/login/key/',
],
[
'routePath' => 'adminhtml/auth/login',
'requestParams' => [],
'expectedResult'=> '/param1/a1==/',
'routeParams' => [
'_escape_params' => false,
'param1' => 'a1==',
],
],
[
'routePath' => 'adminhtml/auth/login',
'requestParams' => [],
'expectedResult'=> '/param1/a1==/',
'routeParams' => [
'_escape_params' => false,
'param1' => 'a1==',
],
],
[
'routePath' => 'adminhtml/auth/login',
'requestParams' => ['param2' => 'a2=='],
'expectedResult'=> '/param2/a2==/',
'routeParams' => [
'_current' => true,
'_escape_params' => false,
],
],
[
'routePath' => 'adminhtml/auth/login',
'requestParams' => [],
'expectedResult' => '/param3/' . $escaper->encodeUrlParam('a3==') . '/',
'routeParams' => [
'_escape_params' => true,
'param3' => 'a3==',
],
],
[
'routePath' => 'adminhtml/auth/login',
'requestParams' => ['param4' => 'a4=='],
'expectedResult' => '/param4/' . $escaper->encodeUrlParam('a4==') . '/',
'routeParams' => [
'_current' => true,
'_escape_params' => true,
],
],
[
'routePath' => 'route/controller/action/id/100',
'requestParams' => [],
'expectedResult' => 'id/100',
],
];
}
/**
* @param string $routeName
* @param string $controller
* @param string $action
* @param string $expectedHash
* @return void
*
* @dataProvider getSecretKeyDataProvider
* @magentoAppIsolation enabled
*/
public function testGetSecretKey(string $routeName, string $controller, string $action, string $expectedHash): void
{
$this->request->setControllerName('default_controller')
->setActionName('default_action')
->setRouteName('default_router');
$this->_model->setRequest($this->request);
$this->objectManager->get(SessionManagerInterface::class)->setData('_form_key', 'salt');
$this->assertEquals($expectedHash, $this->_model->getSecretKey($routeName, $controller, $action));
}
/**
* @return array
*/
public function getSecretKeyDataProvider(): array
{
/** @var $encryptor EncryptorInterface */
$encryptor = Bootstrap::getObjectManager()->get(EncryptorInterface::class);
return [
[
'',
'',
'',
$encryptor->getHash('default_router' . 'default_controller' . 'default_action' . 'salt'),
],
['', '', 'action', $encryptor->getHash('default_router' . 'default_controller' . 'action' . 'salt')],
[
'',
'controller',
'',
$encryptor->getHash('default_router' . 'controller' . 'default_action' . 'salt'),
],
[
'',
'controller',
'action',
$encryptor->getHash('default_router' . 'controller' . 'action' . 'salt'),
],
[
'adminhtml',
'',
'',
$encryptor->getHash('adminhtml' . 'default_controller' . 'default_action' . 'salt'),
],
[
'adminhtml',
'',
'action',
$encryptor->getHash('adminhtml' . 'default_controller' . 'action' . 'salt'),
],
[
'adminhtml',
'controller',
'',
$encryptor->getHash('adminhtml' . 'controller' . 'default_action' . 'salt'),
],
[
'adminhtml',
'controller',
'action',
$encryptor->getHash('adminhtml' . 'controller' . 'action' . 'salt'),
],
];
}
/**
* @magentoAppIsolation enabled
* @return void
*/
public function testGetSecretKeyForwarded(): void
{
/** @var $encryptor EncryptorInterface */
$encryptor = $this->objectManager->get(EncryptorInterface::class);
$this->request->setControllerName('controller')->setActionName('action');
$this->request->initForward()->setControllerName(uniqid())->setActionName(uniqid());
$this->_model->setRequest($this->request);
$this->objectManager->get(SessionManagerInterface::class)->setData('_form_key', 'salt');
$this->assertEquals($encryptor->getHash('controller' . 'action' . 'salt'), $this->_model->getSecretKey());
}
/**
* @return void
*/
public function testUseSecretKey(): void
{
$this->_model->setNoSecret(true);
$this->assertFalse($this->_model->useSecretKey());
$this->_model->setNoSecret(false);
$this->assertTrue($this->_model->useSecretKey());
}
}