PageRenderTime 30ms CodeModel.GetById 22ms RepoModel.GetById 0ms app.codeStats 1ms

/vendor/zendframework/zendframework/tests/ZendTest/Filter/Compress/ZipTest.php

https://bitbucket.org/pcelta/zf2
PHP | 287 lines | 201 code | 32 blank | 54 comment | 9 complexity | d81f26efe16a353f270fde68cba79437 MD5 | raw file
  1. <?php
  2. /**
  3. * Zend Framework (http://framework.zend.com/)
  4. *
  5. * @link http://github.com/zendframework/zf2 for the canonical source repository
  6. * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
  7. * @license http://framework.zend.com/license/new-bsd New BSD License
  8. * @package Zend_Filter
  9. */
  10. namespace ZendTest\Filter\Compress;
  11. use Zend\Filter\Compress\Zip as ZipCompression;
  12. /**
  13. * @category Zend
  14. * @package Zend_Filter
  15. * @subpackage UnitTests
  16. * @group Zend_Filter
  17. */
  18. class ZipTest extends \PHPUnit_Framework_TestCase
  19. {
  20. public function setUp()
  21. {
  22. if (!extension_loaded('zip')) {
  23. $this->markTestSkipped('This adapter needs the zip extension');
  24. }
  25. $files = array(
  26. dirname(__DIR__) . '/_files/compressed.zip',
  27. dirname(__DIR__) . '/_files/zipextracted.txt',
  28. dirname(__DIR__) . '/_files/zip.tmp',
  29. dirname(__DIR__) . '/_files/_compress/Compress/First/Second/zipextracted.txt',
  30. dirname(__DIR__) . '/_files/_compress/Compress/First/Second',
  31. dirname(__DIR__) . '/_files/_compress/Compress/First/zipextracted.txt',
  32. dirname(__DIR__) . '/_files/_compress/Compress/First',
  33. dirname(__DIR__) . '/_files/_compress/Compress/zipextracted.txt',
  34. dirname(__DIR__) . '/_files/_compress/Compress',
  35. dirname(__DIR__) . '/_files/_compress/zipextracted.txt',
  36. dirname(__DIR__) . '/_files/_compress'
  37. );
  38. foreach ($files as $file) {
  39. if (file_exists($file)) {
  40. if (is_dir($file)) {
  41. rmdir($file);
  42. } else {
  43. unlink($file);
  44. }
  45. }
  46. }
  47. if (!file_exists(dirname(__DIR__) . '/_files/Compress/First/Second')) {
  48. mkdir(dirname(__DIR__) . '/_files/Compress/First/Second', 0777, true);
  49. file_put_contents(dirname(__DIR__) . '/_files/Compress/First/Second/zipextracted.txt', 'compress me');
  50. file_put_contents(dirname(__DIR__) . '/_files/Compress/First/zipextracted.txt', 'compress me');
  51. file_put_contents(dirname(__DIR__) . '/_files/Compress/zipextracted.txt', 'compress me');
  52. }
  53. }
  54. public function tearDown()
  55. {
  56. $files = array(
  57. dirname(__DIR__) . '/_files/compressed.zip',
  58. dirname(__DIR__) . '/_files/zipextracted.txt',
  59. dirname(__DIR__) . '/_files/zip.tmp',
  60. dirname(__DIR__) . '/_files/_compress/Compress/First/Second/zipextracted.txt',
  61. dirname(__DIR__) . '/_files/_compress/Compress/First/Second',
  62. dirname(__DIR__) . '/_files/_compress/Compress/First/zipextracted.txt',
  63. dirname(__DIR__) . '/_files/_compress/Compress/First',
  64. dirname(__DIR__) . '/_files/_compress/Compress/zipextracted.txt',
  65. dirname(__DIR__) . '/_files/_compress/Compress',
  66. dirname(__DIR__) . '/_files/_compress/zipextracted.txt',
  67. dirname(__DIR__) . '/_files/_compress'
  68. );
  69. foreach ($files as $file) {
  70. if (file_exists($file)) {
  71. if (is_dir($file)) {
  72. rmdir($file);
  73. } else {
  74. unlink($file);
  75. }
  76. }
  77. }
  78. if (!file_exists(dirname(__DIR__) . '/_files/Compress/First/Second')) {
  79. mkdir(dirname(__DIR__) . '/_files/Compress/First/Second', 0777, true);
  80. file_put_contents(dirname(__DIR__) . '/_files/Compress/First/Second/zipextracted.txt', 'compress me');
  81. file_put_contents(dirname(__DIR__) . '/_files/Compress/First/zipextracted.txt', 'compress me');
  82. file_put_contents(dirname(__DIR__) . '/_files/Compress/zipextracted.txt', 'compress me');
  83. }
  84. }
  85. /**
  86. * Basic usage
  87. *
  88. * @return void
  89. */
  90. public function testBasicUsage()
  91. {
  92. $filter = new ZipCompression(
  93. array(
  94. 'archive' => dirname(__DIR__) . '/_files/compressed.zip',
  95. 'target' => dirname(__DIR__) . '/_files/zipextracted.txt'
  96. )
  97. );
  98. $content = $filter->compress('compress me');
  99. $this->assertEquals(dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files'
  100. . DIRECTORY_SEPARATOR . 'compressed.zip', $content);
  101. $content = $filter->decompress($content);
  102. $this->assertEquals(dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR, $content);
  103. $content = file_get_contents(dirname(__DIR__) . '/_files/zipextracted.txt');
  104. $this->assertEquals('compress me', $content);
  105. }
  106. /**
  107. * Setting Options
  108. *
  109. * @return void
  110. */
  111. public function testZipGetSetOptions()
  112. {
  113. $filter = new ZipCompression();
  114. $this->assertEquals(array('archive' => null, 'target' => null), $filter->getOptions());
  115. $this->assertEquals(null, $filter->getOptions('archive'));
  116. $this->assertNull($filter->getOptions('nooption'));
  117. $filter->setOptions(array('nooption' => 'foo'));
  118. $this->assertNull($filter->getOptions('nooption'));
  119. $filter->setOptions(array('archive' => 'temp.txt'));
  120. $this->assertEquals('temp.txt', $filter->getOptions('archive'));
  121. }
  122. /**
  123. * Setting Archive
  124. *
  125. * @return void
  126. */
  127. public function testZipGetSetArchive()
  128. {
  129. $filter = new ZipCompression();
  130. $this->assertEquals(null, $filter->getArchive());
  131. $filter->setArchive('Testfile.txt');
  132. $this->assertEquals('Testfile.txt', $filter->getArchive());
  133. $this->assertEquals('Testfile.txt', $filter->getOptions('archive'));
  134. }
  135. /**
  136. * Setting Target
  137. *
  138. * @return void
  139. */
  140. public function testZipGetSetTarget()
  141. {
  142. $filter = new ZipCompression();
  143. $this->assertNull($filter->getTarget());
  144. $filter->setTarget('Testfile.txt');
  145. $this->assertEquals('Testfile.txt', $filter->getTarget());
  146. $this->assertEquals('Testfile.txt', $filter->getOptions('target'));
  147. $this->setExpectedException('\Zend\Filter\Exception\InvalidArgumentException', 'does not exist');
  148. $filter->setTarget('/unknown/path/to/file.txt');
  149. }
  150. /**
  151. * Compress to Archive
  152. *
  153. * @return void
  154. */
  155. public function testZipCompressFile()
  156. {
  157. $filter = new ZipCompression(
  158. array(
  159. 'archive' => dirname(__DIR__) . '/_files/compressed.zip',
  160. 'target' => dirname(__DIR__) . '/_files/zipextracted.txt'
  161. )
  162. );
  163. file_put_contents(dirname(__DIR__) . '/_files/zipextracted.txt', 'compress me');
  164. $content = $filter->compress(dirname(__DIR__) . '/_files/zipextracted.txt');
  165. $this->assertEquals(dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files'
  166. . DIRECTORY_SEPARATOR . 'compressed.zip', $content);
  167. $content = $filter->decompress($content);
  168. $this->assertEquals(dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR, $content);
  169. $content = file_get_contents(dirname(__DIR__) . '/_files/zipextracted.txt');
  170. $this->assertEquals('compress me', $content);
  171. }
  172. /**
  173. * Basic usage
  174. *
  175. * @return void
  176. */
  177. public function testCompressNonExistingTargetFile()
  178. {
  179. $filter = new ZipCompression(
  180. array(
  181. 'archive' => dirname(__DIR__) . '/_files/compressed.zip',
  182. 'target' => dirname(__DIR__) . '/_files'
  183. )
  184. );
  185. $content = $filter->compress('compress me');
  186. $this->assertEquals(dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files'
  187. . DIRECTORY_SEPARATOR . 'compressed.zip', $content);
  188. $content = $filter->decompress($content);
  189. $this->assertEquals(dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR, $content);
  190. $content = file_get_contents(dirname(__DIR__) . '/_files/zip.tmp');
  191. $this->assertEquals('compress me', $content);
  192. }
  193. /**
  194. * Compress directory to Archive
  195. *
  196. * @return void
  197. */
  198. public function testZipCompressDirectory()
  199. {
  200. $filter = new ZipCompression(
  201. array(
  202. 'archive' => dirname(__DIR__) . '/_files/compressed.zip',
  203. 'target' => dirname(__DIR__) . '/_files/_compress'
  204. )
  205. );
  206. $content = $filter->compress(dirname(__DIR__) . '/_files/Compress');
  207. $this->assertEquals(dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files'
  208. . DIRECTORY_SEPARATOR . 'compressed.zip', $content);
  209. mkdir(dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . '_compress');
  210. $content = $filter->decompress($content);
  211. $this->assertEquals(dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . '_compress'
  212. . DIRECTORY_SEPARATOR, $content);
  213. $base = dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files'
  214. . DIRECTORY_SEPARATOR . '_compress' . DIRECTORY_SEPARATOR . 'Compress' . DIRECTORY_SEPARATOR;
  215. $this->assertTrue(file_exists($base));
  216. $this->assertTrue(file_exists($base . 'zipextracted.txt'));
  217. $this->assertTrue(file_exists($base . 'First' . DIRECTORY_SEPARATOR . 'zipextracted.txt'));
  218. $this->assertTrue(file_exists($base . 'First' . DIRECTORY_SEPARATOR .
  219. 'Second' . DIRECTORY_SEPARATOR . 'zipextracted.txt'));
  220. $content = file_get_contents(dirname(__DIR__) . '/_files/Compress/zipextracted.txt');
  221. $this->assertEquals('compress me', $content);
  222. }
  223. /**
  224. * testing toString
  225. *
  226. * @return void
  227. */
  228. public function testZipToString()
  229. {
  230. $filter = new ZipCompression();
  231. $this->assertEquals('Zip', $filter->toString());
  232. }
  233. public function testDecompressWillThrowExceptionWhenDecompressingWithNoTarget()
  234. {
  235. $filter = new ZipCompression(
  236. array(
  237. 'archive' => dirname(__DIR__) . '/_files/compressed.zip',
  238. 'target' => dirname(__DIR__) . '/_files/_compress'
  239. )
  240. );
  241. $content = $filter->compress('compress me');
  242. $this->assertEquals(dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files'
  243. . DIRECTORY_SEPARATOR . 'compressed.zip', $content);
  244. $filter = new ZipCompression(
  245. array(
  246. 'archive' => dirname(__DIR__) . '/_files/compressed.zip',
  247. 'target' => dirname(__DIR__) . '/_files/_compress'
  248. )
  249. );
  250. $content = $filter->decompress($content);
  251. $this->assertEquals(dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR, $content);
  252. $content = file_get_contents(dirname(__DIR__) . '/_files/_compress');
  253. $this->assertEquals('compress me', $content);
  254. }
  255. }