PageRenderTime 57ms CodeModel.GetById 32ms RepoModel.GetById 0ms app.codeStats 0ms

/tests/TestCase/Routing/Filter/RoutingFilterTest.php

https://github.com/ceeram/cakephp
PHP | 108 lines | 58 code | 15 blank | 35 comment | 0 complexity | 88d73cb01e97f868f91fede7bae95bea MD5 | raw file
  1. <?php
  2. /**
  3. * CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
  4. * Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
  5. *
  6. * Licensed under The MIT License
  7. * For full copyright and license information, please see the LICENSE.txt
  8. * Redistributions of files must retain the above copyright notice.
  9. *
  10. * @copyright Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
  11. * @link http://cakephp.org CakePHP(tm) Project
  12. * @since 3.0.0
  13. * @license http://www.opensource.org/licenses/mit-license.php MIT License
  14. */
  15. namespace Cake\Test\TestCase\Routing\Filter;
  16. use Cake\Event\Event;
  17. use Cake\Network\Request;
  18. use Cake\Routing\Filter\RoutingFilter;
  19. use Cake\Routing\Router;
  20. use Cake\TestSuite\TestCase;
  21. /**
  22. * Routing filter test.
  23. */
  24. class RoutingFilterTest extends TestCase
  25. {
  26. /**
  27. * test setting parameters in beforeDispatch method
  28. *
  29. * @return void
  30. * @triggers __CLASS__ $this, compact(request)
  31. */
  32. public function testBeforeDispatchSkipWhenControllerSet()
  33. {
  34. $filter = new RoutingFilter();
  35. $request = new Request("/testcontroller/testaction/params1/params2/params3");
  36. $request->addParams(['controller' => 'articles']);
  37. $event = new Event(__CLASS__, $this, compact('request'));
  38. $filter->beforeDispatch($event);
  39. $this->assertSame($request->params['controller'], 'articles');
  40. $this->assertEmpty($request->params['action']);
  41. }
  42. /**
  43. * test setting parameters in beforeDispatch method
  44. *
  45. * @return void
  46. * @triggers __CLASS__ $this, compact(request)
  47. */
  48. public function testBeforeDispatchSetsParameters()
  49. {
  50. Router::connect('/:controller/:action/*');
  51. $filter = new RoutingFilter();
  52. $request = new Request("/testcontroller/testaction/params1/params2/params3");
  53. $event = new Event(__CLASS__, $this, compact('request'));
  54. $filter->beforeDispatch($event);
  55. $this->assertSame($request->params['controller'], 'testcontroller');
  56. $this->assertSame($request->params['action'], 'testaction');
  57. $this->assertSame($request->params['pass'][0], 'params1');
  58. $this->assertSame($request->params['pass'][1], 'params2');
  59. $this->assertSame($request->params['pass'][2], 'params3');
  60. $this->assertFalse(!empty($request['form']));
  61. }
  62. /**
  63. * test setting parameters in beforeDispatch method
  64. *
  65. * @return void
  66. * @triggers __CLASS__ $this, compact(request)
  67. * @triggers __CLASS__ $this, compact(request)
  68. */
  69. public function testQueryStringOnRoot()
  70. {
  71. Router::reload();
  72. Router::connect('/', ['controller' => 'pages', 'action' => 'display', 'home']);
  73. Router::connect('/pages/*', ['controller' => 'pages', 'action' => 'display']);
  74. Router::connect('/:controller/:action/*');
  75. $_GET = ['coffee' => 'life', 'sleep' => 'sissies'];
  76. $filter = new RoutingFilter();
  77. $request = new Request('posts/home/?coffee=life&sleep=sissies');
  78. $event = new Event(__CLASS__, $this, compact('request'));
  79. $filter->beforeDispatch($event);
  80. $this->assertRegExp('/posts/', $request['controller']);
  81. $this->assertRegExp('/home/', $request['action']);
  82. $this->assertTrue(isset($request['url']['sleep']));
  83. $this->assertTrue(isset($request['url']['coffee']));
  84. $request = new Request('/?coffee=life&sleep=sissy');
  85. $event = new Event(__CLASS__, $this, compact('request'));
  86. $filter->beforeDispatch($event);
  87. $this->assertRegExp('/pages/', $request['controller']);
  88. $this->assertRegExp('/display/', $request['action']);
  89. $this->assertTrue(isset($request['url']['sleep']));
  90. $this->assertTrue(isset($request['url']['coffee']));
  91. $this->assertEquals('life', $request['url']['coffee']);
  92. }
  93. }