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'); }
/** * 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); }
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); }