PageRenderTime 53ms CodeModel.GetById 7ms RepoModel.GetById 1ms app.codeStats 0ms

/DevApp/library/ServerLibraries/ZendFramework/trunk/tests/Zend/Validate/AbstractTest.php

http://firephp.googlecode.com/
PHP | 313 lines | 223 code | 36 blank | 54 comment | 4 complexity | ebcfae7392ddcb091e922eae56d5828a MD5 | raw file
Possible License(s): BSD-3-Clause, LGPL-2.0, MIT, Apache-2.0
  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_Validate
  17. * @subpackage UnitTests
  18. * @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
  19. * @license http://framework.zend.com/license/new-bsd New BSD License
  20. * @version $Id: AbstractTest.php 23772 2011-02-28 21:35:29Z ralph $
  21. */
  22. if (!defined('PHPUnit_MAIN_METHOD')) {
  23. define('PHPUnit_MAIN_METHOD', 'Zend_Validate_AbstractTest::main');
  24. }
  25. /** Zend_Validate_Abstract */
  26. require_once 'Zend/Validate/Abstract.php';
  27. /** Zend_Translate */
  28. require_once 'Zend/Translate.php';
  29. /** Zend_Registry */
  30. require_once 'Zend/Registry.php';
  31. /**
  32. * @category Zend
  33. * @package Zend_Validate
  34. * @subpackage UnitTests
  35. * @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
  36. * @license http://framework.zend.com/license/new-bsd New BSD License
  37. * @group Zend_Validate
  38. */
  39. class Zend_Validate_AbstractTest extends PHPUnit_Framework_TestCase
  40. {
  41. /**
  42. * Runs this test suite
  43. *
  44. * @return void
  45. */
  46. public static function main()
  47. {
  48. $suite = new PHPUnit_Framework_TestSuite('Zend_Validate_AbstractTest');
  49. $result = PHPUnit_TextUI_TestRunner::run($suite);
  50. }
  51. public function clearRegistry()
  52. {
  53. if (Zend_Registry::isRegistered('Zend_Translate')) {
  54. $registry = Zend_Registry::getInstance();
  55. unset($registry['Zend_Translate']);
  56. }
  57. }
  58. /**
  59. * Creates a new validation object for each test method
  60. *
  61. * @return void
  62. */
  63. public function setUp()
  64. {
  65. $this->clearRegistry();
  66. Zend_Validate_Abstract::setDefaultTranslator(null);
  67. $this->validator = new Zend_Validate_AbstractTest_Concrete();
  68. }
  69. public function tearDown()
  70. {
  71. $this->clearRegistry();
  72. Zend_Validate_Abstract::setDefaultTranslator(null);
  73. Zend_Validate_Abstract::setMessageLength(-1);
  74. }
  75. public function testTranslatorNullByDefault()
  76. {
  77. $this->assertNull($this->validator->getTranslator());
  78. }
  79. public function testCanSetTranslator()
  80. {
  81. $this->testTranslatorNullByDefault();
  82. set_error_handler(array($this, 'errorHandlerIgnore'));
  83. $translator = new Zend_Translate('array', array(), 'en');
  84. restore_error_handler();
  85. $this->validator->setTranslator($translator);
  86. $this->assertSame($translator->getAdapter(), $this->validator->getTranslator());
  87. }
  88. public function testCanSetTranslatorToNull()
  89. {
  90. $this->testCanSetTranslator();
  91. set_error_handler(array($this, 'errorHandlerIgnore'));
  92. $this->validator->setTranslator(null);
  93. restore_error_handler();
  94. $this->assertNull($this->validator->getTranslator());
  95. }
  96. public function testGlobalDefaultTranslatorNullByDefault()
  97. {
  98. $this->assertNull(Zend_Validate_Abstract::getDefaultTranslator());
  99. }
  100. public function testCanSetGlobalDefaultTranslator()
  101. {
  102. $this->testGlobalDefaultTranslatorNullByDefault();
  103. set_error_handler(array($this, 'errorHandlerIgnore'));
  104. $translator = new Zend_Translate('array', array(), 'en');
  105. restore_error_handler();
  106. Zend_Validate_Abstract::setDefaultTranslator($translator);
  107. $this->assertSame($translator->getAdapter(), Zend_Validate_Abstract::getDefaultTranslator());
  108. }
  109. public function testGlobalDefaultTranslatorUsedWhenNoLocalTranslatorSet()
  110. {
  111. $this->testCanSetGlobalDefaultTranslator();
  112. $this->assertSame(Zend_Validate_Abstract::getDefaultTranslator(), $this->validator->getTranslator());
  113. }
  114. public function testGlobalTranslatorFromRegistryUsedWhenNoLocalTranslatorSet()
  115. {
  116. set_error_handler(array($this, 'errorHandlerIgnore'));
  117. $translate = new Zend_Translate('array', array());
  118. restore_error_handler();
  119. Zend_Registry::set('Zend_Translate', $translate);
  120. $this->assertSame($translate->getAdapter(), $this->validator->getTranslator());
  121. }
  122. public function testLocalTranslatorPreferredOverGlobalTranslator()
  123. {
  124. $this->testCanSetGlobalDefaultTranslator();
  125. set_error_handler(array($this, 'errorHandlerIgnore'));
  126. $translator = new Zend_Translate('array', array(), 'en');
  127. restore_error_handler();
  128. $this->validator->setTranslator($translator);
  129. $this->assertNotSame(Zend_Validate_Abstract::getDefaultTranslator(), $this->validator->getTranslator());
  130. }
  131. public function testErrorMessagesAreTranslatedWhenTranslatorPresent()
  132. {
  133. $translator = new Zend_Translate(
  134. 'array',
  135. array('fooMessage' => 'This is the translated message for %value%'),
  136. 'en'
  137. );
  138. $this->validator->setTranslator($translator);
  139. $this->assertFalse($this->validator->isValid('bar'));
  140. $messages = $this->validator->getMessages();
  141. $this->assertTrue(array_key_exists('fooMessage', $messages));
  142. $this->assertContains('bar', $messages['fooMessage']);
  143. $this->assertContains('This is the translated message for ', $messages['fooMessage']);
  144. }
  145. public function testCanTranslateMessagesInsteadOfKeys()
  146. {
  147. $translator = new Zend_Translate(
  148. 'array',
  149. array('%value% was passed' => 'This is the translated message for %value%'),
  150. 'en'
  151. );
  152. $this->validator->setTranslator($translator);
  153. $this->assertFalse($this->validator->isValid('bar'));
  154. $messages = $this->validator->getMessages();
  155. $this->assertTrue(array_key_exists('fooMessage', $messages));
  156. $this->assertContains('bar', $messages['fooMessage']);
  157. $this->assertContains('This is the translated message for ', $messages['fooMessage']);
  158. }
  159. public function testObscureValueFlagFalseByDefault()
  160. {
  161. $this->assertFalse($this->validator->getObscureValue());
  162. }
  163. public function testCanSetObscureValueFlag()
  164. {
  165. $this->testObscureValueFlagFalseByDefault();
  166. $this->validator->setObscureValue(true);
  167. $this->assertTrue($this->validator->getObscureValue());
  168. $this->validator->setObscureValue(false);
  169. $this->assertFalse($this->validator->getObscureValue());
  170. }
  171. public function testValueIsObfuscatedWheObscureValueFlagIsTrue()
  172. {
  173. $this->validator->setObscureValue(true);
  174. $this->assertFalse($this->validator->isValid('foobar'));
  175. $messages = $this->validator->getMessages();
  176. $this->assertTrue(isset($messages['fooMessage']));
  177. $message = $messages['fooMessage'];
  178. $this->assertNotContains('foobar', $message);
  179. $this->assertContains('******', $message);
  180. }
  181. /**
  182. * @group ZF-4463
  183. */
  184. public function testDoesNotFailOnObjectInput()
  185. {
  186. $this->assertFalse($this->validator->isValid(new stdClass()));
  187. $messages = $this->validator->getMessages();
  188. $this->assertTrue(array_key_exists('fooMessage', $messages));
  189. }
  190. public function testTranslatorEnabledPerDefault()
  191. {
  192. set_error_handler(array($this, 'errorHandlerIgnore'));
  193. $translator = new Zend_Translate('array', array(), 'en');
  194. restore_error_handler();
  195. $this->validator->setTranslator($translator);
  196. $this->assertFalse($this->validator->translatorIsDisabled());
  197. }
  198. public function testCanDisableTranslator()
  199. {
  200. set_error_handler(array($this, 'errorHandlerIgnore'));
  201. $translator = new Zend_Translate(
  202. 'array',
  203. array('fooMessage' => 'This is the translated message for %value%'),
  204. 'en'
  205. );
  206. restore_error_handler();
  207. $this->validator->setTranslator($translator);
  208. $this->assertFalse($this->validator->isValid('bar'));
  209. $messages = $this->validator->getMessages();
  210. $this->assertTrue(array_key_exists('fooMessage', $messages));
  211. $this->assertContains('bar', $messages['fooMessage']);
  212. $this->assertContains('This is the translated message for ', $messages['fooMessage']);
  213. $this->validator->setDisableTranslator(true);
  214. $this->assertTrue($this->validator->translatorIsDisabled());
  215. $this->assertFalse($this->validator->isValid('bar'));
  216. $messages = $this->validator->getMessages();
  217. $this->assertTrue(array_key_exists('fooMessage', $messages));
  218. $this->assertContains('bar', $messages['fooMessage']);
  219. $this->assertContains('bar was passed', $messages['fooMessage']);
  220. }
  221. public function testGetMessageTemplates()
  222. {
  223. $messages = $this->validator->getMessageTemplates();
  224. $this->assertEquals(
  225. array('fooMessage' => '%value% was passed'), $messages);
  226. $this->assertEquals(
  227. array(
  228. Zend_Validate_AbstractTest_Concrete::FOO_MESSAGE => '%value% was passed'), $messages);
  229. }
  230. public function testMaximumErrorMessageLength()
  231. {
  232. require_once 'Zend/Validate.php';
  233. $this->assertEquals(-1, Zend_Validate::getMessageLength());
  234. Zend_Validate_Abstract::setMessageLength(10);
  235. $this->assertEquals(10, Zend_Validate::getMessageLength());
  236. $translator = new Zend_Translate(
  237. 'array',
  238. array('fooMessage' => 'This is the translated message for %value%'),
  239. 'en'
  240. );
  241. $this->validator->setTranslator($translator);
  242. $this->assertFalse($this->validator->isValid('bar'));
  243. $messages = $this->validator->getMessages();
  244. $this->assertTrue(array_key_exists('fooMessage', $messages));
  245. $this->assertEquals('This is...', $messages['fooMessage']);
  246. }
  247. /**
  248. * Ignores a raised PHP error when in effect, but throws a flag to indicate an error occurred
  249. *
  250. * @param integer $errno
  251. * @param string $errstr
  252. * @param string $errfile
  253. * @param integer $errline
  254. * @param array $errcontext
  255. * @return void
  256. */
  257. public function errorHandlerIgnore($errno, $errstr, $errfile, $errline, array $errcontext)
  258. {
  259. $this->_errorOccurred = true;
  260. }
  261. }
  262. class Zend_Validate_AbstractTest_Concrete extends Zend_Validate_Abstract
  263. {
  264. const FOO_MESSAGE = 'fooMessage';
  265. protected $_messageTemplates = array(
  266. 'fooMessage' => '%value% was passed',
  267. );
  268. public function isValid($value)
  269. {
  270. $this->_setValue($value);
  271. $this->_error(self::FOO_MESSAGE);
  272. return false;
  273. }
  274. }
  275. if (PHPUnit_MAIN_METHOD == 'Zend_Validate_AbstractTest::main') {
  276. Zend_Validate_AbstractTest::main();
  277. }