PageRenderTime 28ms CodeModel.GetById 31ms RepoModel.GetById 1ms app.codeStats 0ms

/tests/PHPFrame/HTTP/HTTPRequestTest.php

https://github.com/PHPFrame/PHPFrame
PHP | 255 lines | 183 code | 67 blank | 5 comment | 4 complexity | e6f562681aef7e04ca3ace69ec183d34 MD5 | raw file
Possible License(s): BSD-3-Clause, LGPL-2.1
  1. <?php
  2. // Include framework if not inculded yet
  3. require_once preg_replace("/tests\/.*/", "src/PHPFrame.php", __FILE__);
  4. class PHPFrame_HTTPRequestTest extends PHPUnit_Framework_TestCase
  5. {
  6. public function setUp()
  7. {
  8. //...
  9. }
  10. public function tearDown()
  11. {
  12. //...
  13. }
  14. public function test_handleRedirects()
  15. {
  16. $http_request = new PHPFrame_HTTPRequest();
  17. $this->assertTrue($http_request->handleRedirects());
  18. $this->assertFalse($http_request->handleRedirects(false));
  19. $this->assertTrue($http_request->handleRedirects(true));
  20. }
  21. public function test_cacheTime()
  22. {
  23. $http_request = new PHPFrame_HTTPRequest();
  24. $this->assertEquals(0, $http_request->cacheTime());
  25. $this->assertEquals(120, $http_request->cacheTime(120));
  26. $this->assertEquals(0, $http_request->cacheTime(0));
  27. $this->assertEquals(0, $http_request->cacheTime(null));
  28. $this->assertEquals(1, $http_request->cacheTime(true));
  29. $this->assertEquals(0, $http_request->cacheTime(false));
  30. $this->assertEquals(3, $http_request->cacheTime(3.14));
  31. $this->assertEquals(123, $http_request->cacheTime("123"));
  32. $this->assertEquals(0, $http_request->cacheTime("some string"));
  33. $this->assertEquals(0, $http_request->cacheTime(array()));
  34. $this->assertEquals(1, $http_request->cacheTime(array(1,2,3)));
  35. }
  36. public function test_cacheDir()
  37. {
  38. $http_request = new PHPFrame_HTTPRequest();
  39. $tmp_dir = PHPFrame_Filesystem::getSystemTempDir();
  40. $this->assertEquals(null, $http_request->cacheDir());
  41. $this->assertEquals($tmp_dir, $http_request->cacheDir($tmp_dir));
  42. }
  43. public function test_cacheDirFailure()
  44. {
  45. $http_request = new PHPFrame_HTTPRequest();
  46. $this->assertEquals(null, $http_request->cacheDir());
  47. $this->setExpectedException("RuntimeException");
  48. $this->assertEquals("/path/to/cache", $http_request->cacheDir("/path/to/cache"));
  49. }
  50. public function test_send()
  51. {
  52. $http_request = new PHPFrame_HTTPRequest("http://www.phpframe.org");
  53. $http_response = $http_request->send();
  54. $this->assertEquals(200, $http_response->getStatus());
  55. }
  56. public function test_sendBadURLFailure()
  57. {
  58. $http_request = new PHPFrame_HTTPRequest("sdjncds");
  59. $this->setExpectedException("RuntimeException");
  60. $http_request->send();
  61. }
  62. public function test_sendNoURLFailure()
  63. {
  64. $http_request = new PHPFrame_HTTPRequest();
  65. $this->setExpectedException("RuntimeException");
  66. $http_request->send();
  67. }
  68. public function test_sendHandleRedirection()
  69. {
  70. $http_request = new PHPFrame_HTTPRequest("http://google.com");
  71. $http_response = $http_request->send();
  72. $this->assertEquals(200, $http_response->getStatus());
  73. }
  74. public function test_sendDontHandleRedirection()
  75. {
  76. $http_request = new PHPFrame_HTTPRequest("http://google.com");
  77. $http_request->handleRedirects(false);
  78. $http_response = $http_request->send();
  79. $this->assertEquals(301, $http_response->getStatus());
  80. }
  81. public function test_sendCacheInWorkingDir()
  82. {
  83. $http_request = new PHPFrame_HTTPRequest("http://www.phpframe.org");
  84. $http_request->cacheTime(60);
  85. $http_response = $http_request->send();
  86. $this->assertEquals(200, $http_response->getStatus());
  87. $http_response2 = $http_request->send();
  88. $this->assertEquals(200, $http_response->getStatus());
  89. $this->assertEquals($http_response->getBody(), $http_response2->getBody());
  90. PHPFrame_Filesystem::rm(getcwd().DS.md5($http_request->getUrl()->getUrl()));
  91. }
  92. public function test_sendCacheInGivenDir()
  93. {
  94. $tmp_dir = PHPFrame_Filesystem::getSystemTempDir();
  95. $http_request = new PHPFrame_HTTPRequest("http://www.phpframe.org");
  96. $http_request->cacheTime(60);
  97. $http_request->cacheDir($tmp_dir);
  98. $http_response = $http_request->send();
  99. $this->assertEquals(200, $http_response->getStatus());
  100. $http_response2 = $http_request->send();
  101. $this->assertEquals(200, $http_response->getStatus());
  102. $this->assertEquals($http_response->getBody(), $http_response2->getBody());
  103. PHPFrame_Filesystem::rm($tmp_dir.DS.md5($http_request->getUrl()->getUrl()));
  104. }
  105. public function test_sendCacheDirNotWritable()
  106. {
  107. }
  108. public function test_sendCacheCorruptedData()
  109. {
  110. $tmp_dir = PHPFrame_Filesystem::getSystemTempDir();
  111. $http_request = new PHPFrame_HTTPRequest("http://www.phpframe.org");
  112. $http_request->cacheTime(60);
  113. $http_request->cacheDir($tmp_dir);
  114. $http_response = $http_request->send();
  115. $this->assertEquals(200, $http_response->getStatus());
  116. // Corrupt data!!!
  117. file_put_contents(
  118. $tmp_dir.DS.md5($http_request->getUrl()->getUrl()),
  119. "i am corrupted..."
  120. );
  121. // A new request will be sent when the cached data fails to unserialise
  122. $http_response2 = $http_request->send();
  123. $this->assertEquals(200, $http_response->getStatus());
  124. $this->assertEquals($http_response->getBody(), $http_response2->getBody());
  125. PHPFrame_Filesystem::rm($tmp_dir.DS.md5($http_request->getUrl()->getUrl()));
  126. }
  127. public function test_downloadToWorkingDir()
  128. {
  129. $http_request = new PHPFrame_HTTPRequest("http://www.phpframe.org");
  130. $file = getcwd().DS."www.phpframe.org";
  131. if (is_file($file)) {
  132. PHPFrame_Filesystem::rm($file);
  133. }
  134. ob_start();
  135. $http_response = $http_request->download();
  136. ob_end_clean();
  137. $this->assertEquals(200, $http_response->getStatus());
  138. $this->assertTrue(is_file($file));
  139. PHPFrame_Filesystem::rm($file);
  140. }
  141. public function test_downloadToWorkingDirWithCustomFilename()
  142. {
  143. $http_request = new PHPFrame_HTTPRequest("http://www.phpframe.org");
  144. $file = getcwd().DS."myfile.html";
  145. if (is_file($file)) {
  146. PHPFrame_Filesystem::rm($file);
  147. }
  148. ob_start();
  149. $http_response = $http_request->download(null, "myfile.html");
  150. ob_end_clean();
  151. $this->assertEquals(200, $http_response->getStatus());
  152. $this->assertTrue(is_file($file));
  153. PHPFrame_Filesystem::rm($file);
  154. }
  155. public function test_downloadToGivenDir()
  156. {
  157. $http_request = new PHPFrame_HTTPRequest("http://www.phpframe.org");
  158. $file = PHPFrame_Filesystem::getSystemTempDir().DS."www.phpframe.org";
  159. if (is_file($file)) {
  160. PHPFrame_Filesystem::rm($file);
  161. }
  162. ob_start();
  163. $http_response = $http_request->download(
  164. PHPFrame_Filesystem::getSystemTempDir()
  165. );
  166. ob_end_clean();
  167. $this->assertEquals(200, $http_response->getStatus());
  168. $this->assertTrue(is_file($file));
  169. PHPFrame_Filesystem::rm($file);
  170. }
  171. public function test_downloadToGivenDirWithCustomFilename()
  172. {
  173. $http_request = new PHPFrame_HTTPRequest("http://www.phpframe.org");
  174. $file = PHPFrame_Filesystem::getSystemTempDir().DS."myfile.html";
  175. if (is_file($file)) {
  176. PHPFrame_Filesystem::rm($file);
  177. }
  178. ob_start();
  179. $http_response = $http_request->download(
  180. PHPFrame_Filesystem::getSystemTempDir(),
  181. "myfile.html"
  182. );
  183. ob_end_clean();
  184. $this->assertEquals(200, $http_response->getStatus());
  185. $this->assertTrue(is_file($file));
  186. PHPFrame_Filesystem::rm($file);
  187. }
  188. }