예제 #1
0
 function testGetRepositoryFromFullPathAndGitRoot()
 {
     $dao = new MockGitDao();
     $projectManager = new MockProjectManager();
     $project = new MockProject();
     $project->setReturnValue('getID', 101);
     $project->setReturnValue('getUnixName', 'garden');
     $projectManager->setReturnValue('getProjectByUnixName', $project, array('garden'));
     $factory = new GitRepositoryFactory($dao, $projectManager);
     $dao->expectOnce('searchProjectRepositoryByPath', array(101, 'garden/diskinstaller.git'));
     $dao->setReturnValue('searchProjectRepositoryByPath', new MockDataAccessResult());
     $factory->getFromFullPath('/data/tuleap/gitroot/garden/diskinstaller.git');
 }
예제 #2
0
 function testGetProjectRepositoryListShouldReturnProjectRepositories()
 {
     $projectId = 42;
     $userId = 24;
     $project_repos = array(array('id' => '1', 'name' => 'a'), array('id' => '2', 'name' => 'b'));
     $sandra_repos = array(array('id' => '3', 'name' => 'c'));
     $repo_owners = TestHelper::arrayToDar(array(array('id' => '123'), array('id' => '456')));
     $dao = new MockGitDao();
     $dao->setReturnValue('getProjectRepositoryList', $project_repos, array($projectId, false, true, null));
     $dao->setReturnValue('getProjectRepositoryList', $sandra_repos, array($projectId, false, true, $userId));
     $dao->setReturnValue('getProjectRepositoriesOwners', $repo_owners, array($projectId));
     $controller = new MockGit();
     $controller->expectAt(0, 'addData', array(array('repository_list' => $project_repos, 'repositories_owners' => $repo_owners)));
     $controller->expectAt(1, 'addData', array(array('repository_list' => $sandra_repos, 'repositories_owners' => $repo_owners)));
     $action = TestHelper::getPartialMock('GitActions', array('getDao'));
     $action->setController($controller);
     $action->setReturnValue('getDao', $dao);
     $action->getProjectRepositoryList($projectId);
     $action->getProjectRepositoryList($projectId, $userId);
 }
예제 #3
0
 /**
  * This is almost the same test than testAddMailingShowRev but
  * through the higher level setUpRepository.
  * What we want to be sure it that the right repository id is set.
  */
 public function testSetUpRepositoryConfigWithRightRepoId()
 {
     $GLOBALS['sys_https_host'] = 'codendi.org';
     $prj = new MockProject($this);
     $prj->setReturnValue('getId', 1750);
     // Use real git object because we need to store values (id)
     $repo = new GitRepository();
     $repo->setPath('prj/repo.git');
     $repo->setName('repo');
     $repo->setProject($prj);
     $repo->setId(290);
     $dao = new MockGitDao($this);
     $dao->expectOnce('save');
     $dao->setReturnValue('save', 290);
     // The id we expect below
     $driver = new MockGitDriver($this);
     $driver->expectOnce('setConfig', array('/var/lib/codendi/gitroot/prj/repo.git', 'hooks.showrev', "t=%s; git show --name-status --pretty='format:URL:    https://codendi.org/plugins/git/index.php/1750/view/290/?p=repo.git&a=commitdiff&h=%%H%%nAuthor: %%an <%%ae>%%nDate:   %%aD%%n%%n%%s%%n%%b' \$t"));
     $backend = new GitBackend4SetUp($this);
     $backend->setUp($this->url_manager);
     $backend->setGitRootPath(Git_Backend_Interface::GIT_ROOT_PATH);
     $backend->setReturnValue('getDriver', $driver);
     $backend->setReturnValue('getDao', $dao);
     $backend->setUpRepository($repo);
 }
예제 #4
0
 public function testLogGitPushSuccess()
 {
     $user = new MockUser();
     $user->setReturnValue('getId', 2);
     $um = new MockUserManager();
     $um->setReturnValue('getUserByIdentifier', $user);
     $repo = new GitRepositoryTestVersion();
     $repo->setReturnValue('_getUserManager', $um);
     $dao = new MockGitDao();
     $dao->setReturnValue('logGitPush', true);
     $repo->setReturnValue('getDao', $dao);
     $this->assertTrue($repo->logGitPush('repo', 'user', 'prj', 1327577111, 3));
     $repo->expectOnce('_getUserManager');
     $um->expectOnce('getUserByIdentifier');
     $user->expectOnce('getId');
     $dao->expectOnce('logGitPush');
 }
예제 #5
0
 public function testDumpProjectRepoPermissions()
 {
     $driver = partial_mock('Git_GitoliteDriver', array('getDao', 'getPostReceiveMailManager'), array($this->_glAdmDir));
     //$driver->setAdminPath($this->_glAdmDir);
     $prj = new MockProject($this);
     $prj->setReturnValue('getUnixName', 'project1');
     $prj->setReturnValue('getId', 404);
     // List all repo
     $dao = new MockGitDao();
     $dao->expectOnce('getAllGitoliteRespositories', array(404));
     $dao->setReturnValue('getAllGitoliteRespositories', $this->arrayToDar(array('repository_id' => 4, 'repository_name' => 'test_default', 'repository_namespace' => '', 'repository_events_mailing_prefix' => "[SCM]"), array('repository_id' => 5, 'repository_name' => 'test_pimped', 'repository_namespace' => '', 'repository_events_mailing_prefix' => "[KOIN] ")));
     $driver->setReturnValue('getDao', $dao);
     $permissions_manager = PermissionsManager::instance();
     // Repo 4 (test_default): R = registered_users | W = project_members | W+ = none
     $permissions_manager->setReturnValue('getAuthorizedUgroupIds', array('2'), array(4, 'PLUGIN_GIT_READ'));
     $permissions_manager->setReturnValue('getAuthorizedUgroupIds', array('3'), array(4, 'PLUGIN_GIT_WRITE'));
     $permissions_manager->setReturnValue('getAuthorizedUgroupIds', array(), array(4, 'PLUGIN_GIT_WPLUS'));
     // Repo 5 (test_pimped): R = project_members | W = project_admin | W+ = user groups 101
     $permissions_manager->setReturnValue('getAuthorizedUgroupIds', array('3'), array(5, 'PLUGIN_GIT_READ'));
     $permissions_manager->setReturnValue('getAuthorizedUgroupIds', array('4'), array(5, 'PLUGIN_GIT_WRITE'));
     $permissions_manager->setReturnValue('getAuthorizedUgroupIds', array('125'), array(5, 'PLUGIN_GIT_WPLUS'));
     // Notified emails
     $notifMgr = new MockGit_PostReceiveMailManager();
     $notifMgr->setReturnValue('getNotificationMailsByRepositoryId', array('*****@*****.**', '*****@*****.**'), array(4));
     $notifMgr->setReturnValue('getNotificationMailsByRepositoryId', array(), array(5));
     $driver->setReturnValue('getPostReceiveMailManager', $notifMgr);
     $driver->dumpProjectRepoConf($prj);
     // Check every thing was commited
     $this->assertEmptyGitStatus();
     // Ensure file is correct
     $result = file_get_contents($this->_glAdmDir . '/conf/projects/project1.conf');
     $expected = file_get_contents($this->_fixDir . '/perms/project1-full.conf');
     $this->assertIdentical($expected, $result);
     // Check that corresponding project conf exists in main file conf
     $this->assertTrue(is_file($this->_glAdmDir . '/conf/gitolite.conf'));
     $gitoliteConf = file_get_contents($this->_glAdmDir . '/conf/gitolite.conf');
     $this->assertWantedPattern('#^include "projects/project1.conf"$#m', $gitoliteConf);
 }