Пример #1
0
 function testUpdateSVNAccess()
 {
     $user1 = mock('PFUser');
     $user1->setReturnValue('getUserName', 'user1');
     $user2 = mock('PFUser');
     $user2->setReturnValue('getUserName', 'user2');
     $user3 = mock('PFUser');
     $user3->setReturnValue('getUserName', 'user3');
     $user4 = mock('PFUser');
     $user4->setReturnValue('getUserName', 'user4');
     $user5 = mock('PFUser');
     $user5->setReturnValue('getUserName', 'user5');
     $project = new MockProject($this);
     $project->setReturnValue('getUnixNameMixedCase', 'TestProj');
     $project->setReturnValue('getSVNRootPath', $GLOBALS['svn_prefix'] . '/TestProj');
     $project->setReturnValue('isSVNTracked', true);
     $proj_members = array("0" => array("user_name" => "user1", "user_id" => "1"), "1" => array("user_name" => "user2", "user_id" => "2"), "2" => array("user_name" => "user3", "user_id" => "3"));
     $project->setReturnValue('getMembersUserNames', $proj_members);
     $project->setReturnValue('getMembers', array($user1, $user2, $user3));
     $pm = new MockProjectManager();
     $pm->setReturnReference('getProject', $project, array(142));
     $ugroups = array("0" => array("name" => "QA", "ugroup_id" => "104"), "1" => array("name" => "Customers", "ugroup_id" => "102"));
     $ugdao = new MockUGroupDao();
     $ugdao->setReturnValue('searchByGroupId', $ugroups);
     $ugroup = new MockProjectUGroup($this);
     $ugroup->setReturnValueAt(0, 'getMembersUserName', array('user1', 'user2', 'user3'));
     $ugroup->setReturnValueAt(0, 'getMembers', array($user1, $user2, $user3));
     $ugroup->setReturnValueAt(1, 'getMembersUserName', array('user1', 'user4'));
     $ugroup->setReturnValueAt(1, 'getMembers', array($user1, $user4));
     $ugroup->setReturnValueAt(2, 'getMembersUserName', array('user1', 'user2', 'user3'));
     $ugroup->setReturnValueAt(2, 'getMembers', array($user1, $user2, $user3));
     $ugroup->setReturnValueAt(3, 'getMembersUserName', array('user1', 'user4'));
     $ugroup->setReturnValueAt(3, 'getMembers', array($user1, $user4));
     $ugroup->setReturnValueAt(4, 'getMembersUserName', array('user1', 'user2', 'user3'));
     $ugroup->setReturnValueAt(4, 'getMembers', array($user1, $user2, $user3));
     $ugroup->setReturnValueAt(5, 'getMembersUserName', array('user1', 'user4', 'user5'));
     $ugroup->setReturnValueAt(5, 'getMembers', array($user1, $user4, $user5));
     $ugroup->setReturnValueAt(0, 'getName', "QA");
     $ugroup->setReturnValueAt(1, 'getName', "QA");
     $ugroup->setReturnValueAt(4, 'getName', "QA");
     $ugroup->setReturnValueAt(5, 'getName', "QA");
     $ugroup->setReturnValueAt(8, 'getName', "QA");
     $ugroup->setReturnValueAt(9, 'getName', "QA");
     $ugroup->setReturnValueAt(2, 'getName', "customers");
     $ugroup->setReturnValueAt(3, 'getName', "customers");
     $ugroup->setReturnValueAt(6, 'getName', "customers");
     $ugroup->setReturnValueAt(7, 'getName', "customers");
     $ugroup->setReturnValueAt(10, 'getName', "customers");
     $ugroup->setReturnValueAt(11, 'getName', "customers");
     $this->backend->setReturnValue('getProjectManager', $pm);
     $this->backend->setReturnValue('getUGroupFromRow', $ugroup);
     $this->backend->setReturnValue('getUGroupDao', $ugdao);
     $this->assertEqual($this->backend->createProjectSVN(142), True);
     $this->assertTrue(is_dir($GLOBALS['svn_prefix'] . "/TestProj"), "SVN dir should be created");
     $this->assertTrue(is_file($GLOBALS['svn_prefix'] . "/TestProj/.SVNAccessFile"), "SVN access file should be created");
     $saf = new MockSVNAccessFile();
     $this->backend->setReturnValue('_getSVNAccessFile', $saf);
     // Update without modification
     $this->assertEqual($this->backend->updateSVNAccess(142, $GLOBALS['svn_prefix'] . '/TestProj'), True);
     $this->assertTrue(is_file($GLOBALS['svn_prefix'] . "/TestProj/.SVNAccessFile"), "SVN access file should exist");
     $this->assertTrue(is_file($GLOBALS['svn_prefix'] . "/TestProj/.SVNAccessFile.new"), "SVN access file (.new) should be created");
     $this->assertFalse(is_file($GLOBALS['svn_prefix'] . "/TestProj/.SVNAccessFile.old"), "SVN access file (.old) should not be created");
     // Cleanup
     $this->backend->recurseDeleteInDir($GLOBALS['svn_prefix'] . "/TestProj");
     rmdir($GLOBALS['svn_prefix'] . "/TestProj");
 }