RequestTest.php 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  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. * Redistributions of files must retain the above copyright notice.
  8. *
  9. * @copyright Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
  10. * @link http://cakephp.org CakePHP(tm) Project
  11. * @since 3.0.0
  12. * @license http://www.opensource.org/licenses/mit-license.php MIT License
  13. */
  14. namespace Cake\Test\TestCase\Network\Http;
  15. use Cake\Network\Http\Request;
  16. use Cake\TestSuite\TestCase;
  17. /**
  18. * HTTP request test.
  19. */
  20. class RequestTest extends TestCase
  21. {
  22. /**
  23. * test url method
  24. *
  25. * @return void
  26. */
  27. public function testUrl()
  28. {
  29. $request = new Request();
  30. $this->assertSame($request, $request->url('http://example.com'));
  31. $this->assertEquals('http://example.com', $request->url());
  32. }
  33. /**
  34. * test method method.
  35. *
  36. * @return void
  37. */
  38. public function testMethod()
  39. {
  40. $request = new Request();
  41. $this->assertSame($request, $request->method(Request::METHOD_GET));
  42. $this->assertEquals(Request::METHOD_GET, $request->method());
  43. }
  44. /**
  45. * test method interop.
  46. *
  47. * @return void
  48. */
  49. public function testMethodInteroperability()
  50. {
  51. $request = new Request();
  52. $this->assertSame($request, $request->method(Request::METHOD_GET));
  53. $this->assertEquals(Request::METHOD_GET, $request->method());
  54. $this->assertEquals(Request::METHOD_GET, $request->getMethod());
  55. $request = $request->withMethod(Request::METHOD_GET);
  56. $this->assertEquals(Request::METHOD_GET, $request->method());
  57. $this->assertEquals(Request::METHOD_GET, $request->getMethod());
  58. }
  59. /**
  60. * test invalid method.
  61. *
  62. * @expectedException \Cake\Core\Exception\Exception
  63. * @return void
  64. */
  65. public function testMethodInvalid()
  66. {
  67. $request = new Request();
  68. $request->method('set on fire');
  69. }
  70. /**
  71. * test body method.
  72. *
  73. * @return void
  74. */
  75. public function testBody()
  76. {
  77. $data = '{"json":"data"}';
  78. $request = new Request();
  79. $this->assertSame($request, $request->body($data));
  80. $this->assertEquals($data, $request->body());
  81. }
  82. /**
  83. * test header method.
  84. *
  85. * @return void
  86. */
  87. public function testHeader()
  88. {
  89. $request = new Request();
  90. $type = 'application/json';
  91. $result = $request->header('Content-Type', $type);
  92. $this->assertSame($result, $request, 'Should return self');
  93. $result = $request->header('content-type');
  94. $this->assertEquals($type, $result, 'lowercase does not work');
  95. $result = $request->header('ConTent-typE');
  96. $this->assertEquals($type, $result, 'Funny casing does not work');
  97. $result = $request->header([
  98. 'Connection' => 'close',
  99. 'user-agent' => 'CakePHP'
  100. ]);
  101. $this->assertSame($result, $request, 'Should return self');
  102. $this->assertEquals('close', $request->header('connection'));
  103. $this->assertEquals('CakePHP', $request->header('USER-AGENT'));
  104. $this->assertNull($request->header('not set'));
  105. }
  106. /**
  107. * Test the default headers
  108. *
  109. * @return void
  110. */
  111. public function testDefaultHeaders()
  112. {
  113. $request = new Request();
  114. $this->assertEquals('CakePHP', $request->getHeaderLine('User-Agent'));
  115. $this->assertEquals('close', $request->getHeaderLine('Connection'));
  116. }
  117. /**
  118. * Test that header() and PSR7 methods play nice.
  119. *
  120. * @return void
  121. */
  122. public function testHeaderMethodInteroperability()
  123. {
  124. $request = new Request();
  125. $request->header('Content-Type', 'application/json');
  126. $this->assertEquals('application/json', $request->header('Content-Type'), 'Old getter should work');
  127. $this->assertEquals('application/json', $request->getHeaderLine('Content-Type'), 'getHeaderLine works');
  128. $this->assertEquals('application/json', $request->getHeaderLine('content-type'), 'getHeaderLine works');
  129. $this->assertEquals(['application/json'], $request->getHeader('Content-Type'), 'getHeader works');
  130. $this->assertEquals(['application/json'], $request->getHeader('content-type'), 'getHeader works');
  131. }
  132. /**
  133. * test cookie method.
  134. *
  135. * @return void
  136. */
  137. public function testCookie()
  138. {
  139. $request = new Request();
  140. $result = $request->cookie('session', '123456');
  141. $this->assertSame($result, $request, 'Should return self');
  142. $this->assertNull($request->cookie('not set'));
  143. $result = $request->cookie('session');
  144. $this->assertEquals('123456', $result);
  145. }
  146. /**
  147. * test version method.
  148. *
  149. * @return void
  150. */
  151. public function testVersion()
  152. {
  153. $request = new Request();
  154. $result = $request->version('1.0');
  155. $this->assertSame($request, $request, 'Should return self');
  156. $this->assertSame('1.0', $request->version());
  157. }
  158. /**
  159. * test version interop.
  160. *
  161. * @return void
  162. */
  163. public function testVersionInteroperability()
  164. {
  165. $request = new Request();
  166. $this->assertEquals('1.1', $request->version());
  167. $this->assertEquals('1.1', $request->getProtocolVersion());
  168. $request = $request->withProtocolVersion('1.0');
  169. $this->assertEquals('1.0', $request->version());
  170. $this->assertEquals('1.0', $request->getProtocolVersion());
  171. }
  172. }