* @license BSD */ namespace Domframework\Tests; use Domframework\Authzgroups; /** Test the Authzgroups.php file */ class AuthzgroupsTest extends \PHPUnit_Framework_TestCase { private $dbconfig = array ( "dsn" => "sqlite:/tmp/databaseAuthzGroups.db", "username" => null, "password" => null, "driver_options" => null, "tableprefix" => "", ); public function test_Initialization() { if (file_exists("/tmp/databaseAuthzGroups.db")) { unlink("/tmp/databaseAuthzGroups.db"); } } public function test_createTables1() { $authz = new Authzgroups(); $this->setExpectedException("Exception"); $authz->createTables(); } public function test_connect() { // Must use the model to create the database structure as there is no // creation of tables in controller $authz = new Authzgroups(); $res = $authz->connect( $this->dbconfig["dsn"], $this->dbconfig["username"], $this->dbconfig["password"], $this->dbconfig["driver_options"] ); $this->assertSame(true, $res); } public function test_createTables2() { $authz = new Authzgroups(); $authz->connect( $this->dbconfig["dsn"], $this->dbconfig["username"], $this->dbconfig["password"], $this->dbconfig["driver_options"] ); $res = $authz->createTables(); $this->assertSame(true, $res); } //////////////// // OBJECT // //////////////// public function test_objectCreate1() { $authz = new Authzgroups(); $authz->connect( $this->dbconfig["dsn"], $this->dbconfig["username"], $this->dbconfig["password"], $this->dbconfig["driver_options"] ); $res = $authz->objectAdd("MODULE", "/object"); $this->assertSame("1", $res); } public function test_objectUpdate1() { $authz = new Authzgroups(); $authz->connect( $this->dbconfig["dsn"], $this->dbconfig["username"], $this->dbconfig["password"], $this->dbconfig["driver_options"] ); $res = $authz->objectUpdate("MODULE", "/object", "/object2"); $this->assertSame(1, $res); } public function test_objectDelete1() { $authz = new Authzgroups(); $authz->connect( $this->dbconfig["dsn"], $this->dbconfig["username"], $this->dbconfig["password"], $this->dbconfig["driver_options"] ); // The object was renamed and is not available $this->setExpectedException("Exception"); $res = $authz->objectDel("MODULE", "/object"); } //////////////// // GROUPS // //////////////// public function test_groupCreate1() { $authz = new Authzgroups(); $authz->connect( $this->dbconfig["dsn"], $this->dbconfig["username"], $this->dbconfig["password"], $this->dbconfig["driver_options"] ); $res = $authz->groupAdd("MODULE", "group"); $this->assertSame("1", $res); } public function test_groupUpdate1() { $authz = new Authzgroups(); $authz->connect( $this->dbconfig["dsn"], $this->dbconfig["username"], $this->dbconfig["password"], $this->dbconfig["driver_options"] ); $res = $authz->groupUpdate("MODULE", "group", "group2"); $this->assertSame(1, $res); } public function test_groupDelete1() { $authz = new Authzgroups(); $authz->connect( $this->dbconfig["dsn"], $this->dbconfig["username"], $this->dbconfig["password"], $this->dbconfig["driver_options"] ); // The group doesn't exists $this->setExpectedException("Exception"); $res = $authz->groupDel("MODULE", "group"); } ///////////////////// // GROUPMEMBER // ///////////////////// public function test_groupmemberCreate1() { $authz = new Authzgroups(); $authz->connect( $this->dbconfig["dsn"], $this->dbconfig["username"], $this->dbconfig["password"], $this->dbconfig["driver_options"] ); // The group doesn't exists $this->setExpectedException("Exception"); $res = $authz->groupmemberAdd("MODULE", "group", "userKnown"); } public function test_groupmemberCreate2() { $authz = new Authzgroups(); $authz->connect( $this->dbconfig["dsn"], $this->dbconfig["username"], $this->dbconfig["password"], $this->dbconfig["driver_options"] ); $res = $authz->groupmemberAdd("MODULE", "group2", "userKnown"); $this->assertSame("1", $res); } public function test_groupmemberDelete1() { $authz = new Authzgroups(); $authz->connect( $this->dbconfig["dsn"], $this->dbconfig["username"], $this->dbconfig["password"], $this->dbconfig["driver_options"] ); // The group doesn't exists $this->setExpectedException("Exception"); $res = $authz->groupmemberDel("MODULE", "group", "userKnown"); } public function test_groupmemberReadGroup1() { $authz = new Authzgroups(); $authz->connect( $this->dbconfig["dsn"], $this->dbconfig["username"], $this->dbconfig["password"], $this->dbconfig["driver_options"] ); // The group doesn't exists $this->setExpectedException("Exception"); $res = $authz->groupmemberReadGroup("MODULE", "group"); } public function test_groupmemberReadGroup2() { $authz = new Authzgroups(); $authz->connect( $this->dbconfig["dsn"], $this->dbconfig["username"], $this->dbconfig["password"], $this->dbconfig["driver_options"] ); $res = $authz->groupmemberReadGroup("MODULE", "group2"); $this->assertSame(array (array ("user" => "userKnown")), $res); } public function test_groupmemberReadUser1() { $authz = new Authzgroups(); $authz->connect( $this->dbconfig["dsn"], $this->dbconfig["username"], $this->dbconfig["password"], $this->dbconfig["driver_options"] ); $res = $authz->groupmemberReadUser("MODULE", "userKnown"); $this->assertSame(array (1 => "group2"), $res); } //////////////// // RIGHTS // //////////////// public function test_rightCreate1() { $authz = new Authzgroups(); $authz->connect( $this->dbconfig["dsn"], $this->dbconfig["username"], $this->dbconfig["password"], $this->dbconfig["driver_options"] ); $res = $authz->rightAdd("MODULE", "group2", "/object2", "RW"); $this->assertSame("1", $res); } public function test_rightUpdate1() { $authz = new Authzgroups(); $authz->connect( $this->dbconfig["dsn"], $this->dbconfig["username"], $this->dbconfig["password"], $this->dbconfig["driver_options"] ); $res = $authz->rightUpdate("MODULE", "group2", "/object2", "RO"); $this->assertSame(1, $res); } public function test_rightDelete1() { $authz = new Authzgroups(); $authz->connect( $this->dbconfig["dsn"], $this->dbconfig["username"], $this->dbconfig["password"], $this->dbconfig["driver_options"] ); // The object doesn't exists $this->setExpectedException("Exception"); $res = $authz->rightDel("MODULE", "group2", "/object"); } ////////////////////////////////////////////// // CLEANING DATABASE : REMOVING ENTRIES // ////////////////////////////////////////////// public function test_deleteGroupmember2() { $authz = new Authzgroups(); $authz->connect( $this->dbconfig["dsn"], $this->dbconfig["username"], $this->dbconfig["password"], $this->dbconfig["driver_options"] ); $res = $authz->groupmemberDel("MODULE", "group2", "userKnown"); $this->assertSame(1, $res); } public function test_deleteObject2() { $authz = new Authzgroups(); $authz->connect( $this->dbconfig["dsn"], $this->dbconfig["username"], $this->dbconfig["password"], $this->dbconfig["driver_options"] ); $res = $authz->objectDel("MODULE", "/object2"); $this->assertSame(1, $res); } public function test_deleteGroup2() { $authz = new Authzgroups(); $authz->connect( $this->dbconfig["dsn"], $this->dbconfig["username"], $this->dbconfig["password"], $this->dbconfig["driver_options"] ); $res = $authz->groupDel("MODULE", "group2"); $this->assertSame(1, $res); } ///////////////////// // USER RIGHTS // ///////////////////// public function test_userrightsget1() { $authz = new Authzgroups(); $authz->connect( $this->dbconfig["dsn"], $this->dbconfig["username"], $this->dbconfig["password"], $this->dbconfig["driver_options"] ); // Create infos to tests the userrightsget method $authz->objectAdd("MODULE1", "/"); $authz->objectAdd("MODULE1", "/rep1"); $authz->objectAdd("MODULE1", "/rep1/rep2"); $authz->objectAdd("MODULE1", "/rep1/rep2/rep3"); $authz->objectAdd("MODULE2", "/"); $authz->objectAdd("MODULE2", "/rep1"); $authz->objectAdd("MODULE2", "/rep1/rep2"); $authz->objectAdd("MODULE2", "/rep1/rep2/rep3"); $authz->groupAdd("MODULE1", "group1"); $authz->groupAdd("MODULE1", "group2"); $authz->groupAdd("MODULE1", "group3"); $authz->groupAdd("MODULE2", "group3"); $authz->groupmemberAdd("MODULE1", "group2", "userKnown"); $authz->groupmemberAdd("MODULE1", "group3", "userKnown"); $authz->groupmemberAdd("MODULE2", "group3", "userKnown"); $authz->rightAdd("MODULE1", "group2", "/rep1/rep2", "RW"); $authz->rightAdd("MODULE1", "group3", "/rep1/rep2", "RO"); $res = $authz->userrightsget("MODULE1", "userKnown"); $this->assertSame(array ("/rep1/rep2" => "RW"), $res); } public function test_allow1() { $authz = new Authzgroups(); $authz->connect( $this->dbconfig["dsn"], $this->dbconfig["username"], $this->dbconfig["password"], $this->dbconfig["driver_options"] ); $res = $authz->allow("MODULE1", "userKnown", "/rep1/rep2"); $this->assertSame("RW", $res); } public function test_allow2() { $authz = new Authzgroups(); $authz->connect( $this->dbconfig["dsn"], $this->dbconfig["username"], $this->dbconfig["password"], $this->dbconfig["driver_options"] ); $authz->rightAdd("MODULE1", "group2", "/", "RW"); $res = $authz->allow("MODULE1", "userKnown", "/rep1/rep2"); $this->assertSame("RW", $res); } public function test_allow3() { $authz = new Authzgroups(); $authz->connect( $this->dbconfig["dsn"], $this->dbconfig["username"], $this->dbconfig["password"], $this->dbconfig["driver_options"] ); $authz->rightAdd("MODULE1", "group2", "/rep1", "RO"); $res = $authz->allow("MODULE1", "userKnown", "/rep1/rep2"); $this->assertSame("RW", $res); } public function test_allow4() { $authz = new Authzgroups(); $authz->connect( $this->dbconfig["dsn"], $this->dbconfig["username"], $this->dbconfig["password"], $this->dbconfig["driver_options"] ); $res = $authz->allow("MODULE1", "userKnown", "/rep1/rep2/rep3"); $this->assertSame("NO", $res); } }