From 64418ade2e1e87f835e9ba25c393d359f0c99487 Mon Sep 17 00:00:00 2001
From: tof <>
Date: Fri, 15 Jun 2007 11:24:56 +0000
Subject: Implement unit tests for TUser, TUserManager Start implement unit
tests for TAuthManager (still incomplete)
---
tests/unit/Security/TAuthManagerTest.php | 56 ++++++++++++++++-
tests/unit/Security/TUserManagerTest.php | 101 ++++++++++++++++++++++++++++---
tests/unit/Security/TUserTest.php | 76 ++++++++++++++++++++---
3 files changed, 211 insertions(+), 22 deletions(-)
(limited to 'tests')
diff --git a/tests/unit/Security/TAuthManagerTest.php b/tests/unit/Security/TAuthManagerTest.php
index 6e3c05a9..7e628a61 100644
--- a/tests/unit/Security/TAuthManagerTest.php
+++ b/tests/unit/Security/TAuthManagerTest.php
@@ -2,32 +2,82 @@
require_once dirname(__FILE__).'/../phpunit.php';
Prado::using('System.Security.TAuthManager');
+Prado::using('System.Security.TUserManager');
+Prado::using('System.Xml.TXmlDocument');
/**
* @package System.Security
*/
class TAuthManagerTest extends PHPUnit_Framework_TestCase {
+
+ public static $app = null;
+ public static $usrMgr = null;
public function setUp() {
+ ini_set('session.use_cookies',0);
+ ini_set('session.cache_limiter', 'none');
+ if(self::$app === null) {
+ self::$app = new TApplication(dirname(__FILE__).'/app');
+ }
+
+ // Make a fake user manager module
+ if (self::$usrMgr === null) {
+ self::$usrMgr=new TUserManager ();
+ $config=new TXmlDocument('1.0','utf8');
+ $config->loadFromString('');
+ self::$usrMgr->init($config);
+ self::$app->setModule('users', self::$usrMgr);
+ }
}
public function tearDown() {
}
public function testInit() {
- throw new PHPUnit_Framework_IncompleteTestError();
+ $authManager=new TAuthManager ();
+ // Catch exception with null usermgr
+ try {
+ $authManager->init(null);
+ self::fail ('Expected TConfigurationException not thrown');
+ } catch (TConfigurationException $e) {}
+
+ $authManager->setUserManager('users');
+ $authManager->init (null);
+ self::assertEquals(self::$usrMgr, $authManager->getUserManager());
}
public function testUserManager() {
- throw new PHPUnit_Framework_IncompleteTestError();
+ $authManager=new TAuthManager ();
+ $authManager->setUserManager('users');
+ $authManager->init(null);
+ self::assertEquals(self::$usrMgr, $authManager->getUserManager());
+
+ // test change
+ try {
+ $authManager->setUserManager('invalid');
+ self::fail ('Expected TInvalidOperationException not thrown');
+ } catch (TInvalidOperationException $e) {}
+
}
public function testLoginPage() {
- throw new PHPUnit_Framework_IncompleteTestError();
+ $authManager=new TAuthManager ();
+ $authManager->setUserManager('users');
+ $authManager->init(null);
+ $authManager->setLoginPage ('LoginPage');
+ self::assertEquals('LoginPage', $authManager->getLoginPage());
}
public function testDoAuthentication() {
throw new PHPUnit_Framework_IncompleteTestError();
+ // Not yet finished, Session won't start because of headers :( :(
+
+ $authManager=new TAuthManager ();
+ $authManager->setUserManager('users');
+ $authManager->init(null);
+ $authManager->setLoginPage ('LoginPage');
+ self::$app->raiseEvent ('onAuthentication', self::$app, null);
+
}
public function testDoAuthorization() {
diff --git a/tests/unit/Security/TUserManagerTest.php b/tests/unit/Security/TUserManagerTest.php
index 8937ba22..68f2b32b 100644
--- a/tests/unit/Security/TUserManagerTest.php
+++ b/tests/unit/Security/TUserManagerTest.php
@@ -7,47 +7,130 @@ Prado::using('System.Security.TUserManager');
* @package System.Security
*/
class TUserManagerTest extends PHPUnit_Framework_TestCase {
+
+ public static $app=null;
+ public static $config=null;
+
public function setUp() {
+
+ if(self::$app === null) {
+ self::$app = new TApplication(dirname(__FILE__).'/app');
+ prado::setPathofAlias('App', dirname(__FILE__));
+ }
+
+ if (self::$config === null) {
+ // Simulate a config file
+ self::$config=new TXmlDocument('1.0','utf8');
+ self::$config->loadFromString('');
+ }
}
public function tearDown() {
}
public function testInit() {
- throw new PHPUnit_Framework_IncompleteTestError();
+ $userManager=new TUserManager ();
+ $userManager->init (self::$config);
+ self::assertEquals(array('joe'=>'demo','john'=>'demo', 'test' => 'test'), $userManager->getUsers());
+ $userManager=null;
+ // Test with a file
+ if (is_writable (dirname(__FILE__))) {
+ self::$config->saveToFile(dirname(__FILE__).'/users.xml');
+ $userManager=new TUserManager();
+ $userManager->setUserFile('App.users');
+ $userManager->init (new TXmlDocument()); // Empty config
+ self::assertEquals(array('joe'=>'demo','john'=>'demo', 'test' => 'test'), $userManager->getUsers());
+ unlink (dirname(__FILE__).'/users.xml');
+ }
}
public function testUsers() {
- throw new PHPUnit_Framework_IncompleteTestError();
+ $userManager=new TUserManager ();
+ $userManager->init (self::$config);
+ self::assertEquals(array('joe'=>'demo','john'=>'demo', 'test' => 'test'), $userManager->getUsers());
}
public function testRoles() {
- throw new PHPUnit_Framework_IncompleteTestError();
+ $userManager=new TUserManager ();
+ $userManager->init (self::$config);
+ self::assertEquals(array('joe'=>array ('Writer'), 'john'=>array ('Administrator','Writer'), 'test' => array ('Reader', 'User')), $userManager->getRoles());
}
public function testUserFile() {
- throw new PHPUnit_Framework_IncompleteTestError();
+ $userManager=new TUserManager ();
+ try {
+ $userManager->setUserFile('invalidFile');
+ self::fail ('Exception TConfigurationException not thrown');
+ } catch (TConfigurationException $e) {}
+ $userManager=null;
+ if (is_writable (dirname(__FILE__))) {
+ self::$config->saveToFile(dirname(__FILE__).'/users.xml');
+ $userManager=new TUserManager();
+ $userManager->setUserFile('App.users');
+ $userManager->init (new TXmlDocument()); // Empty config
+ self::assertEquals(dirname(__FILE__).'/users.xml', $userManager->getUserFile());
+ unlink (dirname(__FILE__).'/users.xml');
+ $userManager=null;
+ }
+ $userManager=new TUserManager ();
+ $userManager->init (self::$config);
+ try {
+ $userManager->setUserFile('App.users');
+ self::fail ('Exception TInvalidOperationException not thrown');
+ } catch (TInvalidOperationException $e) {}
}
public function testGuestName() {
- throw new PHPUnit_Framework_IncompleteTestError();
+ $userManager=new TUserManager ();
+ self::assertEquals('Guest', $userManager->getGuestName());
+ $userManager->setGuestName('Invite');
+ self::assertEquals('Invite', $userManager->getGuestName());
}
public function testPasswordMode() {
- throw new PHPUnit_Framework_IncompleteTestError();
+ $userManager=new TUserManager ();
+ $userManager->setPasswordMode('Clear');
+ self::assertEquals('Clear', $userManager->getPasswordMode());
+ $userManager->setPasswordMode('MD5');
+ self::assertEquals('MD5', $userManager->getPasswordMode());
+ $userManager->setPasswordMode('SHA1');
+ self::assertEquals('SHA1', $userManager->getPasswordMode());
+ try {
+ $userManager->setPasswordMode('Invalid');
+ self::fail ('Exception TInvalidDataValueException not thrown');
+ } catch (TInvalidDataValueException $e) {}
+
}
public function testValidateUser() {
- throw new PHPUnit_Framework_IncompleteTestError();
+ $userManager=new TUserManager ();
+ $userManager->init (self::$config);
+ $userManager->setPasswordMode('Clear');
+ self::assertTrue($userManager->validateUser('Joe', 'demo'));
+ self::assertFalse($userManager->validateUser('John', 'bad'));
}
public function testUser() {
- throw new PHPUnit_Framework_IncompleteTestError();
+ $userManager=new TUserManager ();
+ $userManager->init (self::$config);
+ $guest=$userManager->getUser(null);
+ self::assertType('TUser', $guest);
+ self::assertTrue($guest->getIsGuest());
+ $user=$userManager->getUser('joe');
+ self::assertType('TUser', $user);
+ self::assertEquals('joe', $user->getName());
+ self::assertEquals(array ('Writer'), $user->getRoles());
+ self::assertFalse($user->getIsGuest());
+ self::assertNull($userManager->getUser('badUser'));
}
public function testSwitchToGuest() {
- throw new PHPUnit_Framework_IncompleteTestError();
+ $userManager=new TUserManager ();
+ $userManager->init (self::$config);
+ $user=$userManager->getUser('joe');
+ $userManager->switchToGuest($user);
+ self::assertTrue($user->getIsGuest());
}
}
diff --git a/tests/unit/Security/TUserTest.php b/tests/unit/Security/TUserTest.php
index 67ac6eb4..597fac97 100644
--- a/tests/unit/Security/TUserTest.php
+++ b/tests/unit/Security/TUserTest.php
@@ -2,56 +2,112 @@
require_once dirname(__FILE__).'/../phpunit.php';
Prado::using('System.Security.TUser');
+Prado::using('System.Security.TUserManager');
/**
* @package System.Security
*/
class TUserTest extends PHPUnit_Framework_TestCase {
+ public static $app=null;
+ public static $mgr=null;
public function setUp() {
+ if(self::$app === null) {
+ self::$app = new TApplication(dirname(__FILE__).'/app');
+ prado::setPathofAlias('App', dirname(__FILE__));
+ }
+
+ if (self::$mgr===null) {
+ $config=new TXmlDocument('1.0','utf8');
+ $config->loadFromString('');
+ self::$mgr=new TUserManager();
+ self::$mgr->init($config);
+ }
}
public function tearDown() {
}
public function testConstruct() {
- throw new PHPUnit_Framework_IncompleteTestError();
+ $user = new TUser (self::$mgr);
+ self::assertEquals('Guest', $user->getName());
+ self::assertEquals(self::$mgr, $user->getManager());
}
public function testManager() {
- throw new PHPUnit_Framework_IncompleteTestError();
+ $user = new TUser (self::$mgr);
+ self::assertEquals(self::$mgr, $user->getManager());
}
public function testName() {
- throw new PHPUnit_Framework_IncompleteTestError();
+ $user = new TUser (self::$mgr);
+ $user->setName('joe');
+ self::assertEquals('joe', $user->getName());
}
public function testIsGuest() {
- throw new PHPUnit_Framework_IncompleteTestError();
+ $user = new TUser (self::$mgr);
+ $user->setName('John');
+ $user->setIsGuest(false);
+ $user->setRoles('Administrator, Writer');
+ self::assertFalse($user->getIsGuest());
+ $user->setIsGuest(true);
+ self::assertTrue($user->getIsGuest());
+ self::assertEquals(array(),$user->getRoles());
}
public function testRoles() {
- throw new PHPUnit_Framework_IncompleteTestError();
+ $user=new TUser(self::$mgr);
+ $user->setRoles(array('Administrator','Writer'));
+ self::assertEquals(array('Administrator','Writer'), $user->getRoles());
+ $user->setRoles('Reader,User');
+ self::assertEquals(array('Reader','User'), $user->getRoles());
}
public function testIsInRole() {
- throw new PHPUnit_Framework_IncompleteTestError();
+ $user=new TUser(self::$mgr);
+ $user->setRoles(array('Administrator','Writer'));
+ // Roles are case insensitive
+ self::assertTrue($user->IsInRole('writer'));
+ self::assertTrue($user->IsInRole('Writer'));
+ self::assertFalse($user->isInRole('Reader'));
}
public function testSaveToString() {
- throw new PHPUnit_Framework_IncompleteTestError();
+ $user = new TUser (self::$mgr);
+ $user->setName('John');
+ $user->setIsGuest(false);
+ $user->setRoles('Administrator, Writer');
+ // State array should now be :
+ $assumedState=array ('Name' => 'John', 'IsGuest' => false, 'Roles' => array ('Administrator', 'Writer'));
+ self::assertEquals(serialize($assumedState), $user->saveToString());
}
public function testLoadFromString() {
- throw new PHPUnit_Framework_IncompleteTestError();
+ $user = new TUser (self::$mgr);
+ $user->setName('John');
+ $user->setIsGuest(false);
+ $user->setRoles('Administrator, Writer');
+ $save=$user->saveToString();
+
+ $user2 = new TUser (self::$mgr);
+ $user2->loadFromString($save);
+
+ self::assertEquals($user, $user2);
}
+ /* getState & setState are protected methods, will be tested with other tests.
public function testState() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+ */
+
public function testStateChanged() {
- throw new PHPUnit_Framework_IncompleteTestError();
+ $user = new TUser (self::$mgr);
+ $user->setName('John');
+ self::assertTrue($user->getStateChanged());
+ $user->setStateChanged(false);
+ self::assertFalse($user->getStateChanged());
}
}
--
cgit v1.2.3