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