PageRenderTime 138ms CodeModel.GetById 17ms RepoModel.GetById 1ms app.codeStats 1ms

/tests/Zend/Filter/InputTest.php

https://bitbucket.org/ksekar/campus
PHP | 2328 lines | 1885 code | 290 blank | 153 comment | 11 complexity | 34d0a326e97c55d04024538b7901ce9c MD5 | raw file
Possible License(s): BSD-3-Clause, LGPL-2.0, MIT

Large files files are truncated, but you can click here to view the full file

  1. <?php
  2. /**
  3. * Zend Framework
  4. *
  5. * LICENSE
  6. *
  7. * This source file is subject to the new BSD license that is bundled
  8. * with this package in the file LICENSE.txt.
  9. * It is also available through the world-wide-web at this URL:
  10. * http://framework.zend.com/license/new-bsd
  11. * If you did not receive a copy of the license and are unable to
  12. * obtain it through the world-wide-web, please send an email
  13. * to license@zend.com so we can send you a copy immediately.
  14. *
  15. * @category Zend
  16. * @package Zend_Filter
  17. * @subpackage UnitTests
  18. * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
  19. * @license http://framework.zend.com/license/new-bsd New BSD License
  20. * @version $Id: InputTest.php 24594 2012-01-05 21:27:01Z matthew $
  21. */
  22. /**
  23. * @see Zend_Filter_Input
  24. */
  25. require_once 'Zend/Filter/Input.php';
  26. /**
  27. * @see Zend_Loader
  28. */
  29. require_once 'Zend/Loader.php';
  30. /**
  31. * @category Zend
  32. * @package Zend_Filter
  33. * @subpackage UnitTests
  34. * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
  35. * @license http://framework.zend.com/license/new-bsd New BSD License
  36. * @group Zend_Filter
  37. */
  38. class Zend_Filter_InputTest extends PHPUnit_Framework_TestCase
  39. {
  40. /**
  41. * @group ZF-11267
  42. * If we pass in a validator instance that has a preset custom message, this
  43. * message should be used.
  44. */
  45. function testIfCustomMessagesOnValidatorInstancesCanBeUsed()
  46. {
  47. // test with a Digits validator
  48. require_once 'Zend/Validate/Digits.php';
  49. require_once 'Zend/Validate/NotEmpty.php';
  50. $data = array('field1' => 'invalid data');
  51. $customMessage = 'Hey, that\'s not a Digit!!!';
  52. $validator = new Zend_Validate_Digits();
  53. $validator->setMessage($customMessage, 'notDigits');
  54. $this->assertFalse($validator->isValid('foo'), 'standalone validator thinks \'foo\' is a valid digit');
  55. $messages = $validator->getMessages();
  56. $this->assertSame($messages['notDigits'], $customMessage, 'stanalone validator does not have custom message');
  57. $validators = array('field1' => $validator);
  58. $input = new Zend_Filter_Input(null, $validators, $data);
  59. $this->assertFalse($input->isValid(), 'invalid input is valid');
  60. $messages = $input->getMessages();
  61. $this->assertSame($messages['field1']['notDigits'], $customMessage, 'The custom message is not used');
  62. // test with a NotEmpty validator
  63. $data = array('field1' => '');
  64. $customMessage = 'You should really supply a value...';
  65. $validator = new Zend_Validate_NotEmpty();
  66. $validator->setMessage($customMessage, 'isEmpty');
  67. $this->assertFalse($validator->isValid(''), 'standalone validator thinks \'\' is not empty');
  68. $messages = $validator->getMessages();
  69. $this->assertSame($messages['isEmpty'], $customMessage, 'stanalone NotEmpty validator does not have custom message');
  70. $validators = array('field1' => $validator);
  71. $input = new Zend_Filter_Input(null, $validators, $data);
  72. $this->assertFalse($input->isValid(), 'invalid input is valid');
  73. $messages = $input->getMessages();
  74. $this->assertSame($messages['field1']['isEmpty'], $customMessage, 'For the NotEmpty validator the custom message is not used');
  75. }
  76. /**
  77. *
  78. * If setAllowEmpty(true) is called, all fields are optional, but fields with
  79. * a NotEmpty validator attached to them, should contain a non empty value.
  80. *
  81. * @group ZF-9289
  82. */
  83. function testAllowEmptyTrueRespectsNotEmtpyValidators()
  84. {
  85. require_once 'Zend/Validate/NotEmpty.php';
  86. require_once 'Zend/Validate/Digits.php';
  87. $data = array(
  88. 'field1' => 'foo',
  89. 'field2' => ''
  90. );
  91. $validators = array(
  92. 'field1' => array(
  93. new Zend_Validate_NotEmpty(),
  94. Zend_Filter_Input::MESSAGES => array(
  95. array(
  96. Zend_Validate_NotEmpty::IS_EMPTY => '\'field1\' is required'
  97. )
  98. )
  99. ),
  100. 'field2' => array(
  101. new Zend_Validate_NotEmpty()
  102. )
  103. );
  104. $options = array(Zend_Filter_Input::ALLOW_EMPTY => true);
  105. $input = new Zend_Filter_Input( null, $validators, $data, $options );
  106. $this->assertFalse($input->isValid(), 'Ouch, the NotEmpty validators are ignored!');
  107. $validators = array(
  108. 'field1' => array(
  109. 'Digits',
  110. array('NotEmpty', 'integer'),
  111. Zend_Filter_Input::MESSAGES => array(
  112. 1 =>
  113. array(
  114. Zend_Validate_NotEmpty::IS_EMPTY => '\'field1\' is required'
  115. )
  116. ),
  117. ),
  118. );
  119. $data = array(
  120. 'field1' => 0,
  121. 'field2' => ''
  122. );
  123. $options = array(Zend_Filter_Input::ALLOW_EMPTY => true);
  124. $input = new Zend_Filter_Input( null, $validators, $data, $options );
  125. $this->assertFalse($input->isValid(), 'Ouch, if the NotEmpty validator is not the first rule, the NotEmpty validators are ignored !');
  126. // and now with a string 'NotEmpty' instead of an instance:
  127. $validators = array(
  128. 'field1' => array(
  129. 'NotEmpty',
  130. Zend_Filter_Input::MESSAGES => array(
  131. 0 =>
  132. array(
  133. Zend_Validate_NotEmpty::IS_EMPTY => '\'field1\' is required'
  134. )
  135. ),
  136. ),
  137. );
  138. $data = array(
  139. 'field1' => '',
  140. 'field2' => ''
  141. );
  142. $options = array(Zend_Filter_Input::ALLOW_EMPTY => true);
  143. $input = new Zend_Filter_Input( null, $validators, $data, $options );
  144. $this->assertFalse($input->isValid(), 'If the NotEmpty validator is a string, the NotEmpty validator is ignored !');
  145. // and now with an array
  146. $validators = array(
  147. 'field1' => array(
  148. array('NotEmpty', 'integer'),
  149. Zend_Filter_Input::MESSAGES => array(
  150. 0 =>
  151. array(
  152. Zend_Validate_NotEmpty::IS_EMPTY => '\'field1\' is required'
  153. )
  154. ),
  155. ),
  156. );
  157. $data = array(
  158. 'field1' => 0,
  159. 'field2' => ''
  160. );
  161. $options = array(Zend_Filter_Input::ALLOW_EMPTY => true);
  162. $input = new Zend_Filter_Input( null, $validators, $data, $options );
  163. $this->assertFalse($input->isValid(), 'If the NotEmpty validator is an array, the NotEmpty validator is ignored !');
  164. }
  165. /**
  166. * @group ZF-8446
  167. * The issue reports about nested error messages. This is to assure these do not occur.
  168. *
  169. * Example:
  170. * Expected Result
  171. * array(2) {
  172. * ["field1"] => array(1) {
  173. * ["isEmpty"] => string(20) "'field1' is required"
  174. * }
  175. * ["field2"] => array(1) {
  176. * ["isEmpty"] => string(36) "Value is required and can't be empty"
  177. * }
  178. * }
  179. * Actual Result
  180. * array(2) {
  181. * ["field1"] => array(1) {
  182. * ["isEmpty"] => array(1) {
  183. * ["isEmpty"] => string(20) "'field1' is required"
  184. * }
  185. * }
  186. * ["field2"] => array(1) {
  187. * ["isEmpty"] => array(1) {
  188. * ["isEmpty"] => string(20) "'field1' is required"
  189. * }
  190. * }
  191. * }
  192. */
  193. public function testNoNestedMessageArrays()
  194. {
  195. require_once 'Zend/Validate/NotEmpty.php';
  196. $data = array(
  197. 'field1' => '',
  198. 'field2' => ''
  199. );
  200. $validators = array(
  201. 'field1' => array(
  202. new Zend_Validate_NotEmpty(),
  203. Zend_Filter_Input::MESSAGES => array(
  204. array(
  205. Zend_Validate_NotEmpty::IS_EMPTY => '\'field1\' is required'
  206. )
  207. )
  208. ),
  209. 'field2' => array(
  210. new Zend_Validate_NotEmpty()
  211. )
  212. );
  213. $input = new Zend_Filter_Input( null, $validators, $data );
  214. $this->assertFalse($input->isValid());
  215. $messages = $input->getMessages();
  216. $this->assertFalse(is_array($messages['field1']['isEmpty']), 'oh oh, we may have got nested messages');
  217. $this->assertTrue(isset($messages['field1']['isEmpty']), 'oh no, we not even got the normally expected messages');
  218. }
  219. /**
  220. * @group ZF-11142, ZF-8446, ZF-9289
  221. */
  222. public function testTwoValidatorsInChainShowCorrectError()
  223. {
  224. require_once 'Zend/Validate/NotEmpty.php';
  225. require_once 'Zend/Validate/Float.php';
  226. $validators = array(
  227. 'field1' => array(
  228. 'NotEmpty', 'Float',
  229. 'presence' => 'required',
  230. 'messages' => array(
  231. 'Field1 is empty',
  232. array(Zend_Validate_Float::NOT_FLOAT => "Field1 must be a number.")
  233. )
  234. ),
  235. 'field2' => array(
  236. 'presence' => 'required'
  237. )
  238. );
  239. $data = array('field1' => 0.0, 'field2' => '');
  240. $input = new Zend_Filter_Input(null, $validators, $data);
  241. $this->assertFalse($input->isValid());
  242. $messages = $input->getMessages();
  243. $this->assertSame($messages['field2']["isEmpty"], "You must give a non-empty value for field 'field2'");
  244. $this->assertSame('Field1 is empty', $messages['field1'][Zend_Validate_NotEmpty::IS_EMPTY], 'custom message not shown');
  245. }
  246. public function testFilterDeclareSingle()
  247. {
  248. $data = array(
  249. 'month' => '6abc '
  250. );
  251. $filters = array(
  252. 'month' => 'digits'
  253. );
  254. $input = new Zend_Filter_Input($filters, null, $data);
  255. $this->assertTrue($input->hasValid(), 'Expected hasValid() to return true');
  256. $month = $input->month;
  257. $this->assertEquals('6', $month);
  258. }
  259. public function testFilterDeclareByObject()
  260. {
  261. $data = array(
  262. 'month' => '6abc '
  263. );
  264. Zend_Loader::loadClass('Zend_Filter_Digits');
  265. $filters = array(
  266. 'month' => array(new Zend_Filter_Digits())
  267. );
  268. $input = new Zend_Filter_Input($filters, null, $data);
  269. $this->assertFalse($input->hasMissing(), 'Expected hasMissing() to return false');
  270. $this->assertFalse($input->hasInvalid(), 'Expected hasInvalid() to return false');
  271. $this->assertFalse($input->hasUnknown(), 'Expected hasUnknown() to return false');
  272. $this->assertTrue($input->hasValid(), 'Expected hasValid() to return true');
  273. $month = $input->month;
  274. $this->assertEquals('6', $month);
  275. }
  276. public function testFilterDeclareByArray()
  277. {
  278. $data = array(
  279. 'month' => '_6_'
  280. );
  281. $filters = array(
  282. 'month' => array(
  283. array('StringTrim', '_')
  284. )
  285. );
  286. $input = new Zend_Filter_Input($filters, null, $data);
  287. $this->assertFalse($input->hasMissing(), 'Expected hasMissing() to return false');
  288. $this->assertFalse($input->hasInvalid(), 'Expected hasInvalid() to return false');
  289. $this->assertFalse($input->hasUnknown(), 'Expected hasUnknown() to return false');
  290. $this->assertTrue($input->hasValid(), 'Expected hasValid() to return true');
  291. $month = $input->month;
  292. $this->assertEquals('6', $month);
  293. }
  294. public function testFilterDeclareByChain()
  295. {
  296. $data = array(
  297. 'field1' => ' ABC '
  298. );
  299. $filters = array(
  300. 'field1' => array('StringTrim', 'StringToLower')
  301. );
  302. $input = new Zend_Filter_Input($filters, null, $data);
  303. $this->assertFalse($input->hasMissing(), 'Expected hasMissing() to return false');
  304. $this->assertFalse($input->hasInvalid(), 'Expected hasInvalid() to return false');
  305. $this->assertFalse($input->hasUnknown(), 'Expected hasUnknown() to return false');
  306. $this->assertTrue($input->hasValid(), 'Expected hasValid() to return true');
  307. $this->assertEquals('abc', $input->field1);
  308. }
  309. public function testFilterWildcardRule()
  310. {
  311. $data = array(
  312. 'field1' => ' 12abc ',
  313. 'field2' => ' 24abc '
  314. );
  315. $filters = array(
  316. '*' => 'stringTrim',
  317. 'field1' => 'digits'
  318. );
  319. $input = new Zend_Filter_Input($filters, null, $data);
  320. $this->assertFalse($input->hasMissing(), 'Expected hasMissing() to return false');
  321. $this->assertFalse($input->hasInvalid(), 'Expected hasInvalid() to return false');
  322. $this->assertFalse($input->hasUnknown(), 'Expected hasUnknown() to return false');
  323. $this->assertTrue($input->hasValid(), 'Expected hasValid() to return true');
  324. $this->assertEquals('12', $input->field1);
  325. $this->assertEquals('24abc', $input->field2);
  326. }
  327. public function testFilterMultiValue()
  328. {
  329. $data = array(
  330. 'field1' => array('FOO', 'BAR', 'BaZ')
  331. );
  332. $filters = array(
  333. 'field1' => 'StringToLower'
  334. );
  335. $input = new Zend_Filter_Input($filters, null, $data);
  336. $this->assertFalse($input->hasMissing(), 'Expected hasMissing() to return false');
  337. $this->assertFalse($input->hasInvalid(), 'Expected hasInvalid() to return false');
  338. $this->assertFalse($input->hasUnknown(), 'Expected hasUnknown() to return false');
  339. $this->assertTrue($input->hasValid(), 'Expected hasValid() to return true');
  340. $f1 = $input->field1;
  341. $this->assertType('array', $f1);
  342. $this->assertEquals(array('foo', 'bar', 'baz'), $f1);
  343. }
  344. public function testValidatorSingle()
  345. {
  346. $data = array(
  347. 'month' => '6'
  348. );
  349. $validators = array(
  350. 'month' => 'digits'
  351. );
  352. $input = new Zend_Filter_Input(null, $validators, $data);
  353. $this->assertFalse($input->hasMissing(), 'Expected hasMissing() to return false');
  354. $this->assertFalse($input->hasInvalid(), 'Expected hasInvalid() to return false');
  355. $this->assertFalse($input->hasUnknown(), 'Expected hasUnknown() to return false');
  356. $this->assertTrue($input->hasValid(), 'Expected hasValid() to return true');
  357. $month = $input->month;
  358. $this->assertEquals('6', $month);
  359. }
  360. public function testValidatorSingleInvalid()
  361. {
  362. $data = array(
  363. 'month' => '6abc '
  364. );
  365. $validators = array(
  366. 'month' => 'digits'
  367. );
  368. $input = new Zend_Filter_Input(null, $validators, $data);
  369. $this->assertFalse($input->hasMissing(), 'Expected hasMissing() to return false');
  370. $this->assertTrue($input->hasInvalid(), 'Expected hasInvalid() to return true');
  371. $this->assertFalse($input->hasUnknown(), 'Expected hasUnknown() to return false');
  372. $this->assertFalse($input->hasValid(), 'Expected hasValid() to return false');
  373. $messages = $input->getMessages();
  374. $this->assertType('array', $messages);
  375. $this->assertEquals(array('month'), array_keys($messages));
  376. $this->assertType('array', $messages['month']);
  377. $this->assertEquals("'6abc ' must contain only digits", current($messages['month']));
  378. $errors = $input->getErrors();
  379. $this->assertType('array', $errors);
  380. $this->assertEquals(array('month'), array_keys($errors));
  381. $this->assertType('array', $errors['month']);
  382. $this->assertEquals("notDigits", $errors['month'][0]);
  383. }
  384. public function testValidatorDeclareByObject()
  385. {
  386. $data = array(
  387. 'month' => '6'
  388. );
  389. Zend_Loader::loadClass('Zend_Validate_Digits');
  390. $validators = array(
  391. 'month' => array(
  392. new Zend_Validate_Digits()
  393. )
  394. );
  395. $input = new Zend_Filter_Input(null, $validators, $data);
  396. $this->assertFalse($input->hasMissing(), 'Expected hasMissing() to return false');
  397. $this->assertFalse($input->hasInvalid(), 'Expected hasInvalid() to return false');
  398. $this->assertFalse($input->hasUnknown(), 'Expected hasUnknown() to return false');
  399. $this->assertTrue($input->hasValid(), 'Expected hasValid() to return true');
  400. $month = $input->month;
  401. $this->assertEquals('6', $month);
  402. }
  403. public function testValidatorDeclareByArray()
  404. {
  405. $data = array(
  406. 'month' => '6',
  407. 'month2' => 13
  408. );
  409. $validators = array(
  410. 'month' => array(
  411. 'digits',
  412. array('Between', 1, 12)
  413. ),
  414. 'month2' => array(
  415. 'digits',
  416. array('Between', 1, 12)
  417. )
  418. );
  419. $input = new Zend_Filter_Input(null, $validators, $data);
  420. $this->assertFalse($input->hasMissing(), 'Expected hasMissing() to return false');
  421. $this->assertTrue($input->hasInvalid(), 'Expected hasInvalid() to return true');
  422. $this->assertFalse($input->hasUnknown(), 'Expected hasUnknown() to return false');
  423. $this->assertTrue($input->hasValid(), 'Expected hasValid() to return true');
  424. $month = $input->month;
  425. $this->assertEquals('6', $month);
  426. $messages = $input->getMessages();
  427. $this->assertType('array', $messages);
  428. $this->assertEquals(array('month2'), array_keys($messages));
  429. $this->assertEquals("'13' is not between '1' and '12', inclusively", current($messages['month2']));
  430. }
  431. public function testValidatorChain()
  432. {
  433. $data = array(
  434. 'field1' => '50',
  435. 'field2' => 'abc123',
  436. 'field3' => 150,
  437. );
  438. Zend_Loader::loadClass('Zend_Validate_Between');
  439. $btw = new Zend_Validate_Between(1, 100);
  440. $validators = array(
  441. 'field1' => array('digits', $btw),
  442. 'field2' => array('digits', $btw),
  443. 'field3' => array('digits', $btw)
  444. );
  445. $input = new Zend_Filter_Input(null, $validators, $data);
  446. $this->assertFalse($input->hasMissing(), 'Expected hasMissing() to return false');
  447. $this->assertTrue($input->hasInvalid(), 'Expected hasInvalid() to return true');
  448. $this->assertFalse($input->hasUnknown(), 'Expected hasUnknown() to return false');
  449. $this->assertTrue($input->hasValid(), 'Expected hasValid() to return true');
  450. $messages = $input->getMessages();
  451. $this->assertType('array', $messages);
  452. $this->assertEquals(array('field2', 'field3'), array_keys($messages));
  453. $this->assertType('array', $messages['field2']);
  454. $this->assertType('array', $messages['field3']);
  455. $this->assertEquals("'abc123' must contain only digits", current($messages['field2']));
  456. $this->assertEquals("'150' is not between '1' and '100', inclusively",
  457. current($messages['field3']));
  458. }
  459. public function testValidatorInvalidFieldInMultipleRules()
  460. {
  461. $data = array(
  462. 'field2' => 'abc123',
  463. );
  464. Zend_Loader::loadClass('Zend_Validate_Between');
  465. $validators = array(
  466. 'field2a' => array(
  467. 'digits',
  468. 'fields' => 'field2'
  469. ),
  470. 'field2b' => array(
  471. new Zend_Validate_Between(1, 100),
  472. 'fields' => 'field2'
  473. )
  474. );
  475. $input = new Zend_Filter_Input(null, $validators, $data);
  476. $this->assertFalse($input->hasMissing(), 'Expected hasMissing() to return false');
  477. $this->assertTrue($input->hasInvalid(), 'Expected hasInvalid() to return true');
  478. $this->assertFalse($input->hasUnknown(), 'Expected hasUnknown() to return false');
  479. $this->assertFalse($input->hasValid(), 'Expected hasValid() to return false');
  480. $messages = $input->getMessages();
  481. $this->assertType('array', $messages);
  482. $this->assertEquals(array('field2a', 'field2b'), array_keys($messages));
  483. $this->assertType('array', $messages['field2a']);
  484. $this->assertType('array', $messages['field2b']);
  485. $this->assertEquals("'abc123' must contain only digits",
  486. current($messages['field2a']));
  487. $this->assertEquals("'abc123' is not between '1' and '100', inclusively",
  488. current($messages['field2b']));
  489. }
  490. public function testValidatorWildcardRule()
  491. {
  492. $data = array(
  493. 'field1' => '123abc',
  494. 'field2' => '246abc'
  495. );
  496. $validators = array(
  497. '*' => 'alnum',
  498. 'field1' => 'digits'
  499. );
  500. $input = new Zend_Filter_Input(null, $validators, $data);
  501. $this->assertFalse($input->hasMissing(), 'Expected hasMissing() to return false');
  502. $this->assertTrue($input->hasInvalid(), 'Expected hasInvalid() to return true');
  503. $this->assertFalse($input->hasUnknown(), 'Expected hasUnknown() to return false');
  504. $this->assertTrue($input->hasValid(), 'Expected hasValid() to return true');
  505. $this->assertNull($input->field1);
  506. $this->assertEquals('246abc', $input->field2);
  507. }
  508. public function testValidatorMultiValue()
  509. {
  510. $data = array(
  511. 'field1' => array('abc', 'def', 'ghi'),
  512. 'field2' => array('abc', '123')
  513. );
  514. $validators = array(
  515. 'field1' => 'alpha',
  516. 'field2' => 'alpha'
  517. );
  518. $input = new Zend_Filter_Input(null, $validators, $data);
  519. $this->assertFalse($input->hasMissing(), 'Expected hasMissing() to return false');
  520. $this->assertTrue($input->hasInvalid(), 'Expected hasInvalid() to return true');
  521. $this->assertFalse($input->hasUnknown(), 'Expected hasUnknown() to return false');
  522. $this->assertTrue($input->hasValid(), 'Expected hasValid() to return true');
  523. $messages = $input->getMessages();
  524. $this->assertType('array', $messages);
  525. $this->assertEquals(array('field2'), array_keys($messages));
  526. $this->assertEquals("'123' contains non alphabetic characters",
  527. current($messages['field2']));
  528. }
  529. public function testValidatorMultiField()
  530. {
  531. $data = array(
  532. 'password1' => 'EREIAMJH',
  533. 'password2' => 'EREIAMJH',
  534. 'password3' => 'VESPER'
  535. );
  536. $validators = array(
  537. 'rule1' => array(
  538. 'StringEquals',
  539. 'fields' => array('password1', 'password2')
  540. ),
  541. 'rule2' => array(
  542. 'StringEquals',
  543. 'fields' => array('password1', 'password3')
  544. )
  545. );
  546. $options = array(
  547. Zend_Filter_Input::INPUT_NAMESPACE => 'TestNamespace'
  548. );
  549. $ip = get_include_path();
  550. $dir = dirname(__FILE__) . DIRECTORY_SEPARATOR . '_files';
  551. $newIp = $dir . PATH_SEPARATOR . $ip;
  552. set_include_path($newIp);
  553. $input = new Zend_Filter_Input(null, $validators, $data, $options);
  554. $this->assertFalse($input->hasMissing(), 'Expected hasMissing() to return false');
  555. $this->assertTrue($input->hasInvalid(), 'Expected hasInvalid() to return true');
  556. $this->assertFalse($input->hasUnknown(), 'Expected hasUnknown() to return false');
  557. $this->assertTrue($input->hasValid(), 'Expected hasValid() to return true');
  558. set_include_path($ip);
  559. $messages = $input->getMessages();
  560. $this->assertType('array', $messages);
  561. $this->assertEquals(array('rule2'), array_keys($messages));
  562. $this->assertEquals("Not all strings in the argument are equal",
  563. current($messages['rule2']));
  564. }
  565. /**
  566. * @group ZF-6711
  567. *
  568. */
  569. public function testValidatorMultiFieldAllowEmptyProcessing()
  570. {
  571. $data = array(
  572. 'password1' => 'EREIAMJH',
  573. 'password2' => 'EREIAMJH',
  574. 'password3' => '',
  575. 'password4' => ''
  576. );
  577. $validators = array(
  578. 'rule1' => array(
  579. 'StringEquals',
  580. 'fields' => array('password1', 'password2')
  581. ),
  582. 'rule2' => array(
  583. Zend_Filter_Input::ALLOW_EMPTY => false,
  584. 'StringEquals',
  585. 'fields' => array('password1', 'password3')
  586. ),
  587. 'rule3' => array(
  588. Zend_Filter_Input::ALLOW_EMPTY => false,
  589. 'StringEquals',
  590. 'fields' => array('password3', 'password4')
  591. )
  592. );
  593. $options = array(
  594. Zend_Filter_Input::INPUT_NAMESPACE => 'TestNamespace'
  595. );
  596. $ip = get_include_path();
  597. $dir = dirname(__FILE__) . DIRECTORY_SEPARATOR . '_files';
  598. $newIp = $dir . PATH_SEPARATOR . $ip;
  599. set_include_path($newIp);
  600. $input = new Zend_Filter_Input(null, $validators, $data, $options);
  601. $this->assertFalse($input->hasMissing(), 'Expected hasMissing() to return false');
  602. $this->assertTrue($input->hasInvalid(), 'Expected hasInvalid() to return true');
  603. $this->assertFalse($input->hasUnknown(), 'Expected hasUnknown() to return false');
  604. $this->assertTrue($input->hasValid(), 'Expected hasValid() to return true');
  605. set_include_path($ip);
  606. $messages = $input->getMessages();
  607. $this->assertType('array', $messages);
  608. $this->assertEquals(array('rule2', 'rule3'), array_keys($messages));
  609. $this->assertEquals(array('isEmpty' => "You must give a non-empty value for field 'password3'"),
  610. $messages['rule2']);
  611. $this->assertEquals(array('isEmpty' => "You must give a non-empty value for field 'password3'",
  612. 0 => "You must give a non-empty value for field 'password4'"
  613. ),
  614. $messages['rule3']);
  615. }
  616. public function testValidatorBreakChain()
  617. {
  618. $data = array(
  619. 'field1' => '150',
  620. 'field2' => '150'
  621. );
  622. Zend_Loader::loadClass('Zend_Validate_Between');
  623. $btw1 = new Zend_Validate_Between(1, 100);
  624. $btw2 = new Zend_Validate_Between(1, 125);
  625. $messageUserDefined = 'Something other than the default message';
  626. $btw2->setMessage($messageUserDefined, Zend_Validate_Between::NOT_BETWEEN);
  627. $validators = array(
  628. 'field1' => array($btw1, $btw2),
  629. 'field2' => array($btw1, $btw2, Zend_Filter_Input::BREAK_CHAIN => true)
  630. );
  631. $input = new Zend_Filter_Input(null, $validators, $data);
  632. $this->assertFalse($input->hasMissing(), 'Expected hasMissing() to return false');
  633. $this->assertTrue($input->hasInvalid(), 'Expected hasInvalid() to return true');
  634. $this->assertFalse($input->hasUnknown(), 'Expected hasUnknown() to return false');
  635. $this->assertFalse($input->hasValid(), 'Expected hasValid() to return false');
  636. $messages = $input->getMessages();
  637. $this->assertType('array', $messages);
  638. $this->assertEquals(array('field1', 'field2'), array_keys($messages));
  639. $this->assertEquals(
  640. $messageUserDefined,
  641. current($messages['field1']),
  642. 'Expected message to break 2 validators, the message of the latter overwriting that of the former'
  643. );
  644. $this->assertEquals(
  645. "'150' is not between '1' and '100', inclusively",
  646. current($messages['field2']),
  647. 'Expected rule for field2 to break the validation chain at the first validator'
  648. );
  649. }
  650. public function testValidatorAllowEmpty()
  651. {
  652. $data = array(
  653. 'field1' => '',
  654. 'field2' => ''
  655. );
  656. $validators = array(
  657. 'field1' => array(
  658. 'alpha',
  659. Zend_Filter_Input::ALLOW_EMPTY => false
  660. ),
  661. 'field2' => array(
  662. 'alpha',
  663. Zend_Filter_Input::ALLOW_EMPTY => true
  664. )
  665. );
  666. $input = new Zend_Filter_Input(null, $validators, $data);
  667. $this->assertFalse($input->hasMissing(), 'Expected hasMissing() to return false');
  668. $this->assertTrue($input->hasInvalid(), 'Expected hasInvalid() to return true');
  669. $this->assertFalse($input->hasUnknown(), 'Expected hasUnknown() to return false');
  670. $this->assertTrue($input->hasValid(), 'Expected hasValid() to return true');
  671. $this->assertNull($input->field1);
  672. $this->assertNotNull($input->field2);
  673. $messages = $input->getMessages();
  674. $this->assertType('array', $messages);
  675. $this->assertEquals(array('field1'), array_keys($messages));
  676. $this->assertEquals("You must give a non-empty value for field 'field1'", current($messages['field1']));
  677. }
  678. /**
  679. * @group ZF-6708
  680. * @group ZF-1912
  681. */
  682. public function testValidatorAllowEmptyWithOtherValidatersProcessing()
  683. {
  684. $data = array(
  685. 'field1' => ''
  686. );
  687. $validators = array(
  688. 'field1' => array(
  689. 'alpha',
  690. Zend_Filter_Input::ALLOW_EMPTY => false
  691. ),
  692. );
  693. $input = new Zend_Filter_Input(null, $validators, $data);
  694. $this->assertFalse($input->hasMissing(), 'Expected hasMissing() to return false');
  695. $this->assertTrue($input->hasInvalid(), 'Expected hasInvalid() to return true');
  696. $this->assertFalse($input->hasUnknown(), 'Expected hasUnknown() to return false');
  697. $this->assertFalse($input->hasValid(), 'Expected hasValid() to return true');
  698. $messages = $input->getMessages();
  699. $this->assertType('array', $messages);
  700. $this->assertEquals(array('field1'), array_keys($messages));
  701. $this->assertEquals("You must give a non-empty value for field 'field1'", current($messages['field1']));
  702. }
  703. /**
  704. * @group ZF-6708
  705. */
  706. public function testValidatorShouldNotProcessZeroAsEmpty()
  707. {
  708. $validation = array(
  709. 'offset' => array (
  710. 'digits',
  711. 'presence' => 'required'
  712. )
  713. );
  714. $data = array(
  715. 'offset' => 0,
  716. );
  717. $input = new Zend_Filter_Input(null, $validation, $data);
  718. $this->assertFalse($input->hasMissing(), 'Expected hasMissing() to return false');
  719. $this->assertFalse($input->hasInvalid(), 'Expected hasInvalid() to return false');
  720. $this->assertFalse($input->hasUnknown(), 'Expected hasUnknown() to return false');
  721. $this->assertTrue($input->hasValid(), 'Expected hasValid() to return true');
  722. $messages = $input->getMessages();
  723. $this->assertEquals(array(), array_keys($messages));
  724. }
  725. public function testValidatorAllowEmptyNoValidatorChain()
  726. {
  727. Zend_Loader::loadClass('Zend_Filter_StringTrim');
  728. Zend_Loader::loadClass('Zend_Filter_StripTags');
  729. Zend_Loader::loadClass('Zend_Validate_EmailAddress');
  730. $data = array(
  731. 'nick' => '',
  732. 'email' => 'someemail@server.com'
  733. );
  734. $filters = array(
  735. '*' => new Zend_Filter_StringTrim(),
  736. 'nick' => new Zend_Filter_StripTags()
  737. );
  738. $validators = array(
  739. 'email' => array(
  740. new Zend_Validate_EmailAddress(),
  741. Zend_Filter_Input::ALLOW_EMPTY => true
  742. ),
  743. /*
  744. * This is the case we're testing - when presense is required,
  745. * but there are no validators besides disallowing empty values.
  746. */
  747. 'nick' => array(
  748. Zend_Filter_Input::PRESENCE => Zend_Filter_Input::PRESENCE_REQUIRED,
  749. Zend_Filter_Input::ALLOW_EMPTY => false
  750. )
  751. );
  752. $input = new Zend_Filter_Input($filters, $validators, $data);
  753. if ($input->hasInvalid()) {
  754. $input->getMessages();
  755. }
  756. $this->assertFalse($input->hasMissing(), 'Expected hasMissing() to return false');
  757. $this->assertTrue($input->hasInvalid(), 'Expected hasInvalid() to return true');
  758. $this->assertFalse($input->hasUnknown(), 'Expected hasUnknown() to return false');
  759. $this->assertTrue($input->hasValid(), 'Expected hasValid() to return true');
  760. $messages = $input->getMessages();
  761. $this->assertType('array', $messages);
  762. $this->assertEquals(array('nick'), array_keys($messages));
  763. $this->assertEquals(1, count($messages['nick']));
  764. }
  765. public function testValidatorAllowEmptySetNotEmptyMessage()
  766. {
  767. $data = array(
  768. 'field1' => '',
  769. );
  770. $validators = array(
  771. 'field1Rule' => array(
  772. Zend_Filter_Input::ALLOW_EMPTY => false,
  773. 'fields' => 'field1'
  774. )
  775. );
  776. $options = array(
  777. Zend_Filter_Input::NOT_EMPTY_MESSAGE => "You cannot give an empty value for field '%field%', according to rule '%rule%'"
  778. );
  779. $input = new Zend_Filter_Input(null, $validators, $data, $options);
  780. $this->assertFalse($input->hasMissing(), 'Expected hasMissing() to return false');
  781. $this->assertTrue($input->hasInvalid(), 'Expected hasInvalid() to return true');
  782. $this->assertFalse($input->hasUnknown(), 'Expected hasUnknown() to return false');
  783. $this->assertFalse($input->hasValid(), 'Expected hasValid() to return false');
  784. $this->assertNull($input->field1);
  785. $messages = $input->getMessages();
  786. $this->assertType('array', $messages);
  787. $this->assertEquals(array('field1Rule'), array_keys($messages));
  788. $this->assertType('array', $messages['field1Rule']);
  789. $this->assertEquals("You cannot give an empty value for field 'field1', according to rule 'field1Rule'", current($messages['field1Rule']));
  790. }
  791. public function testValidatorDefault()
  792. {
  793. $validators = array(
  794. 'field1' => array('presence' => 'required', 'allowEmpty' => false),
  795. 'field2' => array('presence' => 'optional', 'allowEmpty' => false),
  796. 'field3' => array('presence' => 'required', 'allowEmpty' => true),
  797. 'field4' => array('presence' => 'optional', 'allowEmpty' => true),
  798. 'field5' => array('presence' => 'required', 'allowEmpty' => false, 'default' => 'field5default'),
  799. 'field6' => array('presence' => 'optional', 'allowEmpty' => false, 'default' => 'field6default'),
  800. 'field7' => array('presence' => 'required', 'allowEmpty' => true, 'default' => 'field7default'),
  801. 'field8' => array('presence' => 'optional', 'allowEmpty' => true, 'default' => array('field8default', 'field8default2')),
  802. );
  803. $data = array();
  804. $input = new Zend_Filter_Input(null, $validators, $data);
  805. $this->assertTrue($input->hasMissing(), 'Expected hasMissing() to return true');
  806. $this->assertFalse($input->hasInvalid(), 'Expected hasInvalid() to return false');
  807. $this->assertFalse($input->hasUnknown(), 'Expected hasUnknown() to return false');
  808. $this->assertTrue($input->hasValid(), 'Expected hasValid() to return true');
  809. $missing = $input->getMissing();
  810. $this->assertType('array', $missing);
  811. // make sure field5 and field7 are not counted as missing
  812. $this->assertEquals(array('field1', 'field3'), array_keys($missing));
  813. $this->assertNull($input->field1);
  814. $this->assertNull($input->field2);
  815. $this->assertNull($input->field3);
  816. $this->assertNull($input->field4);
  817. $this->assertEquals('field5default', $input->field5, 'Expected field5 to be non-null');
  818. $this->assertEquals('field6default', $input->field6, 'Expected field6 to be non-null');
  819. $this->assertEquals('field7default', $input->field7, 'Expected field7 to be non-null');
  820. $this->assertEquals('field8default', $input->field8, 'Expected field8 to be non-null');
  821. }
  822. /**
  823. * @group ZF-6761
  824. */
  825. public function testValidatorMissingDefaults()
  826. {
  827. $validators = array(
  828. 'rule1' => array('presence' => 'required',
  829. 'fields' => array('field1', 'field2'),
  830. 'default' => array('field1default'))
  831. );
  832. $data = array();
  833. $input = new Zend_Filter_Input(null, $validators, $data);
  834. $this->assertTrue($input->hasMissing(), 'Expected hasMissing() to return true');
  835. $this->assertFalse($input->hasInvalid(), 'Expected hasInvalid() to return false');
  836. $this->assertFalse($input->hasUnknown(), 'Expected hasUnknown() to return false');
  837. $this->assertFalse($input->hasValid(), 'Expected hasValid() to return false');
  838. $missing = $input->getMissing();
  839. $this->assertType('array', $missing);
  840. $this->assertEquals(array('rule1'), array_keys($missing));
  841. $this->assertEquals(array("Field 'field2' is required by rule 'rule1', but the field is missing"), $missing['rule1']);
  842. }
  843. public function testValidatorDefaultDoesNotOverwriteData()
  844. {
  845. $validators = array(
  846. 'field1' => array('presence' => 'required', 'allowEmpty' => false, 'default' => 'abcd'),
  847. 'field2' => array('presence' => 'optional', 'allowEmpty' => false, 'default' => 'abcd'),
  848. 'field3' => array('presence' => 'required', 'allowEmpty' => true, 'default' => 'abcd'),
  849. 'field4' => array('presence' => 'optional', 'allowEmpty' => true, 'default' => 'abcd'),
  850. );
  851. $data = array(
  852. 'field1' => 'ABCD',
  853. 'field2' => 'ABCD',
  854. 'field3' => 'ABCD',
  855. 'field4' => 'ABCD'
  856. );
  857. $input = new Zend_Filter_Input(null, $validators, $data);
  858. $this->assertFalse($input->hasMissing(), 'Expected hasMissing() to return false');
  859. $this->assertFalse($input->hasInvalid(), 'Expected hasInvalid() to return false');
  860. $this->assertFalse($input->hasUnknown(), 'Expected hasUnknown() to return false');
  861. $this->assertTrue($input->hasValid(), 'Expected hasValid() to return true');
  862. $this->assertEquals('ABCD', $input->field1);
  863. $this->assertEquals('ABCD', $input->field2);
  864. $this->assertEquals('ABCD', $input->field3);
  865. $this->assertEquals('ABCD', $input->field4);
  866. }
  867. public function testValidatorNotAllowEmpty()
  868. {
  869. $filters = array(
  870. 'field1' => 'Digits',
  871. 'field2' => 'Alnum'
  872. );
  873. $validators = array(
  874. 'field1' => array('Digits'),
  875. 'field2' => array('Alnum'),
  876. 'field3' => array('Alnum', 'presence' => 'required')
  877. );
  878. $data = array(
  879. 'field1' => 'asd1', // Valid data
  880. 'field2' => '$' // Invalid data
  881. );
  882. $input = new Zend_Filter_Input($filters, $validators, $data);
  883. $this->assertTrue($input->hasMissing(), 'Expected hasMissing() to return true');
  884. $this->assertTrue($input->hasInvalid(), 'Expected hasInvalid() to return true');
  885. $this->assertFalse($input->hasUnknown(), 'Expected hasUnknown() to return false');
  886. $this->assertTrue($input->hasValid(), 'Expected hasValid() to return true');
  887. $messages = $input->getMessages();
  888. $this->assertType('array', $messages);
  889. $this->assertEquals(array('field2', 'field3'), array_keys($messages));
  890. $this->assertType('array', $messages['field2']);
  891. $this->assertEquals("You must give a non-empty value for field 'field2'", current($messages['field2']));
  892. }
  893. public function testValidatorMessagesSingle()
  894. {
  895. $data = array('month' => '13abc');
  896. $digitsMesg = 'Month should consist of digits';
  897. $validators = array(
  898. 'month' => array(
  899. 'digits',
  900. 'messages' => $digitsMesg
  901. )
  902. );
  903. $input = new Zend_Filter_Input(null, $validators, $data);
  904. $this->assertFalse($input->hasMissing(), 'Expected hasMissing() to return false');
  905. $this->assertTrue($input->hasInvalid(), 'Expected hasInvalid() to return true');
  906. $this->assertFalse($input->hasUnknown(), 'Expected hasUnknown() to return false');
  907. $this->assertFalse($input->hasValid(), 'Expected hasValid() to return false');
  908. $messages = $input->getMessages();
  909. $this->assertType('array', $messages);
  910. $this->assertEquals(array('month'), array_keys($messages));
  911. $this->assertEquals(1, count($messages['month']));
  912. $this->assertEquals($digitsMesg, current($messages['month']));
  913. }
  914. public function testValidatorMessagesMultiple()
  915. {
  916. $data = array('month' => '13abc');
  917. $digitsMesg = 'Month should consist of digits';
  918. $betweenMesg = 'Month should be between 1 and 12';
  919. Zend_Loader::loadClass('Zend_Validate_Between');
  920. $validators = array(
  921. 'month' => array(
  922. 'digits',
  923. new Zend_Validate_Between(1, 12),
  924. 'messages' => array(
  925. $digitsMesg,
  926. $betweenMesg
  927. )
  928. )
  929. );
  930. $input = new Zend_Filter_Input(null, $validators, $data);
  931. $this->assertFalse($input->hasMissing(), 'Expected hasMissing() to return false');
  932. $this->assertTrue($input->hasInvalid(), 'Expected hasInvalid() to return true');
  933. $this->assertFalse($input->hasUnknown(), 'Expected hasUnknown() to return false');
  934. $this->assertFalse($input->hasValid(), 'Expected hasValid() to return false');
  935. $messages = $input->getMessages();
  936. $this->assertType('array', $messages);
  937. $this->assertEquals(array('month'), array_keys($messages));
  938. $this->assertEquals(2, count($messages['month']));
  939. $this->assertEquals($digitsMesg, $messages['month']['notDigits']);
  940. $this->assertEquals($betweenMesg, $messages['month']['notBetween']);
  941. }
  942. public function testValidatorMessagesFieldsMultiple()
  943. {
  944. $data = array('field1' => array('13abc', '234'));
  945. $digitsMesg = 'Field1 should consist of digits';
  946. $betweenMesg = 'Field1 should be between 1 and 12';
  947. Zend_Loader::loadClass('Zend_Validate_Between');
  948. $validators = array(
  949. 'field1' => array(
  950. 'digits',
  951. new Zend_Validate_Between(1, 12),
  952. 'messages' => array(
  953. $digitsMesg,
  954. $betweenMesg
  955. )
  956. )
  957. );
  958. $input = new Zend_Filter_Input(null, $validators, $data);
  959. $this->assertFalse($input->hasMissing(), 'Expected hasMissing() to return false');
  960. $this->assertTrue($input->hasInvalid(), 'Expected hasInvalid() to return true');
  961. $this->assertFalse($input->hasUnknown(), 'Expected hasUnknown() to return false');
  962. $this->assertFalse($input->hasValid(), 'Expected hasValid() to return false');
  963. $messages = $input->getMessages();
  964. $this->assertType('array', $messages);
  965. $this->assertEquals(array('field1'), array_keys($messages));
  966. $this->assertEquals(3, count($messages['field1']));
  967. $this->assertEquals($digitsMesg, $messages['field1']['notDigits']);
  968. $this->assertEquals($betweenMesg, $messages['field1']['notBetween']);
  969. }
  970. public function testValidatorMessagesIntIndex()
  971. {
  972. $data = array('month' => '13abc');
  973. $betweenMesg = 'Month should be between 1 and 12';
  974. Zend_Loader::loadClass('Zend_Validate_Between');
  975. $validators = array(
  976. 'month' => array(
  977. 'digits',
  978. new Zend_Validate_Between(1, 12),
  979. 'messages' => array(
  980. 1 => $betweenMesg
  981. )
  982. )
  983. );
  984. $input = new Zend_Filter_Input(null, $validators, $data);
  985. $this->assertFalse($input->hasMissing(), 'Expected hasMissing() to return false');
  986. $this->assertTrue($input->hasInvalid(), 'Expected hasInvalid() to return true');
  987. $this->assertFalse($input->hasUnknown(), 'Expected hasUnknown() to return false');
  988. $this->assertFalse($input->hasValid(), 'Expected hasValid() to return false');
  989. $messages = $input->getMessages();
  990. $this->assertType('array', $messages);
  991. $this->assertEquals(array('month'), array_keys($messages));
  992. $this->assertEquals(2, count($messages['month']));
  993. $this->assertEquals("'13abc' must contain only digits", current($messages['month']));
  994. /**
  995. * @todo $this->assertEquals($betweenMesg, next($messages['month']));
  996. */
  997. }
  998. public function testValidatorMessagesSingleWithKeys()
  999. {
  1000. $data = array('month' => '13abc');
  1001. $digitsMesg = 'Month should consist of digits';
  1002. $validators = array(
  1003. 'month' => array(
  1004. 'digits',
  1005. 'messages' => array('notDigits' => $digitsMesg)
  1006. )
  1007. );
  1008. $input = new Zend_Filter_Input(null, $validators, $data);
  1009. $this->assertFalse($input->hasMissing(), 'Expected hasMissing() to return false');
  1010. $this->assertTrue($input->hasInvalid(), 'Expected hasInvalid() to return true');
  1011. $this->assertFalse($input->hasUnknown(), 'Expected hasUnknown() to return false');
  1012. $this->assertFalse($input->hasValid(), 'Expected hasValid() to return false');
  1013. $messages = $input->getMessages();
  1014. $this->assertType('array', $messages);
  1015. $this->assertEquals(array('month'), array_keys($messages));
  1016. $this->assertEquals(1, count($messages['month']));
  1017. // $this->assertEquals($digitsMesg, $messages['month'][0]);
  1018. }
  1019. public function testValidatorMessagesMultipleWithKeys()
  1020. {
  1021. $data = array('month' => '13abc');
  1022. $digitsMesg = 'Month should consist of digits';
  1023. $betweenMesg = 'Month should be between 1 and 12';
  1024. Zend_Loader::loadClass('Zend_Validate_Between');
  1025. $validators = array(
  1026. 'month' => array(
  1027. 'digits',
  1028. new Zend_Validate_Between(1, 12),
  1029. 'messages' => array(
  1030. array('notDigits' => $digitsMesg),
  1031. array('notBetween' => $betweenMesg)
  1032. )
  1033. )
  1034. );
  1035. $input = new Zend_Filter_Input(null, $validators, $data);
  1036. $this->assertFalse($input->hasMissing(), 'Expected hasMissing() to return false');
  1037. $this->assertTrue($input->hasInvalid(), 'Expected hasInvalid() to return true');
  1038. $this->assertFalse($input->hasUnknown(), 'Expected hasUnknown() to return false');
  1039. $this->assertFalse($input->hasValid(), 'Expected hasValid() to return false');
  1040. $messages = $input->getMessages();
  1041. $this->assertType('array', $messages);
  1042. $this->assertEquals(array('month'), array_keys($messages));
  1043. $this->assertEquals(2, count($messages['month']));
  1044. // $this->assertEquals($digitsMesg, $messages['month'][0]);
  1045. // $this->assertEquals($betweenMesg, $messages['month'][1]);
  1046. }
  1047. public function testValidatorMessagesMixedWithKeys()
  1048. {
  1049. $data = array('month' => '13abc');
  1050. $digitsMesg = 'Month should consist of digits';
  1051. $betweenMesg = 'Month should be between 1 and 12';
  1052. Zend_Loader::loadClass('Zend_Validate_Between');
  1053. $validators = array(
  1054. 'month' => array(
  1055. 'digits',
  1056. new Zend_Validate_Between(1, 12),
  1057. 'messages' => array(
  1058. $digitsMesg,
  1059. array('notBetween' => $betweenMesg)
  1060. )
  1061. )
  1062. );
  1063. $input = new Zend_Filter_Input(null, $validators, $data);
  1064. $this->assertFalse($input->hasMissing(), 'Expected hasMissing() to return false');
  1065. $this->assertTrue($input->hasInvalid(), 'Expected hasInvalid() to return true');
  1066. $this->assertFalse($input->hasUnknown(), 'Expected hasUnknown() to return false');
  1067. $this->assertFalse($input->hasValid(), 'Expected hasValid() to return false');
  1068. $messages = $input->getMessages();
  1069. $this->assertType('array', $messages);
  1070. $this->assertEquals(array('month'), array_keys($messages));
  1071. $this->assertEquals(2, count($messages['month']));
  1072. // $this->assertEquals($digitsMesg, $messages['month'][0]);
  1073. // $this->assertEquals($betweenMesg, $messages['month'][1]);
  1074. }
  1075. public function testValidatorHasMissing()
  1076. {
  1077. $data = array();
  1078. $validators = array(
  1079. 'month' => array(
  1080. 'digits',
  1081. Zend_Filter_Input::PRESENCE => Zend_Filter_Input::PRESENCE_REQUIRED
  1082. )
  1083. );
  1084. $input = new Zend_Filter_Input(null, $validators, $data);
  1085. $this->assertTrue($input->hasMissing(), 'Expected hasMissing() to return true');
  1086. $this->assertFalse($input->hasInvalid(), 'Expected hasInvalid() to return false');
  1087. $this->assertFalse($input->hasUnknown(), 'Expected hasUnknown() to return false');
  1088. $this->assertFalse($input->hasValid(), 'Expected hasValid() to return false');
  1089. }
  1090. public function testValidatorFieldOption

Large files files are truncated, but you can click here to view the full file