PageRenderTime 38ms CodeModel.GetById 13ms RepoModel.GetById 1ms app.codeStats 0ms

/tests/ZendTest/Validator/File/Md5Test.php

https://bitbucket.org/gencer/zf2
PHP | 221 lines | 132 code | 25 blank | 64 comment | 3 complexity | 67132cc656325939456496845d32d8c9 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-2014 Zend Technologies USA Inc. (http://www.zend.com)
  7. * @license http://framework.zend.com/license/new-bsd New BSD License
  8. */
  9. namespace ZendTest\Validator\File;
  10. use Zend\Validator\File;
  11. /**
  12. * Md5 testbed
  13. *
  14. * @group Zend_Validator
  15. */
  16. class Md5Test extends \PHPUnit_Framework_TestCase
  17. {
  18. /**
  19. * @return array
  20. */
  21. public function basicBehaviorDataProvider()
  22. {
  23. $testFile = __DIR__ . '/_files/picture.jpg';
  24. $pictureTests = array(
  25. // Options, isValid Param, Expected value, Expected message
  26. array(
  27. 'ed74c22109fe9f110579f77b053b8bc3',
  28. $testFile, true, ''
  29. ),
  30. array(
  31. '4d74c22109fe9f110579f77b053b8bc3',
  32. $testFile, false, 'fileMd5DoesNotMatch'
  33. ),
  34. array(
  35. array('4d74c22109fe9f110579f77b053b8bc3', 'ed74c22109fe9f110579f77b053b8bc3'),
  36. $testFile, true, ''
  37. ),
  38. array(
  39. array('4d74c22109fe9f110579f77b053b8bc3', '7d74c22109fe9f110579f77b053b8bc3'),
  40. $testFile, false, 'fileMd5DoesNotMatch'
  41. ),
  42. );
  43. $testFile = __DIR__ . '/_files/nofile.mo';
  44. $noFileTests = array(
  45. // Options, isValid Param, Expected value, message
  46. array('ed74c22109fe9f110579f77b053b8bc3', $testFile, false, 'fileMd5NotFound'),
  47. );
  48. $testFile = __DIR__ . '/_files/testsize.mo';
  49. $sizeFileTests = array(
  50. // Options, isValid Param, Expected value, message
  51. array('ec441f84a2944405baa22873cda22370', $testFile, true, ''),
  52. array('7d74c22109fe9f110579f77b053b8bc3', $testFile, false, 'fileMd5DoesNotMatch'),
  53. );
  54. // Dupe data in File Upload format
  55. $testData = array_merge($pictureTests, $noFileTests, $sizeFileTests);
  56. foreach ($testData as $data) {
  57. $fileUpload = array(
  58. 'tmp_name' => $data[1], 'name' => basename($data[1]),
  59. 'size' => 200, 'error' => 0, 'type' => 'text'
  60. );
  61. $testData[] = array($data[0], $fileUpload, $data[2], $data[3]);
  62. }
  63. return $testData;
  64. }
  65. /**
  66. * Ensures that the validator follows expected behavior
  67. *
  68. * @dataProvider basicBehaviorDataProvider
  69. * @return void
  70. */
  71. public function testBasic($options, $isValidParam, $expected, $messageKey)
  72. {
  73. $validator = new File\Md5($options);
  74. $this->assertEquals($expected, $validator->isValid($isValidParam));
  75. if (!$expected) {
  76. $this->assertTrue(array_key_exists($messageKey, $validator->getMessages()));
  77. }
  78. }
  79. /**
  80. * Ensures that the validator follows expected behavior for legacy Zend\Transfer API
  81. *
  82. * @dataProvider basicBehaviorDataProvider
  83. * @return void
  84. */
  85. public function testLegacy($options, $isValidParam, $expected, $messageKey)
  86. {
  87. if (is_array($isValidParam)) {
  88. $validator = new File\Md5($options);
  89. $this->assertEquals($expected, $validator->isValid($isValidParam['tmp_name'], $isValidParam));
  90. if (!$expected) {
  91. $this->assertTrue(array_key_exists($messageKey, $validator->getMessages()));
  92. }
  93. }
  94. }
  95. /**
  96. * Ensures that getMd5() returns expected value
  97. *
  98. * @return void
  99. */
  100. public function testgetMd5()
  101. {
  102. $validator = new File\Md5('12345');
  103. $this->assertEquals(array('12345' => 'md5'), $validator->getMd5());
  104. $validator = new File\Md5(array('12345', '12333', '12344'));
  105. $this->assertEquals(array('12345' => 'md5', '12333' => 'md5', '12344' => 'md5'), $validator->getMd5());
  106. }
  107. /**
  108. * Ensures that getHash() returns expected value
  109. *
  110. * @return void
  111. */
  112. public function testgetHash()
  113. {
  114. $validator = new File\Md5('12345');
  115. $this->assertEquals(array('12345' => 'md5'), $validator->getHash());
  116. $validator = new File\Md5(array('12345', '12333', '12344'));
  117. $this->assertEquals(array('12345' => 'md5', '12333' => 'md5', '12344' => 'md5'), $validator->getHash());
  118. }
  119. /**
  120. * Ensures that setMd5() returns expected value
  121. *
  122. * @return void
  123. */
  124. public function testSetMd5()
  125. {
  126. $validator = new File\Md5('12345');
  127. $validator->setMd5('12333');
  128. $this->assertEquals(array('12333' => 'md5'), $validator->getMd5());
  129. $validator->setMd5(array('12321', '12121'));
  130. $this->assertEquals(array('12321' => 'md5', '12121' => 'md5'), $validator->getMd5());
  131. }
  132. /**
  133. * Ensures that setHash() returns expected value
  134. *
  135. * @return void
  136. */
  137. public function testSetHash()
  138. {
  139. $validator = new File\Md5('12345');
  140. $validator->setHash('12333');
  141. $this->assertEquals(array('12333' => 'md5'), $validator->getMd5());
  142. $validator->setHash(array('12321', '12121'));
  143. $this->assertEquals(array('12321' => 'md5', '12121' => 'md5'), $validator->getMd5());
  144. }
  145. /**
  146. * Ensures that addMd5() returns expected value
  147. *
  148. * @return void
  149. */
  150. public function testAddMd5()
  151. {
  152. $validator = new File\Md5('12345');
  153. $validator->addMd5('12344');
  154. $this->assertEquals(array('12345' => 'md5', '12344' => 'md5'), $validator->getMd5());
  155. $validator->addMd5(array('12321', '12121'));
  156. $this->assertEquals(array('12345' => 'md5', '12344' => 'md5', '12321' => 'md5', '12121' => 'md5'), $validator->getMd5());
  157. }
  158. /**
  159. * Ensures that addHash() returns expected value
  160. *
  161. * @return void
  162. */
  163. public function testAddHash()
  164. {
  165. $validator = new File\Md5('12345');
  166. $validator->addHash('12344');
  167. $this->assertEquals(array('12345' => 'md5', '12344' => 'md5'), $validator->getMd5());
  168. $validator->addHash(array('12321', '12121'));
  169. $this->assertEquals(array('12345' => 'md5', '12344' => 'md5', '12321' => 'md5', '12121' => 'md5'), $validator->getMd5());
  170. }
  171. /**
  172. * @group ZF-11258
  173. */
  174. public function testZF11258()
  175. {
  176. $validator = new File\Md5('12345');
  177. $this->assertFalse($validator->isValid(__DIR__ . '/_files/nofile.mo'));
  178. $this->assertTrue(array_key_exists('fileMd5NotFound', $validator->getMessages()));
  179. $this->assertContains("does not exist", current($validator->getMessages()));
  180. }
  181. public function testEmptyFileShouldReturnFalseAndDisplayNotFoundMessage()
  182. {
  183. $validator = new File\Md5();
  184. $this->assertFalse($validator->isValid(''));
  185. $this->assertArrayHasKey(File\Md5::NOT_FOUND, $validator->getMessages());
  186. $filesArray = array(
  187. 'name' => '',
  188. 'size' => 0,
  189. 'tmp_name' => '',
  190. 'error' => UPLOAD_ERR_NO_FILE,
  191. 'type' => '',
  192. );
  193. $this->assertFalse($validator->isValid($filesArray));
  194. $this->assertArrayHasKey(File\Md5::NOT_FOUND, $validator->getMessages());
  195. }
  196. }