*/ class test_dblayerauthzgroups_sqlite extends PHPUnit_Framework_TestCase { public $confs = array ( "sqlite" => array ( "dsn" => "sqlite:/tmp/databaseAuthz.db", "username" => null, "password" => null, "driver_options" => null, "tableprefix" => "", )); public function test_delDB () { if (file_exists ("/tmp/database.db")) unlink ("/tmp/database.db"); } public function test_createTablesAuthzgroups () { $dbconfig = $this->confs["sqlite"]; $a = new authzgroups (); $a->connect ($dbconfig["dsn"], $dbconfig["username"], $dbconfig["password"], $dbconfig["driver_options"]); $a->createTables (); $a->groupAdd ("modTest", "group"); $a->groupmemberAdd ("modTest", "group", "user"); $a->objectAdd ("modTest", "/"); $a->objectAdd ("modTest", "/article"); $a->objectAdd ("modTest", "/article/base"); $a->objectAdd ("modTest", "/article/base/poub"); $a->rightAdd ("modTest", "group", "/", "RO"); $a->rightAdd ("modTest", "group", "/article", "RO"); $a->rightAdd ("modTest", "group", "/article/base", "RO"); $res = $a->rightAdd ("modTest", "group", "/article/base/poub", "RW"); // Should not be verified : it is not a test for authzgroups ! $this->assertSame ("4", $res); } public function test_createTable () { $dbconfig = $this->confs["sqlite"]; $n = new dblayerauthzgroups ($dbconfig["dsn"], $dbconfig["username"], $dbconfig["password"], $dbconfig["driver_options"]); $n->disconnect (); $n = new dblayerauthzgroups ($dbconfig["dsn"], $dbconfig["username"], $dbconfig["password"], $dbconfig["driver_options"]); $n->tableSet ("dns zones") ->fieldsSet (array ( "id"=>array ("integer", "not null", "autoincrement"), "zo ne"=>array ("varchar", "255", "not null"), "vie wname"=>array ("varchar", "255"), "view clients"=>array ("varchar", "255"), "comme nt"=>array ("varchar", "1024"), "opendate"=>array ("datetime", "not null"), "closedate"=>array ("datetime"))) ->primarySet ("id") ->uniqueSet (array ("id", array ("zo ne", "vie wname"))); $res = $n->createTable (); $this->assertSame (0, $res); } public function test_insert1 () { $dbconfig = $this->confs["sqlite"]; $a = new authzgroups (); $a->connect ($dbconfig["dsn"], $dbconfig["username"], $dbconfig["password"], $dbconfig["driver_options"]); $n = new dblayerauthzgroups ($dbconfig["dsn"], $dbconfig["username"], $dbconfig["password"], $dbconfig["driver_options"]); $n->tableSet ("dns zones") ->fieldsSet (array ( "id"=>array ("integer", "not null", "autoincrement"), "zo ne"=>array ("varchar", "255", "not null"), "vie wname"=>array ("varchar", "255"), "view clients"=>array ("varchar", "255"), "comme nt"=>array ("varchar", "1024"), "opendate"=>array ("datetime", "not null"), "closedate"=>array ("datetime"))) ->primarySet ("id") ->uniqueSet (array ("id", array ("zo ne", "vie wname"))) ->authzgroupsSet ($a) ->moduleSet ("modTest") ->userSet ("user") ->createGroupSet ("group") ->pathSet ("/article/base/poub"); $res = $n->insert (array ("zo ne"=>"zone1", "opendate"=>"2015-05-04 00:11:22")); $n->disconnect (); $this->assertSame ("1", $res); } // Check if the update of the authzgroups database is OK public function test_addAuthzgroups () { $dbconfig = $this->confs["sqlite"]; $a = new authzgroups (); $a->connect ($dbconfig["dsn"], $dbconfig["username"], $dbconfig["password"], $dbconfig["driver_options"]); $res = $a->allow ("modTest", "user", "/article/base/poub/1"); $this->assertSame ("RW", $res); } public function test_insert2 () { $dbconfig = $this->confs["sqlite"]; $a = new authzgroups (); $a->connect ($dbconfig["dsn"], $dbconfig["username"], $dbconfig["password"], $dbconfig["driver_options"]); $n = new dblayerauthzgroups ($dbconfig["dsn"], $dbconfig["username"], $dbconfig["password"], $dbconfig["driver_options"]); $n->tableSet ("dns zones") ->fieldsSet (array ( "id"=>array ("integer", "not null", "autoincrement"), "zo ne"=>array ("varchar", "255", "not null"), "vie wname"=>array ("varchar", "255"), "view clients"=>array ("varchar", "255"), "comme nt"=>array ("varchar", "1024"), "opendate"=>array ("datetime", "not null"), "closedate"=>array ("datetime"))) ->primarySet ("id") ->uniqueSet (array ("id", array ("zo ne", "vie wname"))) ->authzgroupsSet ($a) ->moduleSet ("modTest") ->userSet ("user") ->createGroupSet ("group") ->pathSet ("/article/base/poub"); $n->insert (array ("zo ne"=>"zone2", "opendate"=>"2015-05-04 00:11:22")); $n->insert (array ("zo ne"=>"zone3", "opendate"=>"2015-05-04 00:11:22")); $n->insert (array ("zo ne"=>"zone4", "opendate"=>"2015-05-04 00:11:22")); $res = $n->insert (array ("zo ne"=>"zone5", "opendate"=>"2015-05-04 00:11:22")); $n->disconnect (); $this->assertSame ("5", $res); } // Access to all the tuples public function test_read1 () { $dbconfig = $this->confs["sqlite"]; $a = new authzgroups (); $a->connect ($dbconfig["dsn"], $dbconfig["username"], $dbconfig["password"], $dbconfig["driver_options"]); $n = new dblayerauthzgroups ($dbconfig["dsn"], $dbconfig["username"], $dbconfig["password"], $dbconfig["driver_options"]); $n->tableSet ("dns zones") ->fieldsSet (array ( "id"=>array ("integer", "not null", "autoincrement"), "zo ne"=>array ("varchar", "255", "not null"), "vie wname"=>array ("varchar", "255"), "view clients"=>array ("varchar", "255"), "comme nt"=>array ("varchar", "1024"), "opendate"=>array ("datetime", "not null"), "closedate"=>array ("datetime"))) ->primarySet ("id") ->uniqueSet (array ("id", array ("zo ne", "vie wname"))) ->authzgroupsSet ($a) ->moduleSet ("modTest") ->userSet ("user") ->createGroupSet ("group") ->pathSet ("/article/base/poub"); $res = count ($n->read ()); $n->disconnect (); $this->assertSame (5, $res); } // Remove the right access to 2 and 4 public function test_rightDel () { $dbconfig = $this->confs["sqlite"]; $a = new authzgroups (); $a->connect ($dbconfig["dsn"], $dbconfig["username"], $dbconfig["password"], $dbconfig["driver_options"]); $a->rightDel ("modTest", "group", "/article/base/poub/2"); $res = $a->rightDel ("modTest", "group", "/article/base/poub/4"); // Should not be verified : it is not a test for authzgroups ! $this->assertSame (1, $res); } // Access to 3 of the tuples (2 are blacklisted for the user) public function test_read2 () { $dbconfig = $this->confs["sqlite"]; $a = new authzgroups (); $a->connect ($dbconfig["dsn"], $dbconfig["username"], $dbconfig["password"], $dbconfig["driver_options"]); $n = new dblayerauthzgroups ($dbconfig["dsn"], $dbconfig["username"], $dbconfig["password"], $dbconfig["driver_options"]); $n->tableSet ("dns zones") ->fieldsSet (array ( "id"=>array ("integer", "not null", "autoincrement"), "zo ne"=>array ("varchar", "255", "not null"), "vie wname"=>array ("varchar", "255"), "view clients"=>array ("varchar", "255"), "comme nt"=>array ("varchar", "1024"), "opendate"=>array ("datetime", "not null"), "closedate"=>array ("datetime"))) ->primarySet ("id") ->uniqueSet (array ("id", array ("zo ne", "vie wname"))) ->authzgroupsSet ($a) ->moduleSet ("modTest") ->userSet ("user") ->createGroupSet ("group") ->pathSet ("/article/base/poub"); $res = count ($n->read ()); $n->disconnect (); $this->assertSame (3, $res); } // Del an entry without right -> exception public function test_delEntry1 () { $dbconfig = $this->confs["sqlite"]; $a = new authzgroups (); $a->connect ($dbconfig["dsn"], $dbconfig["username"], $dbconfig["password"], $dbconfig["driver_options"]); $n = new dblayerauthzgroups ($dbconfig["dsn"], $dbconfig["username"], $dbconfig["password"], $dbconfig["driver_options"]); $n->tableSet ("dns zones") ->fieldsSet (array ( "id"=>array ("integer", "not null", "autoincrement"), "zo ne"=>array ("varchar", "255", "not null"), "vie wname"=>array ("varchar", "255"), "view clients"=>array ("varchar", "255"), "comme nt"=>array ("varchar", "1024"), "opendate"=>array ("datetime", "not null"), "closedate"=>array ("datetime"))) ->primarySet ("id") ->uniqueSet (array ("id", array ("zo ne", "vie wname"))) ->authzgroupsSet ($a) ->moduleSet ("modTest") ->userSet ("user") ->createGroupSet ("group") ->pathSet ("/article/base/poub"); $this->setExpectedException ("Exception"); $res = $n->delete (2); } // Update a right to RO public function test_rightRO () { $dbconfig = $this->confs["sqlite"]; $a = new authzgroups (); $a->connect ($dbconfig["dsn"], $dbconfig["username"], $dbconfig["password"], $dbconfig["driver_options"]); $res = $a->rightUpdate ("modTest", "group", "/article/base/poub/1", "RO"); // Not necessary to test : authzgroups $this->assertSame (1, $res); } // Update an entry with RO right -> exception public function test_updateEntry2 () { $dbconfig = $this->confs["sqlite"]; $a = new authzgroups (); $a->connect ($dbconfig["dsn"], $dbconfig["username"], $dbconfig["password"], $dbconfig["driver_options"]); $n = new dblayerauthzgroups ($dbconfig["dsn"], $dbconfig["username"], $dbconfig["password"], $dbconfig["driver_options"]); $n->tableSet ("dns zones") ->fieldsSet (array ( "id"=>array ("integer", "not null", "autoincrement"), "zo ne"=>array ("varchar", "255", "not null"), "vie wname"=>array ("varchar", "255"), "view clients"=>array ("varchar", "255"), "comme nt"=>array ("varchar", "1024"), "opendate"=>array ("datetime", "not null"), "closedate"=>array ("datetime"))) ->primarySet ("id") ->uniqueSet (array ("id", array ("zo ne", "vie wname"))) ->authzgroupsSet ($a) ->moduleSet ("modTest") ->userSet ("user") ->createGroupSet ("group") ->pathSet ("/article/base/poub"); $this->setExpectedException ("Exception"); $res = $n->update (1, array ("zo ne"=>"NOT ALLOWED")); } // Del an entry with the RO right -> exception public function test_delEntry2 () { $dbconfig = $this->confs["sqlite"]; $a = new authzgroups (); $a->connect ($dbconfig["dsn"], $dbconfig["username"], $dbconfig["password"], $dbconfig["driver_options"]); $n = new dblayerauthzgroups ($dbconfig["dsn"], $dbconfig["username"], $dbconfig["password"], $dbconfig["driver_options"]); $n->tableSet ("dns zones") ->fieldsSet (array ( "id"=>array ("integer", "not null", "autoincrement"), "zo ne"=>array ("varchar", "255", "not null"), "vie wname"=>array ("varchar", "255"), "view clients"=>array ("varchar", "255"), "comme nt"=>array ("varchar", "1024"), "opendate"=>array ("datetime", "not null"), "closedate"=>array ("datetime"))) ->primarySet ("id") ->uniqueSet (array ("id", array ("zo ne", "vie wname"))) ->authzgroupsSet ($a) ->moduleSet ("modTest") ->userSet ("user") ->createGroupSet ("group") ->pathSet ("/article/base/poub"); $this->setExpectedException ("Exception"); $res = $n->delete (1); } // Update a right to RW public function test_rightRW () { $dbconfig = $this->confs["sqlite"]; $a = new authzgroups (); $a->connect ($dbconfig["dsn"], $dbconfig["username"], $dbconfig["password"], $dbconfig["driver_options"]); $res = $a->rightUpdate ("modTest", "group", "/article/base/poub/1", "RW"); // Not necessary to test : authzgroups $this->assertSame (1, $res); } // Update an entry with RW right public function test_updateEntry3 () { $dbconfig = $this->confs["sqlite"]; $a = new authzgroups (); $a->connect ($dbconfig["dsn"], $dbconfig["username"], $dbconfig["password"], $dbconfig["driver_options"]); $n = new dblayerauthzgroups ($dbconfig["dsn"], $dbconfig["username"], $dbconfig["password"], $dbconfig["driver_options"]); $n->tableSet ("dns zones") ->fieldsSet (array ( "id"=>array ("integer", "not null", "autoincrement"), "zo ne"=>array ("varchar", "255", "not null"), "vie wname"=>array ("varchar", "255"), "view clients"=>array ("varchar", "255"), "comme nt"=>array ("varchar", "1024"), "opendate"=>array ("datetime", "not null"), "closedate"=>array ("datetime"))) ->primarySet ("id") ->uniqueSet (array ("id", array ("zo ne", "vie wname"))) ->authzgroupsSet ($a) ->moduleSet ("modTest") ->userSet ("user") ->createGroupSet ("group") ->pathSet ("/article/base/poub"); $res = $n->update (1, array ("zo ne"=>"ALLOWED")); $this->assertSame (1, $res); } // Del an entry with the RW right public function test_delEntry3 () { $dbconfig = $this->confs["sqlite"]; $a = new authzgroups (); $a->connect ($dbconfig["dsn"], $dbconfig["username"], $dbconfig["password"], $dbconfig["driver_options"]); $n = new dblayerauthzgroups ($dbconfig["dsn"], $dbconfig["username"], $dbconfig["password"], $dbconfig["driver_options"]); $n->tableSet ("dns zones") ->fieldsSet (array ( "id"=>array ("integer", "not null", "autoincrement"), "zo ne"=>array ("varchar", "255", "not null"), "vie wname"=>array ("varchar", "255"), "view clients"=>array ("varchar", "255"), "comme nt"=>array ("varchar", "1024"), "opendate"=>array ("datetime", "not null"), "closedate"=>array ("datetime"))) ->primarySet ("id") ->uniqueSet (array ("id", array ("zo ne", "vie wname"))) ->authzgroupsSet ($a) ->moduleSet ("modTest") ->userSet ("user") ->createGroupSet ("group") ->pathSet ("/article/base/poub"); $res = $n->delete (1); $this->assertSame (1, $res); } // Check if the update of the authzgroups database is OK after deletion public function test_delAuthzgroups () { $dbconfig = $this->confs["sqlite"]; $a = new authzgroups (); $a->connect ($dbconfig["dsn"], $dbconfig["username"], $dbconfig["password"], $dbconfig["driver_options"]); $res = $a->objectRead ("modTest", "/article/base/poub/1"); $this->assertSame (array (), $res); } // Read the zone without id public function test_read3 () { $dbconfig = $this->confs["sqlite"]; $a = new authzgroups (); $a->connect ($dbconfig["dsn"], $dbconfig["username"], $dbconfig["password"], $dbconfig["driver_options"]); $n = new dblayerauthzgroups ($dbconfig["dsn"], $dbconfig["username"], $dbconfig["password"], $dbconfig["driver_options"]); $n->tableSet ("dns zones") ->fieldsSet (array ( "id"=>array ("integer", "not null", "autoincrement"), "zo ne"=>array ("varchar", "255", "not null"), "vie wname"=>array ("varchar", "255"), "view clients"=>array ("varchar", "255"), "comme nt"=>array ("varchar", "1024"), "opendate"=>array ("datetime", "not null"), "closedate"=>array ("datetime"))) ->primarySet ("id") ->uniqueSet (array ("id", array ("zo ne", "vie wname"))) ->authzgroupsSet ($a) ->moduleSet ("modTest") ->userSet ("user") ->createGroupSet ("group") ->pathSet ("/article/base/poub"); $res = $n->read (null, array ("zo ne", "vie wname")); $this->assertSame (array (1=>array ("zo ne"=>"zone3", "vie wname"=>null), 3=>array ("zo ne"=>"zone5", "vie wname"=>null)), $res); } }