word)) { unset($this->word); } $this->element = new Zend_Form_Element_Captcha( 'captchaR', array( 'captcha' => array( 'ReCaptcha', 'sessionClass' => 'Zend_Captcha_ReCaptchaTest_SessionContainer' ) ) ); $this->captcha = $this->element->getCaptcha(); } /** * Tears down the fixture, for example, close a network connection. * This method is called after a test is executed. * * @return void */ public function tearDown() { } public function testConstructorShouldSetOptions() { $options = array( 'privKey' => 'privateKey', 'pubKey' => 'publicKey', 'ssl' => true, 'xhtml' => true, ); $captcha = new Zend_Captcha_ReCaptcha($options); $test = $captcha->getOptions(); $compare = array('privKey' => $options['privKey'], 'pubKey' => $options['pubKey']); $this->assertEquals($compare, $test); $service = $captcha->getService(); $test = $service->getParams(); $compare = array('ssl' => $options['ssl'], 'xhtml' => $options['xhtml']); foreach ($compare as $key => $value) { $this->assertTrue(array_key_exists($key, $test)); $this->assertSame($value, $test[$key]); } } public function testShouldAllowSpecifyingServiceObject() { $captcha = new Zend_Captcha_ReCaptcha(); $try = new Zend_Service_ReCaptcha(); $this->assertNotSame($captcha->getService(), $try); $captcha->setService($try); $this->assertSame($captcha->getService(), $try); } public function testSetAndGetPublicAndPrivateKeys() { $captcha = new Zend_Captcha_ReCaptcha(); $pubKey = 'pubKey'; $privKey = 'privKey'; $captcha->setPubkey($pubKey) ->setPrivkey($privKey); $this->assertSame($pubKey, $captcha->getPubkey()); $this->assertSame($privKey, $captcha->getPrivkey()); $this->assertSame($pubKey, $captcha->getService()->getPublicKey()); $this->assertSame($privKey, $captcha->getService()->getPrivateKey()); } /** * Regression tests for ZF-7654 */ public function testConstructorShouldAllowSettingLangOptionOnServiceObject() { $options = array('lang'=>'fr'); $captcha = new Zend_Captcha_ReCaptcha($options); $this->assertEquals('fr', $captcha->getService()->getOption('lang')); } public function testConstructorShouldAllowSettingThemeOptionOnServiceObject() { $options = array('theme'=>'black'); $captcha = new Zend_Captcha_ReCaptcha($options); $this->assertEquals('black', $captcha->getService()->getOption('theme')); } public function testAllowsSettingLangOptionOnServiceObject() { $captcha = new Zend_Captcha_ReCaptcha; $captcha->setOption('lang', 'fr'); $this->assertEquals('fr', $captcha->getService()->getOption('lang')); } public function testAllowsSettingThemeOptionOnServiceObject() { $captcha = new Zend_Captcha_ReCaptcha; $captcha->setOption('theme', 'black'); $this->assertEquals('black', $captcha->getService()->getOption('theme')); } /** * End ZF-7654 tests */ } class Zend_Captcha_ReCaptchaTest_SessionContainer { protected static $_word; public function __get($name) { if ('word' == $name) { return self::$_word; } return null; } public function __set($name, $value) { if ('word' == $name) { self::$_word = $value; } else { $this->$name = $value; } } public function __isset($name) { if (('word' == $name) && (null !== self::$_word)) { return true; } return false; } public function __call($method, $args) { switch ($method) { case 'setExpirationHops': case 'setExpirationSeconds': $this->$method = array_shift($args); break; default: } } } // Call Zend_Captcha_ReCaptchaTest::main() if this source file is executed directly. if (PHPUnit_MAIN_METHOD == "Zend_Captcha_ReCaptchaTest::main") { Zend_Captcha_ReCaptchaTest::main(); }