RequestTest.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. <?php
  2. class RequestTest extends PHPUnit_Framework_TestCase {
  3. public function setUp()
  4. {
  5. unset($_SERVER['PATH_INFO'], $_SERVER['REQUEST_METHOD']);
  6. }
  7. /**
  8. * @expectedException Exception
  9. */
  10. public function testUriMethodThrowsExceptionWhenCantDetermineUri()
  11. {
  12. System\Request::uri();
  13. }
  14. public function testUriMethodReturnsPathInfoWhenSet()
  15. {
  16. $_SERVER['PATH_INFO'] = 'test';
  17. $_SERVER['REQUEST_METHOD'] = 'blah';
  18. $this->assertEquals(System\Request::uri(), 'test');
  19. }
  20. /**
  21. * @dataProvider rootUriProvider1
  22. */
  23. public function testUriMethodReturnsSingleSlashOnRequestForRoot($uri)
  24. {
  25. Config::set('application.url', 'http://example.com');
  26. Config::set('appliation.index', '');
  27. $_SERVER['REQUEST_URI'] = $uri;
  28. $this->assertEquals(System\Request::uri(), '/');
  29. }
  30. public function rootUriProvider1()
  31. {
  32. return array(
  33. array(''),
  34. array('/'),
  35. array('/index.php'),
  36. array('/index.php/'),
  37. array('/index.php///'),
  38. array('http://example.com'),
  39. array('http://example.com/'),
  40. );
  41. }
  42. /**
  43. * @dataProvider rootUriProvider2
  44. */
  45. public function testUriMethodReturnsSingleSlashOnRequestForFolderNestedRoot($uri)
  46. {
  47. Config::set('application.url', 'http://example.com/laravel/public');
  48. Config::set('appliation.index', 'index.php');
  49. $_SERVER['REQUEST_URI'] = $uri;
  50. $this->assertEquals(System\Request::uri(), '/');
  51. }
  52. public function rootUriProvider2()
  53. {
  54. return array(
  55. array('http://example.com/laravel/public'),
  56. array('http://example.com/laravel/public/index.php'),
  57. array('http://example.com/laravel/public/index.php/'),
  58. array('http://example.com/laravel/public/index.php///'),
  59. array(''),
  60. array('/'),
  61. array('/index.php'),
  62. array('/index.php/'),
  63. array('/index.php///'),
  64. array('http://example.com'),
  65. array('http://example.com/'),
  66. );
  67. }
  68. /**
  69. * @dataProvider segmentedUriProvider1
  70. */
  71. public function testUriMethodReturnsSegmentForSingleSegmentUri($uri)
  72. {
  73. Config::set('application.url', 'http://example.com');
  74. Config::set('appliation.index', '');
  75. $_SERVER['REQUEST_URI'] = $uri;
  76. $this->assertEquals(System\Request::uri(), 'user');
  77. }
  78. public function segmentedUriProvider1()
  79. {
  80. return array(
  81. array('http://example.com/user'),
  82. array('http://example.com/user/'),
  83. array('http://example.com/user//'),
  84. );
  85. }
  86. /**
  87. * @dataProvider segmentedUriProvider2
  88. */
  89. public function testUriMethodReturnsSegmentsForMultiSegmentUri($uri)
  90. {
  91. Config::set('application.url', 'http://example.com');
  92. Config::set('appliation.index', '');
  93. $_SERVER['REQUEST_URI'] = $uri;
  94. $this->assertEquals(System\Request::uri(), 'user/something');
  95. }
  96. public function segmentedUriProvider2()
  97. {
  98. return array(
  99. array('http://example.com/user/something'),
  100. array('http://example.com/user/something/'),
  101. array('http://example.com/user/something//'),
  102. );
  103. }
  104. public function testMethodForNonSpoofedRequests()
  105. {
  106. $_SERVER['REQUEST_METHOD'] = 'GET';
  107. $this->assertEquals(System\Request::method(), 'GET');
  108. }
  109. public function testMethodForSpoofedRequests()
  110. {
  111. $_SERVER['REQUEST_METHOD'] = 'GET';
  112. $_POST['REQUEST_METHOD'] = 'PUT';
  113. $this->assertEquals(System\Request::method(), 'PUT');
  114. }
  115. }