/unit-tests/HttpResponseTest.php

https://gitlab.com/szlongshu/manaphp · PHP · 192 lines · 139 code · 42 blank · 11 comment · 1 complexity · b35711c3ec69af942b48982950971b2c MD5 · raw file

  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: Mark
  5. * Date: 2015/12/17
  6. * Time: 21:42
  7. */
  8. defined('UNIT_TESTS_ROOT') || require __DIR__ . '/bootstrap.php';
  9. class tResponse extends \ManaPHP\Http\Response
  10. {
  11. public function getHeaders()
  12. {
  13. return $this->_headers;
  14. }
  15. }
  16. class HttpResponseTest extends TestCase
  17. {
  18. public function test_setStatusCode()
  19. {
  20. $response = new tResponse();
  21. //set only time
  22. $response->setStatusCode(404, 'Not Found');
  23. $this->assertEquals(['Status' => '404 Not Found'], $response->getHeaders()->toArray());
  24. //set multiple times
  25. $response = new tResponse();
  26. $response->setStatusCode(200, 'OK');
  27. $response->setStatusCode(404, 'Not Found');
  28. $response->setStatusCode(409, 'Conflict');
  29. $this->assertEquals(['Status' => '409 Conflict'], $response->getHeaders()->toArray());
  30. }
  31. public function test_setHeader()
  32. {
  33. $response = new tResponse();
  34. $response->setHeader('Content-Type', 'text/html');
  35. $this->assertEquals(['Content-Type' => 'text/html'], $response->getHeaders()->toArray());
  36. $response->setHeader('Content-Length', '1234');
  37. $this->assertEquals([
  38. 'Content-Type' => 'text/html',
  39. 'Content-Length' => '1234'
  40. ], $response->getHeaders()->toArray());
  41. }
  42. public function test_setRawHeader()
  43. {
  44. $response = new tResponse();
  45. $response->setRawHeader('Server: Apache');
  46. $this->assertEquals(['Server: Apache' => ''], $response->getHeaders()->toArray());
  47. }
  48. public function test_setExpires()
  49. {
  50. $response = new tResponse();
  51. date_default_timezone_set('PRC');
  52. $time = strtotime('2015-12-18 00:12:41');
  53. $datetime = new DateTime();
  54. $datetime->setTimestamp($time);
  55. $response->setExpires($datetime);
  56. $this->assertEquals(['Expires' => 'Thu, 17 Dec 2015 16:12:41 GMT'], $response->getHeaders()->toArray());
  57. $response->setExpires(strtotime('2015-12-18 00:12:42'));
  58. $this->assertEquals(['Expires' => 'Thu, 17 Dec 2015 16:12:42 GMT'], $response->getHeaders()->toArray());
  59. }
  60. public function test_setNotModified()
  61. {
  62. $response = new tResponse();
  63. $response->setNotModified();
  64. $this->assertEquals(['Status' => '304 Not modified'], $response->getHeaders()->toArray());
  65. }
  66. public function test_setContentType()
  67. {
  68. $response = new tResponse();
  69. $response->setContentType('application/json');
  70. $this->assertEquals(['Content-Type' => 'application/json'], $response->getHeaders()->toArray());
  71. $response->setContentType('application/json', 'utf-8');
  72. $this->assertEquals(['Content-Type' => 'application/json; charset=utf-8'], $response->getHeaders()->toArray());
  73. }
  74. public function test_redirect()
  75. {
  76. $response = new tResponse();
  77. $response->setDependencyInjector(new ManaPHP\Di());
  78. $response->redirect('some/local/url');
  79. $this->assertEquals([
  80. 'Status' => '302 Temporarily Moved',
  81. 'Location' => 'some/local/url'
  82. ], $response->getHeaders()->toArray());
  83. $response = new tResponse();
  84. $response->setDependencyInjector(new ManaPHP\Di());
  85. $response->redirect('http://www.manaphp.com', true);
  86. $this->assertEquals([
  87. 'Status' => '302 Temporarily Moved',
  88. 'Location' => 'http://www.manaphp.com'
  89. ], $response->getHeaders()->toArray());
  90. $response = new tResponse();
  91. $response->setDependencyInjector(new ManaPHP\Di());
  92. $response->redirect('http://www.manaphp.com', true, 301);
  93. $this->assertEquals([
  94. 'Status' => '301 Permanently Moved',
  95. 'Location' => 'http://www.manaphp.com'
  96. ], $response->getHeaders()->toArray());
  97. $response = new tResponse();
  98. $response->setDependencyInjector(new ManaPHP\Di());
  99. $response->redirect('http://www.manaphp.com', false, 301);
  100. $this->assertEquals([
  101. 'Status' => '301 Permanently Moved',
  102. 'Location' => 'http://www.manaphp.com'
  103. ], $response->getHeaders()->toArray());
  104. }
  105. public function test_setContent()
  106. {
  107. $response = new tResponse();
  108. $response->setContent('<h1>Hello');
  109. $this->assertEquals('<h1>Hello', $response->getContent());
  110. $response->setContent('<h1>Hello 2');
  111. $this->assertEquals('<h1>Hello 2', $response->getContent());
  112. }
  113. public function test_setJsonContent()
  114. {
  115. $response = new tResponse();
  116. $response->setJsonContent(['code' => 0, 'message' => 'OK']);
  117. $this->assertEquals(['code' => 0, 'message' => 'OK'], json_decode($response->getContent(), true));
  118. $response->setJsonContent(['code' => 0, 'message' => 'OK', 'data' => 'http://www.manaphp.com/tags/中国'],
  119. JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
  120. $this->assertEquals(['code' => 0, 'message' => 'OK', 'data' => 'http://www.manaphp.com/tags/中国'],
  121. json_decode($response->getContent(), true));
  122. }
  123. public function test_appendContent()
  124. {
  125. $response = new tResponse();
  126. $this->assertEquals('', $response->getContent());
  127. $response->appendContent('<h1>Hello');
  128. $this->assertEquals('<h1>Hello', $response->getContent());
  129. $response->appendContent('</h1>');
  130. $this->assertEquals('<h1>Hello</h1>', $response->getContent());
  131. }
  132. public function test_getContent()
  133. {
  134. $response = new tResponse();
  135. $response->setContent('Hello');
  136. $this->assertEquals('Hello', $response->getContent());
  137. }
  138. /**
  139. * @
  140. */
  141. public function test_setFileToSend()
  142. {
  143. $response = new tResponse();
  144. $response->setFileToSend(__FILE__);
  145. ob_start();
  146. $response->send();
  147. $this->assertEquals(file_get_contents(__FILE__), ob_get_clean());
  148. $this->assertTrue($response->isSent());
  149. }
  150. }