Пример #1
0
 public function testThreeUsersInTwoGroupsAndOneProjectWithPermissionAndGroupPermissions()
 {
     list($group1, $group2, $group3) = $this->_generateGroups(3);
     /* @var $group1 USVN_Db_Table_Row_Group */
     /* @var $group2 USVN_Db_Table_Row_Group */
     list($user1, $user2, $user3) = $this->_generateUsers(3);
     /* @var $user1 USVN_Db_Table_Row_User */
     /* @var $user2 USVN_Db_Table_Row_User */
     /* @var $user3 USVN_Db_Table_Row_User */
     $group1->addUser($user1);
     $group1->addUser($user2);
     $group1->addUser($user3);
     $group2->addUser($user1);
     $group2->addUser($user2);
     $group3->addUser($user1);
     $group3->addUser($user3);
     list($project1, $project2, $project3) = $this->_generateProjects(3);
     /* @var $project1 USVN_Db_Table_Row_Project */
     /* @var $project2 USVN_Db_Table_Row_Project */
     /* @var $project3 USVN_Db_Table_Row_Project */
     $table = new USVN_Db_Table_FilesRights();
     for ($i = 1; $i <= 5; $i++) {
         for ($j = 1; $j <= 3; $j++) {
             ${"files_rights" . $i . $j} = $table->fetchNew();
             ${"files_rights" . $i . $j}->projects_id = ${"project" . $j}->id;
             ${"files_rights" . $i . $j}->path = "/directory{$i}";
             ${"files_rights" . $i . $j}->save();
             for ($k = 1; $k <= 3; $k++) {
                 if ($k == $j) {
                     $tmp = new USVN_Db_Table_GroupsToFilesRights();
                     $array = array();
                     $array["groups_id"] = ${"group" . $k}->id;
                     $array["files_rights_is_readable"] = true;
                     $array["files_rights_is_writable"] = true;
                     $array["files_rights_id"] = ${"files_rights" . $i . $j}->id;
                     $tmp = $tmp->createRow($array);
                     $tmp->save();
                 } else {
                     if ($k & 1 && $i & 1) {
                         $tmp = new USVN_Db_Table_GroupsToFilesRights();
                         $array = array();
                         $array["groups_id"] = ${"group" . $k}->id;
                         $array["files_rights_is_readable"] = true;
                         $array["files_rights_is_writable"] = false;
                         $array["files_rights_id"] = ${"files_rights" . $i . $j}->id;
                         $tmp = $tmp->createRow($array);
                         $tmp->save();
                     } else {
                         $tmp = new USVN_Db_Table_GroupsToFilesRights();
                         $array = array();
                         $array["groups_id"] = ${"group" . $k}->id;
                         $array["files_rights_is_readable"] = false;
                         $array["files_rights_is_writable"] = false;
                         $array["files_rights_id"] = ${"files_rights" . $i . $j}->id;
                         $tmp = $tmp->createRow($array);
                         $tmp->save();
                     }
                 }
             }
         }
     }
     $file = file_get_contents(Zend_Registry::get('config')->subversion->authz);
     $this->assertEquals($this->_start . "group1 = user1, user2, user3\ngroup2 = user1, user2\ngroup3 = user1, user3\nproject1 = \nproject2 = \nproject3 = \n\n\n# Project project1\n[project1:/]\n@project1 = rw\n\n[project1:/directory1]\n@group1 = rw\n@group2 = \n@group3 = r\n\n[project1:/directory2]\n@group1 = rw\n@group2 = \n@group3 = \n\n[project1:/directory3]\n@group1 = rw\n@group2 = \n@group3 = r\n\n[project1:/directory4]\n@group1 = rw\n@group2 = \n@group3 = \n\n[project1:/directory5]\n@group1 = rw\n@group2 = \n@group3 = r\n\n\n\n# Project project2\n[project2:/]\n@project2 = rw\n\n[project2:/directory1]\n@group1 = r\n@group2 = rw\n@group3 = r\n\n[project2:/directory2]\n@group1 = \n@group2 = rw\n@group3 = \n\n[project2:/directory3]\n@group1 = r\n@group2 = rw\n@group3 = r\n\n[project2:/directory4]\n@group1 = \n@group2 = rw\n@group3 = \n\n[project2:/directory5]\n@group1 = r\n@group2 = rw\n@group3 = r\n\n\n\n# Project project3\n[project3:/]\n@project3 = rw\n\n[project3:/directory1]\n@group1 = r\n@group2 = \n@group3 = rw\n\n[project3:/directory2]\n@group1 = \n@group2 = \n@group3 = rw\n\n[project3:/directory3]\n@group1 = r\n@group2 = \n@group3 = rw\n\n[project3:/directory4]\n@group1 = \n@group2 = \n@group3 = rw\n\n[project3:/directory5]\n@group1 = r\n@group2 = \n@group3 = rw\n\n", $file);
 }