PageRenderTime 46ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 1ms

/vendor/zendframework/zendframework/tests/ZendTest/Validator/CreditCardTest.php

https://bitbucket.org/pcelta/zf2
PHP | 258 lines | 159 code | 27 blank | 72 comment | 0 complexity | e257ac5ff0dce2533b087580652e9baa 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_Validator
  9. */
  10. namespace ZendTest\Validator;
  11. use Zend\Config;
  12. use Zend\Validator\CreditCard;
  13. /**
  14. * @category Zend
  15. * @package Zend_Validator
  16. * @subpackage UnitTests
  17. * @group Zend_Validator
  18. */
  19. class CreditCardTest extends \PHPUnit_Framework_TestCase
  20. {
  21. public static function basicValues()
  22. {
  23. return array(
  24. array('4111111111111111', true),
  25. array('5404000000000001', true),
  26. array('374200000000004', true),
  27. array('4444555566667777', false),
  28. array('ABCDEF', false),
  29. );
  30. }
  31. /**
  32. * Ensures that the validator follows expected behavior
  33. *
  34. * @dataProvider basicValues
  35. */
  36. public function testBasic($input, $expected)
  37. {
  38. $validator = new CreditCard();
  39. $this->assertEquals($expected, $validator->isValid($input));
  40. }
  41. /**
  42. * Ensures that getMessages() returns expected default value
  43. *
  44. * @return void
  45. */
  46. public function testGetMessages()
  47. {
  48. $validator = new CreditCard();
  49. $this->assertEquals(array(), $validator->getMessages());
  50. }
  51. /**
  52. * Ensures that get and setType works as expected
  53. *
  54. * @return void
  55. */
  56. public function testGetSetType()
  57. {
  58. $validator = new CreditCard();
  59. $this->assertEquals(11, count($validator->getType()));
  60. $validator->setType(CreditCard::MAESTRO);
  61. $this->assertEquals(array(CreditCard::MAESTRO), $validator->getType());
  62. $validator->setType(
  63. array(
  64. CreditCard::AMERICAN_EXPRESS,
  65. CreditCard::MAESTRO
  66. )
  67. );
  68. $this->assertEquals(
  69. array(
  70. CreditCard::AMERICAN_EXPRESS,
  71. CreditCard::MAESTRO
  72. ),
  73. $validator->getType()
  74. );
  75. $validator->addType(
  76. CreditCard::MASTERCARD
  77. );
  78. $this->assertEquals(
  79. array(
  80. CreditCard::AMERICAN_EXPRESS,
  81. CreditCard::MAESTRO,
  82. CreditCard::MASTERCARD
  83. ),
  84. $validator->getType()
  85. );
  86. }
  87. public static function visaValues()
  88. {
  89. return array(
  90. array('4111111111111111', true),
  91. array('5404000000000001', false),
  92. array('374200000000004', false),
  93. array('4444555566667777', false),
  94. array('ABCDEF', false),
  95. );
  96. }
  97. /**
  98. * Test specific provider
  99. *
  100. * @dataProvider visaValues
  101. */
  102. public function testProvider($input, $expected)
  103. {
  104. $validator = new CreditCard(CreditCard::VISA);
  105. $this->assertEquals($expected, $validator->isValid($input));
  106. }
  107. /**
  108. * Test non string input
  109. *
  110. * @return void
  111. */
  112. public function testIsValidWithNonString()
  113. {
  114. $validator = new CreditCard(CreditCard::VISA);
  115. $this->assertFalse($validator->isValid(array('something')));
  116. }
  117. public static function serviceValues()
  118. {
  119. return array(
  120. array('4111111111111111', false),
  121. array('5404000000000001', false),
  122. array('374200000000004', false),
  123. array('4444555566667777', false),
  124. array('ABCDEF', false),
  125. );
  126. }
  127. /**
  128. * Test service class with invalid validation
  129. *
  130. * @dataProvider serviceValues
  131. */
  132. public function testServiceClass($input, $expected)
  133. {
  134. $validator = new CreditCard();
  135. $this->assertEquals(null, $validator->getService());
  136. $validator->setService(array('ZendTest\Validator\CreditCardTest', 'staticCallback'));
  137. $this->assertEquals($expected, $validator->isValid($input));
  138. }
  139. public static function optionsValues()
  140. {
  141. return array(
  142. array('4111111111111111', false),
  143. array('5404000000000001', false),
  144. array('374200000000004', false),
  145. array('4444555566667777', false),
  146. array('ABCDEF', false),
  147. );
  148. }
  149. /**
  150. * Test non string input
  151. *
  152. * @dataProvider optionsValues
  153. */
  154. public function testConstructionWithOptions($input, $expected)
  155. {
  156. $validator = new CreditCard(
  157. array(
  158. 'type' => CreditCard::VISA,
  159. 'service' => array('ZendTest\Validator\CreditCardTest', 'staticCallback')
  160. )
  161. );
  162. $this->assertEquals($expected, $validator->isValid($input));
  163. }
  164. /**
  165. * Test a invalid service class
  166. *
  167. * @return void
  168. */
  169. public function testInvalidServiceClass()
  170. {
  171. $validator = new CreditCard();
  172. $this->assertEquals(null, $validator->getService());
  173. $this->setExpectedException('Zend\Validator\Exception\InvalidArgumentException', 'Invalid callback given');
  174. $validator->setService(array('ZendTest\Validator\CreditCardTest', 'nocallback'));
  175. }
  176. /**
  177. * Test a config object
  178. *
  179. * @return void
  180. */
  181. public function testConfigObject()
  182. {
  183. $options = array('type' => 'Visa');
  184. $config = new Config\Config($options, false);
  185. $validator = new CreditCard($config);
  186. $this->assertEquals(array('Visa'), $validator->getType());
  187. }
  188. /**
  189. * Test optional parameters with config object
  190. *
  191. * @return void
  192. */
  193. public function testOptionalConstructorParameterByConfigObject()
  194. {
  195. $config = new Config\Config(array('type' => 'Visa', 'service' => array('ZendTest\Validator\CreditCardTest', 'staticCallback')));
  196. $validator = new CreditCard($config);
  197. $this->assertEquals(array('Visa'), $validator->getType());
  198. $this->assertEquals(array('ZendTest\Validator\CreditCardTest', 'staticCallback'), $validator->getService());
  199. }
  200. /**
  201. * Test optional constructor parameters
  202. *
  203. * @return void
  204. */
  205. public function testOptionalConstructorParameter()
  206. {
  207. $validator = new CreditCard('Visa', array('ZendTest\Validator\CreditCardTest', 'staticCallback'));
  208. $this->assertEquals(array('Visa'), $validator->getType());
  209. $this->assertEquals(array('ZendTest\Validator\CreditCardTest', 'staticCallback'), $validator->getService());
  210. }
  211. /**
  212. * @group ZF-9477
  213. */
  214. public function testMultiInstitute()
  215. {
  216. $validator = new CreditCard(array('type' => CreditCard::MASTERCARD));
  217. $this->assertFalse($validator->isValid('4111111111111111'));
  218. $message = $validator->getMessages();
  219. $this->assertContains('not from an allowed institute', current($message));
  220. }
  221. public function testEqualsMessageTemplates()
  222. {
  223. $validator = new CreditCard();
  224. $this->assertAttributeEquals($validator->getOption('messageTemplates'),
  225. 'messageTemplates', $validator);
  226. }
  227. public static function staticCallback($value)
  228. {
  229. return false;
  230. }
  231. }