154 lines
6.9 KiB
PHP
Executable File
154 lines
6.9 KiB
PHP
Executable File
<?php
|
|
/**
|
|
* Copyright © Magento, Inc. All rights reserved.
|
|
* See COPYING.txt for license details.
|
|
*/
|
|
declare(strict_types=1);
|
|
|
|
namespace Magento\UrlRewrite\Controller;
|
|
|
|
use Magento\TestFramework\TestCase\AbstractController;
|
|
use Magento\Framework\App\Response\Http as HttpResponse;
|
|
|
|
/**
|
|
* Class to test Match corresponding URL Rewrite
|
|
*/
|
|
class UrlRewriteTest extends AbstractController
|
|
{
|
|
/**
|
|
* @magentoDataFixture Magento/UrlRewrite/_files/url_rewrite.php
|
|
* @magentoDbIsolation disabled
|
|
*
|
|
* @covers \Magento\UrlRewrite\Controller\Router::match
|
|
* @covers \Magento\UrlRewrite\Model\Storage\DbStorage::doFindOneByData
|
|
*
|
|
* @param string $request
|
|
* @param string $redirect
|
|
* @param int $expectedCode
|
|
* @return void
|
|
*
|
|
* @dataProvider requestDataProvider
|
|
*/
|
|
public function testMatchUrlRewrite(
|
|
string $request,
|
|
string $redirect,
|
|
int $expectedCode = HttpResponse::STATUS_CODE_301
|
|
): void {
|
|
$this->dispatch($request);
|
|
/** @var HttpResponse $response */
|
|
$response = $this->getResponse();
|
|
$code = $response->getHttpResponseCode();
|
|
$this->assertEquals($expectedCode, $code, 'Invalid response code');
|
|
|
|
if ($expectedCode !== HttpResponse::STATUS_CODE_200) {
|
|
$location = $response->getHeader('Location')->getFieldValue();
|
|
$this->assertStringEndsWith(
|
|
$redirect,
|
|
$location
|
|
);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @return array
|
|
*/
|
|
public function requestDataProvider(): array
|
|
{
|
|
return [
|
|
'Use Case #1: Rewrite: page-one/ --(301)--> page-a/; Request: page-one/ --(301)--> page-a/' => [
|
|
'request' => '/page-one/',
|
|
'redirect' => '/page-a/',
|
|
],
|
|
'Use Case #2: Rewrite: page-one/ --(301)--> page-a/; Request: page-one --(301)--> page-a/' => [
|
|
'request' => '/page-one',
|
|
'redirect' => '/page-a/',
|
|
],
|
|
'Use Case #3: Rewrite: page-two --(301)--> page-b; Request: page-two --(301)--> page-b' => [
|
|
'request' => '/page-two',
|
|
'redirect' => '/page-b',
|
|
],
|
|
'Use Case #4: Rewrite: page-two --(301)--> page-b; Request: page-two --(301)--> page-b' => [
|
|
'request' => '/page-two/',
|
|
'redirect' => '/page-b',
|
|
],
|
|
'Use Case #5: Rewrite: page-similar --(301)--> page-a; Request: page-similar --(301)--> page-a' => [
|
|
'request' => '/page-similar',
|
|
'redirect' => '/page-a',
|
|
],
|
|
'Use Case #6: Rewrite: page-similar/ --(301)--> page-b; Request: page-similar/ --(301)--> page-b' => [
|
|
'request' => '/page-similar/',
|
|
'redirect' => '/page-b',
|
|
],
|
|
'Use Case #7: Rewrite: page-similar --(301)--> page-a; '
|
|
. 'Request: page-similar?param=1 --(301)--> page-a?param=1' => [
|
|
'request' => '/page-similar?param=1',
|
|
'redirect' => '/page-a?param=1',
|
|
],
|
|
'Use Case #8: Rewrite: page-similar/ --(301)--> page-b; '
|
|
. 'Request: page-similar/?param=1 --(301)--> page-b?param=1' => [
|
|
'request' => '/page-similar/?param=1',
|
|
'redirect' => '/page-b?param=1',
|
|
],
|
|
'Use Case #9: Rewrite: page-similar-query-param --(301)--> page-d?param1=1;'
|
|
. 'Request: page-similar-query-param --(301)--> page-d?param1=1' => [
|
|
'request' => '/page-similar-query-param',
|
|
'redirect' => '/page-d?param1=1',
|
|
],
|
|
'Use Case #10: Rewrite: page-similar-query-param --(301)--> page-d?param1=1; '
|
|
. 'Request: page-similar-query-param?param2=1 --(301)--> page-d?param1=1¶m2=1' => [
|
|
'request' => '/page-similar-query-param?param2=1',
|
|
'redirect' => '/page-d?param1=1¶m2=1',
|
|
],
|
|
'Use Case #11: Rewrite: page-similar-query-param/ --(301)--> page-e?param1=1; '
|
|
. 'Request: page-similar-query-param/ --(301)--> page-e?param1=1' => [
|
|
'request' => '/page-similar-query-param/',
|
|
'redirect' => '/page-e?param1=1',
|
|
],
|
|
'Use Case #12: Rewrite: page-similar-query-param/ --(301)--> page-e?param1=1;'
|
|
. 'Request: page-similar-query-param/?param2=1 --(301)--> page-e?param1=1¶m2=1' => [
|
|
'request' => '/page-similar-query-param/?param2=1',
|
|
'redirect' => '/page-e?param1=1¶m2=1',
|
|
],
|
|
'Use Case #13: Rewrite: page-external1 --(301)--> http://example.com/external;'
|
|
. 'Request: page-external1?param1=1 --(301)--> http://example.com/external (not fills get params)' => [
|
|
'request' => '/page-external1?param1=1',
|
|
'redirect' => 'http://example.com/external',
|
|
],
|
|
'Use Case #14: Rewrite: page-external2/ --(301)--> https://example.com/external2/;'
|
|
. 'Request: page-external2?param2=1 --(301)--> https://example.com/external2/ (not fills get params)' => [
|
|
'request' => '/page-external2?param2=1',
|
|
'redirect' => 'https://example.com/external2/',
|
|
],
|
|
'Use Case #15: Rewrite: page-external3 --(301)--> http://example.com/external?param1=value1;'
|
|
. 'Request: page-external3?param1=custom1¶m2=custom2 --(301)--> '
|
|
. 'http://example.com/external?param1=value1'
|
|
. ' (fills get param from target path)' => [
|
|
'request' => '/page-external3?param1=custom1¶m2=custom2',
|
|
'redirect' => 'http://example.com/external?param1=value1',
|
|
],
|
|
'Use Case #16: Rewrite: page-external4/ --(301)--> https://example.com/external2/?param2=value2;'
|
|
. 'Request: page-external4?param1=custom1¶m2=custom2 --(301)--> '
|
|
. 'https://example.com/external2/?param2=value2 '
|
|
. ' (fills get param from target path)' => [
|
|
'request' => '/page-external4?param1=custom1¶m2=custom2',
|
|
'redirect' => 'https://example.com/external2/?param2=value2',
|
|
],
|
|
'Use Case #17: Rewrite: / --(301)--> /; No redirect' => [
|
|
'request' => '/',
|
|
'redirect' => '/',
|
|
'expectedCode' => HttpResponse::STATUS_CODE_200,
|
|
],
|
|
'Use Case #18: Rewrite: contact/ --(301)--> contact?param1=1; '
|
|
. 'Request: contact/ --(301)--> contact?param1=1' => [
|
|
'request' => 'contact/',
|
|
'redirect' => 'contact?param1=1',
|
|
],
|
|
'Use Case #19: Rewrite: contact/?param2=2 --(301)--> contact?param1=1¶m2=2; '
|
|
. 'Request: contact/?¶m2=2 --(301)--> contact?param1=1¶m2=2' => [
|
|
'request' => 'contact/?¶m2=2',
|
|
'redirect' => 'contact?param1=1¶m2=2',
|
|
],
|
|
];
|
|
}
|
|
}
|