511 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			511 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
<?php
 | 
						|
/**
 | 
						|
 * Copyright © Magento, Inc. All rights reserved.
 | 
						|
 * See COPYING.txt for license details.
 | 
						|
 */
 | 
						|
namespace Magento\Framework;
 | 
						|
 | 
						|
use Laminas\Stdlib\Parameters;
 | 
						|
use Magento\TestFramework\Helper\Bootstrap;
 | 
						|
 | 
						|
/**
 | 
						|
 * Test class for \Magento\Framework\Url
 | 
						|
 */
 | 
						|
class UrlTest extends \PHPUnit\Framework\TestCase
 | 
						|
{
 | 
						|
    /**
 | 
						|
     * @var \Magento\Framework\UrlInterface
 | 
						|
     */
 | 
						|
    protected $model;
 | 
						|
 | 
						|
    protected function setUp(): void
 | 
						|
    {
 | 
						|
        $this->model = Bootstrap::getObjectManager()->create(\Magento\Framework\Url::class);
 | 
						|
    }
 | 
						|
 | 
						|
    public function testSetRouteFrontName()
 | 
						|
    {
 | 
						|
        $value = 'route';
 | 
						|
        $this->model->setRouteFrontName($value);
 | 
						|
        $this->assertEquals($value, $this->model->getData('route_front_name'));
 | 
						|
    }
 | 
						|
 | 
						|
    public function testGetConfigData()
 | 
						|
    {
 | 
						|
        $this->assertEquals('http://localhost/', $this->model->getConfigData('base_url'));
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Note: isolation should be raised to flush the URL memory cache maintained by the store model
 | 
						|
     * @magentoAppIsolation enabled
 | 
						|
     */
 | 
						|
    public function testGetBaseUrlDefaults()
 | 
						|
    {
 | 
						|
        $this->assertEquals('http://localhost/index.php/', $this->model->getBaseUrl());
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Note: isolation flushes the URL memory cache
 | 
						|
     * @magentoAppIsolation enabled
 | 
						|
     * @magentoConfigFixture current_store web/seo/use_rewrites 1
 | 
						|
     */
 | 
						|
    public function testGetBaseUrlSeoRewrites()
 | 
						|
    {
 | 
						|
        $this->assertEquals('http://localhost/', $this->model->getBaseUrl());
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Note: isolation flushes the URL memory cache
 | 
						|
     * @magentoAppIsolation enabled
 | 
						|
     *
 | 
						|
     * @dataProvider getBaseUrlConfiguredDataProvider
 | 
						|
     *
 | 
						|
     * @magentoConfigFixture current_store web/secure/base_url http://sample.com/base_path/
 | 
						|
     * @magentoConfigFixture current_store web/unsecure/base_link_url http://sample.com/base_link_path/
 | 
						|
     * @magentoConfigFixture current_store web/secure/base_link_url https://sample.com/base_link_path/
 | 
						|
     * @magentoConfigFixture current_store web/secure/use_in_frontend 1
 | 
						|
     *
 | 
						|
     * @param array $params
 | 
						|
     * @param string $expectedUrl
 | 
						|
     */
 | 
						|
    public function testGetBaseUrlConfigured($params, $expectedUrl)
 | 
						|
    {
 | 
						|
        $actualUrl = $this->model->getBaseUrl($params);
 | 
						|
        $this->assertEquals($expectedUrl, $actualUrl);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Note: isolation flushes the URL memory cache
 | 
						|
     * @magentoAppIsolation enabled
 | 
						|
     *
 | 
						|
     * @magentoConfigFixture current_store web/secure/base_url http://sample.com/
 | 
						|
     * @magentoConfigFixture current_store web/unsecure/base_link_url http://sample.com/
 | 
						|
     * @magentoConfigFixture current_store web/secure/base_link_url https://sample.com/
 | 
						|
     * @magentoConfigFixture current_store web/secure/use_in_frontend 1
 | 
						|
     *
 | 
						|
     * @magentoAppArea frontend
 | 
						|
     */
 | 
						|
    public function testGetUnsecureUrlInSecureArea()
 | 
						|
    {
 | 
						|
        /** @var \Magento\Framework\App\Request\Http $request */
 | 
						|
        $request = Bootstrap::getObjectManager()->create(\Magento\Framework\App\Request\Http::class);
 | 
						|
        //Emulate HTTPS request
 | 
						|
        $request->getServer()->set('HTTPS', 'on');
 | 
						|
        $request->getServer()->set('SERVER_PORT', 443);
 | 
						|
 | 
						|
        $model = Bootstrap::getObjectManager()->create(\Magento\Framework\Url::class, ['request' => $request]);
 | 
						|
 | 
						|
        $secureUrl = $model->getUrl('some/index/controller', ['_nosid' => 1]);
 | 
						|
        $this->assertEquals(
 | 
						|
            'https://sample.com/index.php/some/index/controller/',
 | 
						|
            $secureUrl,
 | 
						|
            'Default URL in secure area is incorrect'
 | 
						|
        );
 | 
						|
 | 
						|
        $secureUrl = $model->getUrl('some/index/controller', ['_secure' => true, '_nosid' => 1]);
 | 
						|
        $this->assertEquals(
 | 
						|
            'https://sample.com/index.php/some/index/controller/',
 | 
						|
            $secureUrl,
 | 
						|
            'Secure URL in secure area is incorrect'
 | 
						|
        );
 | 
						|
 | 
						|
        $unsecureUrl = $model->getUrl('some/index/controller', ['_secure' => false, '_nosid' => 1]);
 | 
						|
        $this->assertEquals(
 | 
						|
            'http://sample.com/index.php/some/index/controller/',
 | 
						|
            $unsecureUrl,
 | 
						|
            'Unsecure URL in secure area is incorrect'
 | 
						|
        );
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Note: isolation flushes the URL memory cache
 | 
						|
     * @magentoAppIsolation enabled
 | 
						|
     *
 | 
						|
     * @magentoConfigFixture current_store web/secure/base_url http://sample.com/
 | 
						|
     * @magentoConfigFixture current_store web/unsecure/base_link_url http://sample.com/
 | 
						|
     * @magentoConfigFixture current_store web/secure/base_link_url https://sample.com/
 | 
						|
     * @magentoConfigFixture current_store web/secure/use_in_frontend 1
 | 
						|
     *
 | 
						|
     * @magentoAppArea frontend
 | 
						|
     */
 | 
						|
    public function testGetSecureUrlInUnsecureArea()
 | 
						|
    {
 | 
						|
        /** @var \Magento\Framework\App\Request\Http $request */
 | 
						|
        $request = Bootstrap::getObjectManager()->create(\Magento\Framework\App\Request\Http::class);
 | 
						|
        //Emulate HTTPS request
 | 
						|
        $request->getServer()->set('HTTPS', 'off');
 | 
						|
        $request->getServer()->set('SERVER_PORT', 80);
 | 
						|
 | 
						|
        $model = Bootstrap::getObjectManager()->create(\Magento\Framework\Url::class, ['request' => $request]);
 | 
						|
 | 
						|
        $secureUrl = $model->getUrl('some/index/controller', ['_nosid' => 1]);
 | 
						|
        $this->assertEquals(
 | 
						|
            'http://sample.com/index.php/some/index/controller/',
 | 
						|
            $secureUrl,
 | 
						|
            'Default URL in unsecure area is incorrect'
 | 
						|
        );
 | 
						|
 | 
						|
        $secureUrl = $model->getUrl('some/index/controller', ['_secure' => true, '_nosid' => 1]);
 | 
						|
        $this->assertEquals(
 | 
						|
            'https://sample.com/index.php/some/index/controller/',
 | 
						|
            $secureUrl,
 | 
						|
            'Secure URL in unsecure area is incorrect'
 | 
						|
        );
 | 
						|
 | 
						|
        $unsecureUrl = $model->getUrl('some/index/controller', ['_secure' => false, '_nosid' => 1]);
 | 
						|
        $this->assertEquals(
 | 
						|
            'http://sample.com/index.php/some/index/controller/',
 | 
						|
            $unsecureUrl,
 | 
						|
            'Unsecure URL in unsecure area is incorrect'
 | 
						|
        );
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Check that url type is restored to default after call getBaseUrl with type specified in params
 | 
						|
     */
 | 
						|
    public function testGetBaseUrlWithTypeRestoring()
 | 
						|
    {
 | 
						|
        /**
 | 
						|
         * Get base URL with default type
 | 
						|
         */
 | 
						|
        $this->assertEquals('http://localhost/index.php/', $this->model->getBaseUrl(), 'Incorrect link url');
 | 
						|
 | 
						|
        /**
 | 
						|
         * Set specified type
 | 
						|
         */
 | 
						|
        $webUrl = $this->model->getBaseUrl(['_type' => \Magento\Framework\UrlInterface::URL_TYPE_WEB]);
 | 
						|
        $this->assertEquals('http://localhost/', $webUrl, 'Incorrect web url');
 | 
						|
        $this->assertEquals('http://localhost/index.php/', $this->model->getBaseUrl(), 'Incorrect link url');
 | 
						|
 | 
						|
        /**
 | 
						|
         * Get url with type specified in params
 | 
						|
         */
 | 
						|
        $mediaUrl = $this->model->getBaseUrl(['_type' => \Magento\Framework\UrlInterface::URL_TYPE_MEDIA]);
 | 
						|
        $this->assertEquals('http://localhost/media/', $mediaUrl, 'Incorrect media url');
 | 
						|
        $this->assertEquals('http://localhost/index.php/', $this->model->getBaseUrl(), 'Incorrect link url');
 | 
						|
    }
 | 
						|
 | 
						|
    public function getBaseUrlConfiguredDataProvider()
 | 
						|
    {
 | 
						|
        return [
 | 
						|
            [['_type' => \Magento\Framework\UrlInterface::URL_TYPE_WEB], 'http://sample.com/base_path/'],
 | 
						|
            [
 | 
						|
                ['_type' => \Magento\Framework\UrlInterface::URL_TYPE_LINK],
 | 
						|
                'http://sample.com/base_link_path/index.php/'
 | 
						|
            ],
 | 
						|
            [
 | 
						|
                ['_type' => \Magento\Framework\UrlInterface::URL_TYPE_LINK, '_secure' => 1],
 | 
						|
                'https://sample.com/base_link_path/index.php/'
 | 
						|
            ]
 | 
						|
        ];
 | 
						|
    }
 | 
						|
 | 
						|
    public function testSetGetRouteName()
 | 
						|
    {
 | 
						|
        $this->model->setRouteName('catalog');
 | 
						|
        $this->assertEquals('catalog', $this->model->getRouteName());
 | 
						|
 | 
						|
        $this->markTestSkipped('setRouteName() logic is unclear.');
 | 
						|
    }
 | 
						|
 | 
						|
    public function testSetGetControllerName()
 | 
						|
    {
 | 
						|
        $this->model->setControllerName('product');
 | 
						|
        $this->assertEquals('product', $this->model->getControllerName());
 | 
						|
 | 
						|
        $this->markTestSkipped('setControllerName() logic is unclear.');
 | 
						|
    }
 | 
						|
 | 
						|
    public function testSetGetActionName()
 | 
						|
    {
 | 
						|
        $this->model->setActionName('view');
 | 
						|
        $this->assertEquals('view', $this->model->getActionName());
 | 
						|
 | 
						|
        $this->markTestSkipped('setActionName() logic is unclear.');
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Note: isolation flushes the URL memory cache
 | 
						|
     * @magentoAppIsolation enabled
 | 
						|
     */
 | 
						|
    public function testGetRouteUrl()
 | 
						|
    {
 | 
						|
        $this->assertEquals('http://localhost/index.php/', $this->model->getRouteUrl());
 | 
						|
        $this->assertEquals(
 | 
						|
            'http://localhost/index.php/catalog/product/view/id/50/',
 | 
						|
            $this->model->getRouteUrl('catalog/product/view', ['id' => 50])
 | 
						|
        );
 | 
						|
        $this->assertEquals(
 | 
						|
            'http://localhost/index.php/fancy_uri',
 | 
						|
            $this->model->getRouteUrl('core/index/index', ['_direct' => 'fancy_uri'])
 | 
						|
        );
 | 
						|
    }
 | 
						|
 | 
						|
    public function testSetGetFragment()
 | 
						|
    {
 | 
						|
        $this->model->setFragment('value');
 | 
						|
        $this->assertEquals('value', $this->model->getFragment());
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Note: isolation flushes the URL memory cache
 | 
						|
     * @magentoAppIsolation enabled
 | 
						|
     */
 | 
						|
    public function testGetUrl()
 | 
						|
    {
 | 
						|
        $result = $this->model->getUrl(
 | 
						|
            'catalog/product/view',
 | 
						|
            ['_fragment' => 'anchor', '_escape' => 1, '_query' => 'foo=bar', '_nosid' => 1, 'id' => 100]
 | 
						|
        );
 | 
						|
        $this->assertEquals('http://localhost/index.php/catalog/product/view/id/100/?foo=bar#anchor', $result);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Note: isolation flushes the URL memory cache
 | 
						|
     * @magentoAppIsolation enabled
 | 
						|
     */
 | 
						|
    public function testGetUrlDoesntAddQueryParamsOnConsequentCalls()
 | 
						|
    {
 | 
						|
        $result = $this->model->getUrl('catalog/product/view', ['_query' => 'foo=bar', '_nosid' => 1]);
 | 
						|
        $this->assertEquals('http://localhost/index.php/catalog/product/view/?foo=bar', $result);
 | 
						|
        $result = $this->model->getUrl('catalog/product/view', ['_nosid' => 1]);
 | 
						|
        $this->assertEquals('http://localhost/index.php/catalog/product/view/', $result);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Note: isolation flushes the URL memory cache
 | 
						|
     * @magentoAppIsolation enabled
 | 
						|
     * @covers \Magento\Framework\Url::getUrl
 | 
						|
     */
 | 
						|
    public function testGetUrlDoesntAddFragmentOnConsequentCalls()
 | 
						|
    {
 | 
						|
        $result = $this->model->getUrl('catalog/product/view', ['_nosid' => 1, '_fragment' => 'section']);
 | 
						|
        $this->assertEquals('http://localhost/index.php/catalog/product/view/#section', $result);
 | 
						|
        $result = $this->model->getUrl('catalog/product/view', ['_nosid' => 1]);
 | 
						|
        $this->assertEquals('http://localhost/index.php/catalog/product/view/', $result);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Note: isolation flushes the URL memory cache
 | 
						|
     * @magentoAppIsolation enabled
 | 
						|
     *
 | 
						|
     * @dataProvider consequentCallsDataProvider
 | 
						|
     *
 | 
						|
     * @param string $firstCallUrl
 | 
						|
     * @param string $secondCallUrl
 | 
						|
     * @param array $firstRouteParams
 | 
						|
     * @param array $secondRouteParams
 | 
						|
     * @param string $firstExpectedUrl
 | 
						|
     * @param string $secondExpectedUrl
 | 
						|
     * @covers \Magento\Framework\Url::getUrl
 | 
						|
     */
 | 
						|
    public function testGetUrlOnConsequentCalls(
 | 
						|
        $firstCallUrl,
 | 
						|
        $secondCallUrl,
 | 
						|
        $firstRouteParams,
 | 
						|
        $secondRouteParams,
 | 
						|
        $firstExpectedUrl,
 | 
						|
        $secondExpectedUrl
 | 
						|
    ) {
 | 
						|
        $result = $this->model->getUrl($firstCallUrl, $firstRouteParams);
 | 
						|
        $this->assertEquals($firstExpectedUrl, $result);
 | 
						|
 | 
						|
        $result = $this->model->getUrl($secondCallUrl, $secondRouteParams);
 | 
						|
        $this->assertEquals($secondExpectedUrl, $result);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Data provider for testGetUrlOnConsequentCalls()
 | 
						|
     *
 | 
						|
     * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
 | 
						|
     * @return array
 | 
						|
     */
 | 
						|
    public function consequentCallsDataProvider()
 | 
						|
    {
 | 
						|
        return [
 | 
						|
            [
 | 
						|
                'r_1/c_1/a_1/p_1/v_1',
 | 
						|
                'r_1/c_1/a_1/p_1/v_1',
 | 
						|
                null,
 | 
						|
                null,
 | 
						|
                'http://localhost/index.php/r_1/c_1/a_1/p_1/v_1/',
 | 
						|
                'http://localhost/index.php/r_1/c_1/a_1/p_1/v_1/',
 | 
						|
            ],
 | 
						|
            [
 | 
						|
                'r_1/c_1/a_1/p_1/v_1',
 | 
						|
                'r_1/c_1/a_1/p_1/v_2',
 | 
						|
                null,
 | 
						|
                null,
 | 
						|
                'http://localhost/index.php/r_1/c_1/a_1/p_1/v_1/',
 | 
						|
                'http://localhost/index.php/r_1/c_1/a_1/p_1/v_2/'
 | 
						|
            ],
 | 
						|
            [
 | 
						|
                'r_1/c_1/a_1/p_1/v_1',
 | 
						|
                'r_1/c_1/a_1/p_1',
 | 
						|
                null,
 | 
						|
                null,
 | 
						|
                'http://localhost/index.php/r_1/c_1/a_1/p_1/v_1/',
 | 
						|
                'http://localhost/index.php/r_1/c_1/a_1/'
 | 
						|
            ],
 | 
						|
            [
 | 
						|
                'r_1/c_1/a_1/p_1/v_1',
 | 
						|
                'r_1/c_1/a_1/p_2/v_2',
 | 
						|
                null,
 | 
						|
                null,
 | 
						|
                'http://localhost/index.php/r_1/c_1/a_1/p_1/v_1/',
 | 
						|
                'http://localhost/index.php/r_1/c_1/a_1/p_2/v_2/'
 | 
						|
            ],
 | 
						|
            [
 | 
						|
                'r_1/c_1/a_1/p_1/v_1',
 | 
						|
                'r_1/c_1/a_1',
 | 
						|
                null,
 | 
						|
                null,
 | 
						|
                'http://localhost/index.php/r_1/c_1/a_1/p_1/v_1/',
 | 
						|
                'http://localhost/index.php/r_1/c_1/a_1/'
 | 
						|
            ],
 | 
						|
            [
 | 
						|
                'r_1/c_1/a_1/p_1/v_1',
 | 
						|
                'r_1/c_1/a_2',
 | 
						|
                null,
 | 
						|
                null,
 | 
						|
                'http://localhost/index.php/r_1/c_1/a_1/p_1/v_1/',
 | 
						|
                'http://localhost/index.php/r_1/c_1/a_2/'
 | 
						|
            ],
 | 
						|
            [
 | 
						|
                'r_1/c_1/a_1/p_1/v_1',
 | 
						|
                'r_1/c_1',
 | 
						|
                null,
 | 
						|
                null,
 | 
						|
                'http://localhost/index.php/r_1/c_1/a_1/p_1/v_1/',
 | 
						|
                'http://localhost/index.php/r_1/c_1/'
 | 
						|
            ],
 | 
						|
            [
 | 
						|
                'r_1/c_1/a_1/p_1/v_1',
 | 
						|
                'r_1/c_2',
 | 
						|
                null,
 | 
						|
                null,
 | 
						|
                'http://localhost/index.php/r_1/c_1/a_1/p_1/v_1/',
 | 
						|
                'http://localhost/index.php/r_1/c_2/'
 | 
						|
            ],
 | 
						|
            [
 | 
						|
                'r_1/c_1/a_1/p_1/v_1',
 | 
						|
                'r_1',
 | 
						|
                null,
 | 
						|
                null,
 | 
						|
                'http://localhost/index.php/r_1/c_1/a_1/p_1/v_1/',
 | 
						|
                'http://localhost/index.php/r_1/'
 | 
						|
            ],
 | 
						|
            [
 | 
						|
                'r_1/c_1/a_1/p_1/v_1',
 | 
						|
                'r_2',
 | 
						|
                null,
 | 
						|
                null,
 | 
						|
                'http://localhost/index.php/r_1/c_1/a_1/p_1/v_1/',
 | 
						|
                'http://localhost/index.php/r_2/'
 | 
						|
            ],
 | 
						|
            [
 | 
						|
                'r_1/c_1/a_1/p_1/v_1',
 | 
						|
                null,
 | 
						|
                null,
 | 
						|
                null,
 | 
						|
                'http://localhost/index.php/r_1/c_1/a_1/p_1/v_1/',
 | 
						|
                'http://localhost/index.php/'
 | 
						|
            ],
 | 
						|
            [
 | 
						|
                'r_1/c_1/a_1',
 | 
						|
                'r_1/c_1/a_1/p_1/v_1',
 | 
						|
                null,
 | 
						|
                null,
 | 
						|
                'http://localhost/index.php/r_1/c_1/a_1/',
 | 
						|
                'http://localhost/index.php/r_1/c_1/a_1/p_1/v_1/'
 | 
						|
            ],
 | 
						|
            [
 | 
						|
                null,
 | 
						|
                'r_1/c_1/a_1',
 | 
						|
                null,
 | 
						|
                null,
 | 
						|
                'http://localhost/index.php/',
 | 
						|
                'http://localhost/index.php/r_1/c_1/a_1/'
 | 
						|
            ],
 | 
						|
            [
 | 
						|
                'r_1/c_1/a_1/p_1/v_1',
 | 
						|
                'r_1/c_1/a_1/p_1/v_1',
 | 
						|
                ['p_2' => 'v_2'],
 | 
						|
                ['p_2' => 'v_2'],
 | 
						|
                'http://localhost/index.php/r_1/c_1/a_1/p_1/v_1/p_2/v_2/',
 | 
						|
                'http://localhost/index.php/r_1/c_1/a_1/p_1/v_1/p_2/v_2/'
 | 
						|
            ],
 | 
						|
            [
 | 
						|
                'r_1/c_1/a_1/p_1/v_1',
 | 
						|
                'r_1/c_1/a_1',
 | 
						|
                ['p_2' => 'v_2'],
 | 
						|
                ['p_2' => 'v_2'],
 | 
						|
                'http://localhost/index.php/r_1/c_1/a_1/p_1/v_1/p_2/v_2/',
 | 
						|
                'http://localhost/index.php/r_1/c_1/a_1/p_2/v_2/'
 | 
						|
            ],
 | 
						|
            [
 | 
						|
                'r_1/c_1/a_1/p_1/v_1',
 | 
						|
                null,
 | 
						|
                ['p_2' => 'v_2'],
 | 
						|
                ['p_1' => 'v_1', 'p_2' => 'v_2'],
 | 
						|
                'http://localhost/index.php/r_1/c_1/a_1/p_1/v_1/p_2/v_2/',
 | 
						|
                'http://localhost/index.php/p_1/v_1/p_2/v_2/'
 | 
						|
            ]
 | 
						|
        ];
 | 
						|
    }
 | 
						|
 | 
						|
    public function testEscape()
 | 
						|
    {
 | 
						|
        $this->assertEquals('%22%27%3E%3C', $this->model->escape('"\'><'));
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Note: isolation flushes the URL memory cache
 | 
						|
     * @magentoAppIsolation enabled
 | 
						|
     */
 | 
						|
    public function testGetDirectUrl()
 | 
						|
    {
 | 
						|
        $directUrl = $this->model->getDirectUrl('fancy_uri', ['_query' => ['foo' => 'bar']]);
 | 
						|
        $this->assertEquals('http://localhost/index.php/fancy_uri?foo=bar', $directUrl);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Check that SID is removed from URL.
 | 
						|
     *
 | 
						|
     * Note: isolation flushes the URL memory cache
 | 
						|
     * @magentoAppIsolation enabled
 | 
						|
     *
 | 
						|
     * Note: to enforce SID in URLs, base URL must be different from the current $_SERVER['HTTP_HOST']
 | 
						|
     * @magentoConfigFixture current_store web/unsecure/base_link_url http://domain.com/
 | 
						|
     */
 | 
						|
    public function testSessionUrlVar()
 | 
						|
    {
 | 
						|
        $sessionUrl = $this->model->sessionUrlVar('<a href="http://example.com/?___SID=U">www.example.com</a>');
 | 
						|
        $this->assertEquals('<a href="http://example.com/">www.example.com</a>', $sessionUrl);
 | 
						|
    }
 | 
						|
 | 
						|
    public function testUseSessionIdForUrl()
 | 
						|
    {
 | 
						|
        // phpcs:ignore
 | 
						|
        $_SERVER['HTTP_HOST'] = 'localhost';
 | 
						|
        $this->assertFalse($this->model->useSessionIdForUrl(true));
 | 
						|
        $this->assertFalse($this->model->useSessionIdForUrl(false));
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Note: isolation flushes the URL memory cache
 | 
						|
     * @magentoAppIsolation enabled
 | 
						|
     */
 | 
						|
    public function testIsOwnOriginUrl()
 | 
						|
    {
 | 
						|
        $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
 | 
						|
        /** @var $request \Magento\TestFramework\Request */
 | 
						|
        $request = $objectManager->get(\Magento\Framework\App\RequestInterface::class);
 | 
						|
        $request->setServer(new Parameters(['HTTP_REFERER' => 'http://localhost/']));
 | 
						|
        $this->assertTrue($this->model->isOwnOriginUrl());
 | 
						|
 | 
						|
        $request->setServer(new Parameters(['HTTP_REFERER' => 'http://example.com/']));
 | 
						|
        $this->assertFalse($this->model->isOwnOriginUrl());
 | 
						|
    }
 | 
						|
}
 |