UrlRewriteTest.php 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\UrlRewrite\Controller;
  7. use Magento\TestFramework\TestCase\AbstractController;
  8. use Magento\Framework\App\Response\Http as HttpResponse;
  9. class UrlRewriteTest extends AbstractController
  10. {
  11. /**
  12. * @magentoDataFixture Magento/UrlRewrite/_files/url_rewrite.php
  13. * @magentoAppIsolation enabled
  14. *
  15. * @covers \Magento\UrlRewrite\Controller\Router::match
  16. * @covers \Magento\UrlRewrite\Model\Storage\DbStorage::doFindOneByData
  17. *
  18. * @param string $request
  19. * @param string $redirect
  20. * @param int $expectedCode
  21. *
  22. * @dataProvider requestDataProvider
  23. */
  24. public function testMatchUrlRewrite(
  25. string $request,
  26. string $redirect,
  27. int $expectedCode = 301
  28. ) {
  29. $this->dispatch($request);
  30. /** @var HttpResponse $response */
  31. $response = $this->getResponse();
  32. $code = $response->getHttpResponseCode();
  33. $location = $response->getHeader('Location')->getFieldValue();
  34. $this->assertEquals($expectedCode, $code, 'Invalid response code');
  35. $this->assertStringEndsWith(
  36. $redirect,
  37. $location,
  38. 'Invalid location header'
  39. );
  40. }
  41. /**
  42. * @return array
  43. */
  44. public function requestDataProvider()
  45. {
  46. return [
  47. 'Use Case #1: Rewrite: page-one/ --(301)--> page-a/; Request: page-one/ --(301)--> page-a/' => [
  48. 'request' => '/page-one/',
  49. 'redirect' => '/page-a/',
  50. ],
  51. 'Use Case #2: Rewrite: page-one/ --(301)--> page-a/; Request: page-one --(301)--> page-a/' => [
  52. 'request' => '/page-one',
  53. 'redirect' => '/page-a/',
  54. ],
  55. 'Use Case #3: Rewrite: page-two --(301)--> page-b; Request: page-two --(301)--> page-b' => [
  56. 'request' => '/page-two',
  57. 'redirect' => '/page-b',
  58. ],
  59. 'Use Case #4: Rewrite: page-two --(301)--> page-b; Request: page-two --(301)--> page-b' => [
  60. 'request' => '/page-two/',
  61. 'redirect' => '/page-b',
  62. ],
  63. 'Use Case #5: Rewrite: page-similar --(301)--> page-a; Request: page-similar --(301)--> page-a' => [
  64. 'request' => '/page-similar',
  65. 'redirect' => '/page-a',
  66. ],
  67. 'Use Case #6: Rewrite: page-similar/ --(301)--> page-b; Request: page-similar/ --(301)--> page-b' => [
  68. 'request' => '/page-similar/',
  69. 'redirect' => '/page-b',
  70. ],
  71. ];
  72. }
  73. }