Ejemplo n.º 1
0
 /**
  * @parra
  *
  */
 public function testPermissionMask()
 {
     $mask = new \AJXP_PermissionMask();
     $mask->updateBranch("/a1/b1/c1", new \AJXP_Permission("r"));
     echo "\n";
     $mask->toStr($mask->getTree(), 1);
     $mask->updateBranch("/a1/b1/c2", new \AJXP_Permission("rw"));
     $mask->updateBranch("/a1/b1/c3", new \AJXP_Permission());
     echo "\n";
     $mask->toStr($mask->getTree(), 1);
     $mask->updateBranch("/a1/b2", new \AJXP_Permission("rw"));
     echo "\n";
     $mask->toStr($mask->getTree(), 1);
     $mask->updateBranch("/a1/b3", new \AJXP_Permission());
     $mask->updateBranch("a2/b1", new \AJXP_Permission());
     $this->assertFalse($mask->match("/", \AJXP_Permission::WRITE));
     $this->assertTrue($mask->match("/", \AJXP_Permission::READ));
     $this->assertTrue($mask->match("/a1/b1/c1", \AJXP_Permission::READ));
     $this->assertTrue($mask->match("/a1/b1", \AJXP_Permission::READ));
     $this->assertFalse($mask->match("/a1/b1", \AJXP_Permission::WRITE));
     $this->assertFalse($mask->match("/a1/b1/c3", \AJXP_Permission::READ));
     $this->assertTrue($mask->match("/a1/b1/c1/d1/e1/f1", \AJXP_Permission::READ));
     $this->assertFalse($mask->match("/a1/b1/c1/d1/e1/f1", \AJXP_Permission::WRITE));
     // This overrides the whole /a1/b1 branch >> do we want that?
     $mask2 = new \AJXP_PermissionMask();
     $mask2->updateBranch("/a1/b1", new \AJXP_Permission("d"));
     //$mask->override($mask2);
     echo "mask 2\n";
     $mask2->toStr($mask2->getTree(), 0);
     echo "mask 1\n";
     $mask->toStr($mask->getTree(), 0);
     echo "Mask 2 override mask 1\n";
     $mask->override($mask2);
     $mask->toStr($mask->getTree(), 0);
     //$this->assertTrue($mask->match("/a1/b1", \AJXP_Permission::WRITE));
     // Todo write more tests
     $mask->updateBranch("/a1/b1/c1", new \AJXP_Permission("w"));
     //$this->assertFalse($mask->match("/a1/b1/c1", \AJXP_Permission::READ));
     $this->assertTrue($mask->match("/a1/b1/c1", \AJXP_Permission::WRITE));
     //
     //
     // $this->assertTrue($mask->match("/a1/b1/c2", \AJXP_Permission::READ));
     //$this->assertTrue($mask->match("/a1/b1/c2", \AJXP_Permission::WRITE));
     //$this->assertTrue($mask->match("/a1", \AJXP_Permission::DENY));
     // Test that a deny is cutting the sub branches
     $mask1 = new \AJXP_PermissionMask();
     $mask1->updateBranch("/a1/b1", new \AJXP_Permission("rw"));
     $mask1->updateBranch("/a1/b2", new \AJXP_Permission("rw"));
     $mask1->updateBranch("/a1/b3/c1", new \AJXP_Permission("rw"));
     $mask1->updateBranch("/a1/b3/c2", new \AJXP_Permission("rw"));
     $mask2 = new \AJXP_PermissionMask();
     $mask2->updateBranch("/a1", new \AJXP_Permission("d"));
     $result = $mask1->override($mask2);
     $this->assertFalse($result->match("/a1", \AJXP_Permission::READ));
     $this->assertFalse($result->match("/a1/b2", \AJXP_Permission::READ));
     $this->assertFalse($result->match("/a1/b3", \AJXP_Permission::READ));
     $this->assertFalse($result->match("/a1/b3/c1", \AJXP_Permission::READ));
     $this->assertFalse($result->match("/a1/any", \AJXP_Permission::READ));
 }
 /**
  * Copy the full tree from the one passed in parameter
  * @param AJXP_PermissionMask $mask
  * @return AJXP_PermissionMask
  */
 function copyMask($mask)
 {
     $this->updateTree($mask->getTree());
 }