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);
+	}
+}