PageRenderTime 26ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 0ms

/test/akelos/active_support/cases/file_handling_over_ftp.php

https://github.com/bermi/akelos
PHP | 291 lines | 240 code | 48 blank | 3 comment | 11 complexity | 5d2b8a2db2f39e503d309084d549fe7b MD5 | raw file
  1. <?php
  2. //
  3. // In order to pass these tests you'll neet to have an ftp server configured at ftptesting.akelos.org
  4. if(!defined('AK_UPLOAD_FILES_USING_FTP')){
  5. if(!function_exists('ftp_connect')){
  6. echo "PHP is not compiled with FTP support\n";
  7. return;
  8. }
  9. define('RUN_FTP_TESTS', true);
  10. define('AK_UPLOAD_FILES_USING_FTP', true);
  11. define('AK_READ_FILES_USING_FTP', true);
  12. define('AK_DELETE_FILES_USING_FTP', true);
  13. define('AK_FTP_PATH', 'ftp://tests:tests@ftptesting.akelos.org');
  14. define('AK_FTP_AUTO_DISCONNECT', true);
  15. }else{
  16. define('RUN_FTP_TESTS', false);
  17. //die('Fatal error: This test needs to run on its own and not as part of any suite in '.__FILE__);
  18. }
  19. require_once(dirname(__FILE__).'/../config.php');
  20. class FileHandlingOverFtp_TestCase extends ActiveSupportUnitTest
  21. {
  22. public function test_file_put_contents() {
  23. if(!RUN_FTP_TESTS) return;
  24. $file_name = 'cache'.DS.'test_file_1.txt';
  25. $content = 'This is the content of file 1';
  26. $this->assertTrue(AkFileSystem::file_put_contents($file_name, $content));
  27. $file_name = '/cache'.DS.'test_file_1.txt';
  28. $content = 'This is the NEW content for file 1';
  29. $this->assertTrue(AkFileSystem::file_put_contents($file_name, $content));
  30. $file_name = 'cache'.DS.'test_file_2.txt';
  31. $content = "\n\rThis is the content of file 2\n";
  32. $this->assertTrue(AkFileSystem::file_put_contents($file_name, $content));
  33. $file_name = 'cache'.DS.'test_file_3.txt';
  34. $content = "\rThis is the content of file 3\r\n";
  35. $this->assertTrue(AkFileSystem::file_put_contents($file_name, $content));
  36. $file_name = 'cache\test_file_4.txt';
  37. $content = "\rThis is the content of file 4\r\n";
  38. $this->assertTrue(AkFileSystem::file_put_contents($file_name, $content));
  39. $file_name = 'ak_test_folder/test_file.txt';
  40. $content = "\rThis is the content of the test file";
  41. $this->assertTrue(AkFileSystem::file_put_contents($file_name, $content));
  42. $file_name = 'ak_test_folder/new_folder/test_file.txt';
  43. $content = "\rThis is the content of the test file";
  44. $this->assertTrue(AkFileSystem::file_put_contents($file_name, $content));
  45. $file_name = 'ak_test_folder/folder with space/test file.txt';
  46. $content = "\rThis is the content of the test file";
  47. $this->assertTrue(AkFileSystem::file_put_contents($file_name, $content));
  48. }
  49. public function test_file_get_contents() {
  50. if(!RUN_FTP_TESTS) return;
  51. $file_name = 'cache'.DS.'test_file_1.txt';
  52. $content = 'This is the NEW content for file 1';
  53. $this->assertTrue(AkFileSystem::file_get_contents($file_name) === $content);
  54. $file_name = 'cache'.DS.'test_file_2.txt';
  55. $content = "\n\rThis is the content of file 2\n";
  56. $this->assertTrue(AkFileSystem::file_get_contents($file_name) === $content);
  57. $file_name = 'cache'.DS.'test_file_3.txt';
  58. $content = "\rThis is the content of file 3\r\n";
  59. $this->assertTrue(AkFileSystem::file_get_contents($file_name) === $content);
  60. $file_name = 'cache\test_file_4.txt';
  61. $content = "\rThis is the content of file 4\r\n";
  62. $this->assertTrue(AkFileSystem::file_get_contents($file_name) === $content);
  63. $file_name = 'ak_test_folder/folder with space/test file.txt';
  64. $content = "\rThis is the content of the test file";
  65. $this->assertEqual(AkFileSystem::file_get_contents($file_name), $content);
  66. }
  67. public function test_file_delete() {
  68. if(!RUN_FTP_TESTS) return;
  69. $this->assertTrue(AkFileSystem::file_delete('cache'.DS.'test_file_1.txt'));
  70. $this->assertTrue(AkFileSystem::file_delete('cache'.DS.'test_file_2.txt'));
  71. $this->assertTrue(AkFileSystem::file_delete('cache'.DS.'test_file_3.txt'));
  72. $this->assertTrue(AkFileSystem::file_delete('cache'.'\test_file_4.txt'));
  73. $this->assertTrue(AkFileSystem::file_delete('ak_test_folder/new_folder/test_file.txt'));
  74. $this->assertTrue(AkFileSystem::file_delete('ak_test_folder/folder with space/test file.txt'));
  75. }
  76. public function test_directory_delete() {
  77. if(!RUN_FTP_TESTS) return;
  78. $this->assertTrue(AkFileSystem::directory_delete('ak_test_folder'));
  79. $this->assertFalse(AkFileSystem::directory_delete('../../'));
  80. $this->assertFalse(AkFileSystem::directory_delete('..\..\\'));
  81. $this->assertFalse(AkFileSystem::directory_delete(' '));
  82. $this->assertFalse(AkFileSystem::directory_delete('/'));
  83. $this->assertFalse(AkFileSystem::directory_delete('./'));
  84. }
  85. }
  86. class StaticFuntionsForFileHandlingOverFtp_TestCase extends ActiveSupportUnitTest
  87. {
  88. public function test_connect() {
  89. if(!RUN_FTP_TESTS) return;
  90. $connection = AkFtp::connect();
  91. $this->assertTrue($connection);
  92. $this->assertTrue(is_resource($connection) && get_resource_type($connection) == 'FTP Buffer');
  93. $this->assertIdentical($connection, AkFtp::connect());
  94. }
  95. public function test_disconnect() {
  96. if(!RUN_FTP_TESTS) return;
  97. $this->assertTrue(AkFtp::disconnect());
  98. }
  99. public function test_file_put_contents() {
  100. if(!RUN_FTP_TESTS) return;
  101. $file_name = 'cache'.DS.'test_file_1.txt';
  102. $content = 'This is the content of file 1';
  103. $this->assertTrue(AkFileSystem::file_put_contents($file_name, $content));
  104. $file_name = '/cache'.DS.'test_file_1.txt';
  105. $content = 'This is the NEW content for file 1';
  106. $this->assertTrue(AkFileSystem::file_put_contents($file_name, $content));
  107. $file_name = 'cache'.DS.'test_file_2.txt';
  108. $content = "\n\rThis is the content of file 2\n";
  109. $this->assertTrue(AkFileSystem::file_put_contents($file_name, $content));
  110. $file_name = 'cache'.DS.'test_file_3.txt';
  111. $content = "\rThis is the content of file 3\r\n";
  112. $this->assertTrue(AkFileSystem::file_put_contents($file_name, $content));
  113. $file_name = 'cache\test_file_4.txt';
  114. $content = "\rThis is the content of file 4\r\n";
  115. $this->assertTrue(AkFileSystem::file_put_contents($file_name, $content));
  116. $file_name = 'ak_test_folder/test_file.txt';
  117. $content = "\rThis is the content of the test file";
  118. $this->assertTrue(AkFileSystem::file_put_contents($file_name, $content));
  119. $file_name = 'ak_test_folder/new_folder/test_file.txt';
  120. $content = "\rThis is the content of the test file";
  121. $this->assertTrue(AkFileSystem::file_put_contents($file_name, $content));
  122. }
  123. public function test_file_get_contents() {
  124. if(!RUN_FTP_TESTS) return;
  125. $file_name = 'cache'.DS.'test_file_1.txt';
  126. $content = 'This is the NEW content for file 1';
  127. $this->assertTrue(AkFileSystem::file_get_contents($file_name) === $content);
  128. $file_name = 'cache'.DS.'test_file_2.txt';
  129. $content = "\n\rThis is the content of file 2\n";
  130. $this->assertTrue(AkFileSystem::file_get_contents($file_name) === $content);
  131. $file_name = 'cache'.DS.'test_file_3.txt';
  132. $content = "\rThis is the content of file 3\r\n";
  133. $this->assertTrue(AkFileSystem::file_get_contents($file_name) === $content);
  134. $file_name = 'cache\test_file_4.txt';
  135. $content = "\rThis is the content of file 4\r\n";
  136. $this->assertTrue(AkFileSystem::file_get_contents($file_name) === $content);
  137. }
  138. public function test_file_delete() {
  139. if(!RUN_FTP_TESTS) return;
  140. $this->assertTrue(AkFileSystem::file_delete('cache'.DS.'test_file_1.txt'));
  141. $this->assertTrue(AkFileSystem::file_delete('cache'.DS.'test_file_2.txt'));
  142. $this->assertTrue(AkFileSystem::file_delete('cache'.DS.'test_file_3.txt'));
  143. $this->assertTrue(AkFileSystem::file_delete('cache'.'\test_file_4.txt'));
  144. $this->assertTrue(AkFileSystem::file_delete('ak_test_folder/new_folder/test_file.txt'));
  145. }
  146. public function test_directory_delete() {
  147. if(!RUN_FTP_TESTS) return;
  148. $this->assertTrue(AkFileSystem::directory_delete('ak_test_folder'));
  149. $this->assertFalse(AkFileSystem::directory_delete('../../'));
  150. $this->assertFalse(AkFileSystem::directory_delete('..\..\\'));
  151. $this->assertFalse(AkFileSystem::directory_delete(' '));
  152. $this->assertFalse(AkFileSystem::directory_delete('/'));
  153. $this->assertFalse(AkFileSystem::directory_delete('./'));
  154. }
  155. public function test_make_dir() {
  156. if(!RUN_FTP_TESTS) return;
  157. $this->assertTrue(AkFtp::make_dir('new_dir_1'));
  158. $this->assertTrue(AkFtp::make_dir('/new_dir_2'));
  159. $this->assertTrue(AkFtp::make_dir('new_dir_3/'));
  160. $this->assertTrue(AkFtp::make_dir('./new_dir_4'));
  161. $this->assertTrue(AkFtp::make_dir('../new_dir_5'));
  162. $this->assertTrue(AkFtp::make_dir('./new_dir_6/'));
  163. $this->assertTrue(AkFtp::make_dir('../new_dir_7/'));
  164. $this->assertTrue(AkFtp::make_dir('new_dir_1/subdir_1'));
  165. $this->assertTrue(AkFtp::make_dir('/new_dir_2/subdir_1'));
  166. $this->assertTrue(AkFtp::make_dir('new_dir_3/subdir_1'));
  167. $this->assertTrue(AkFtp::make_dir('./new_dir_4/subdir_1'));
  168. $this->assertTrue(AkFtp::make_dir('../new_dir_5/subdir_1'));
  169. $this->assertTrue(AkFtp::make_dir('./new_dir_6/subdir_1'));
  170. $this->assertTrue(AkFtp::make_dir('../new_dir_7/subdir_1'));
  171. $this->assertTrue(AkFtp::make_dir('new_dir_1/subdir_2/subsubdir2'));
  172. $this->assertTrue(AkFtp::make_dir('/new_dir_2/subdir_2/subsubdir2'));
  173. $this->assertTrue(AkFtp::make_dir('new_dir_3/subdir_2/subsubdir2'));
  174. $this->assertTrue(AkFtp::make_dir('./new_dir_4/subdir_2/subsubdir2'));
  175. $this->assertTrue(AkFtp::make_dir('../new_dir_5/subdir_2/subsubdir2'));
  176. $this->assertTrue(AkFtp::make_dir('./new_dir_6/subdir_2/subsubdir2'));
  177. $this->assertTrue(AkFtp::make_dir('../new_dir_7/subdir_2/subsubdir2'));
  178. $this->assertTrue(AkFtp::make_dir('new_dir_8/subdir_1/subsubdir1'));
  179. }
  180. public function test_delete() {
  181. if(!RUN_FTP_TESTS) return;
  182. $this->assertTrue(AkFtp::delete('new_dir_8/*'));
  183. $this->assertTrue(AkFileSystem::file_put_contents('prueba.txt', ''));
  184. $this->assertTrue(AkFtp::delete('prueba.txt'));
  185. $this->assertTrue(AkFileSystem::file_put_contents('new_dir_1/prueba.txt', ''));
  186. $this->assertTrue(AkFtp::delete('new_dir_1/prueba.txt'));
  187. $this->assertTrue(AkFtp::delete('new_dir_2/subdir_1'));
  188. $this->expectError();
  189. AkFtp::delete('new_dir_2/subdir');
  190. $this->expectError();
  191. AkFtp::delete('new_dir_2/subdir_1');
  192. $this->assertTrue(AkFtp::delete('new_dir_1'));
  193. $this->assertTrue(AkFtp::delete('new_dir_2'));
  194. $this->assertTrue(AkFtp::delete('../new_dir_3'));
  195. $this->assertTrue(AkFtp::delete('./new_dir_4'));
  196. $this->assertTrue(AkFtp::delete('./new_dir_5/'));
  197. $this->assertTrue(AkFtp::delete('new_dir_6/'));
  198. $this->assertTrue(AkFtp::delete('/new_dir_7'));
  199. $this->assertTrue(AkFtp::delete('/new_dir_8/'));
  200. }
  201. public function test_is_dir() {
  202. if(!RUN_FTP_TESTS) return;
  203. $path = 'invalid path';
  204. $this->assertFalse(AkFtp::is_dir($path));
  205. $path = 'this_is_a_file.txt';
  206. AkFileSystem::file_put_contents('this_is_a_file.txt', '');
  207. $this->assertFalse(AkFtp::is_dir($path));
  208. AkFtp::make_dir('tmp_test_dir');
  209. AkFileSystem::file_put_contents('tmp_test_dir/file_inside.txt', '');
  210. $path = 'tmp_test_dir/file_inside.txt';
  211. $this->assertFalse(AkFtp::is_dir($path));
  212. AkFtp::make_dir('real_dir/another/dir');
  213. $path = 'real_dir';
  214. $this->assertTrue(AkFtp::is_dir($path));
  215. $path = 'real_dir/another/dir';
  216. $this->assertTrue(AkFtp::is_dir($path));
  217. AkFtp::delete('real_dir');
  218. AkFtp::delete('this_is_a_file.txt');
  219. AkFtp::delete('tmp_test_dir');
  220. AkFtp::delete('cache');
  221. }
  222. }
  223. ak_test_case('FileHandlingOverFtp_TestCase');
  224. ak_test_case('StaticFuntionsForFileHandlingOverFtp_TestCase');