Mercurial > hg > Members > shoshi > webvirt
diff cake/tests/cases/libs/security.test.php @ 0:261e66bd5a0c
hg init
author | Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 24 Jul 2011 21:08:31 +0900 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cake/tests/cases/libs/security.test.php Sun Jul 24 21:08:31 2011 +0900 @@ -0,0 +1,173 @@ +<?php +/** + * SecurityTest file + * + * PHP versions 4 and 5 + * + * CakePHP(tm) Tests <http://book.cakephp.org/view/1196/Testing> + * Copyright 2005-2010, Cake Software Foundation, Inc. (http://cakefoundation.org) + * + * Licensed under The Open Group Test Suite License + * Redistributions of files must retain the above copyright notice. + * + * @copyright Copyright 2005-2010, Cake Software Foundation, Inc. (http://cakefoundation.org) + * @link http://book.cakephp.org/view/1196/Testing CakePHP(tm) Tests + * @package cake + * @subpackage cake.tests.cases.libs + * @since CakePHP(tm) v 1.2.0.5432 + * @license http://www.opensource.org/licenses/opengroup.php The Open Group Test Suite License + */ +App::import('Core', 'Security'); + +/** + * SecurityTest class + * + * @package cake + * @subpackage cake.tests.cases.libs + */ +class SecurityTest extends CakeTestCase { + +/** + * sut property + * + * @var mixed null + * @access public + */ + var $sut = null; + +/** + * setUp method + * + * @access public + * @return void + */ + function setUp() { + $this->sut =& Security::getInstance(); + } + +/** + * testInactiveMins method + * + * @access public + * @return void + */ + function testInactiveMins() { + Configure::write('Security.level', 'high'); + $this->assertEqual(10, Security::inactiveMins()); + + Configure::write('Security.level', 'medium'); + $this->assertEqual(100, Security::inactiveMins()); + + Configure::write('Security.level', 'low'); + $this->assertEqual(300, Security::inactiveMins()); + } + +/** + * testGenerateAuthkey method + * + * @access public + * @return void + */ + function testGenerateAuthkey() { + $this->assertEqual(strlen(Security::generateAuthKey()), 40); + } + +/** + * testValidateAuthKey method + * + * @access public + * @return void + */ + function testValidateAuthKey() { + $authKey = Security::generateAuthKey(); + $this->assertTrue(Security::validateAuthKey($authKey)); + } + +/** + * testHash method + * + * @access public + * @return void + */ + function testHash() { + $Security =& Security::getInstance(); + $_hashType = $Security->hashType; + + $key = 'someKey'; + $hash = 'someHash'; + + $this->assertIdentical(strlen(Security::hash($key, null, false)), 40); + $this->assertIdentical(strlen(Security::hash($key, 'sha1', false)), 40); + $this->assertIdentical(strlen(Security::hash($key, null, true)), 40); + $this->assertIdentical(strlen(Security::hash($key, 'sha1', true)), 40); + + $result = Security::hash($key, null, $hash); + $this->assertIdentical($result, 'e38fcb877dccb6a94729a81523851c931a46efb1'); + + $result = Security::hash($key, 'sha1', $hash); + $this->assertIdentical($result, 'e38fcb877dccb6a94729a81523851c931a46efb1'); + + $hashType = 'sha1'; + Security::setHash($hashType); + $this->assertIdentical($this->sut->hashType, $hashType); + $this->assertIdentical(strlen(Security::hash($key, null, true)), 40); + $this->assertIdentical(strlen(Security::hash($key, null, false)), 40); + + $this->assertIdentical(strlen(Security::hash($key, 'md5', false)), 32); + $this->assertIdentical(strlen(Security::hash($key, 'md5', true)), 32); + + $hashType = 'md5'; + Security::setHash($hashType); + $this->assertIdentical($this->sut->hashType, $hashType); + $this->assertIdentical(strlen(Security::hash($key, null, false)), 32); + $this->assertIdentical(strlen(Security::hash($key, null, true)), 32); + + if (!function_exists('hash') && !function_exists('mhash')) { + $this->assertIdentical(strlen(Security::hash($key, 'sha256', false)), 32); + $this->assertIdentical(strlen(Security::hash($key, 'sha256', true)), 32); + } else { + $this->assertIdentical(strlen(Security::hash($key, 'sha256', false)), 64); + $this->assertIdentical(strlen(Security::hash($key, 'sha256', true)), 64); + } + + Security::setHash($_hashType); + } + +/** + * testCipher method + * + * @access public + * @return void + */ + function testCipher() { + $length = 10; + $txt = ''; + for ($i = 0; $i < $length; $i++) { + $txt .= mt_rand(0, 255); + } + $key = 'my_key'; + $result = Security::cipher($txt, $key); + $this->assertEqual(Security::cipher($result, $key), $txt); + + $txt = ''; + $key = 'my_key'; + $result = Security::cipher($txt, $key); + $this->assertEqual(Security::cipher($result, $key), $txt); + + $txt = 'some_text'; + $key = ''; + $result = Security::cipher($txt, $key); + $this->assertError(); + $this->assertIdentical($result, ''); + + $txt = 123456; + $key = 'my_key'; + $result = Security::cipher($txt, $key); + $this->assertEqual(Security::cipher($result, $key), $txt); + + $txt = '123456'; + $key = 'my_key'; + $result = Security::cipher($txt, $key); + $this->assertEqual(Security::cipher($result, $key), $txt); + } +}