public function testExecutes_ForkRepositories_ActionWithAListOfRepos() { $groupId = 101; $repo = new GitRepository(); $repos = array($repo); $user = new User(); $user->setId(42); $user->setUserName('Ben'); $path = userRepoPath('Ben', 'toto'); $project = new MockProject(); $projectManager = new MockProjectManager(); $projectManager->setReturnValue('getProject', $project, array($groupId)); $factory = new MockGitRepositoryFactory(); $factory->setReturnValue('getRepositoryById', $repo); $git = TestHelper::getPartialMock('Git', array('definePermittedActions', '_informAboutPendingEvents', 'addAction', 'addView', 'checkSynchronizerToken')); $git->setGroupId($groupId); $git->setProjectManager($projectManager); $git->expectAt(0, 'addAction', array('getProjectRepositoryList', array($groupId))); $git->expectAt(1, 'addAction', array('fork', array($repos, $project, $path, GitRepository::REPO_SCOPE_INDIVIDUAL, $user, $GLOBALS['HTML'], '/plugins/git/?group_id=101&user=42'))); $request = new Codendi_Request(array('repos' => array('1001'), 'path' => 'toto')); $git->setFactory($factory); $git->_doDispatchForkRepositories($request, $user); }
function testUserRepoPath_ComplainsWhenUserTriesToByPathItsHomeDirectory() { $this->expectException('MalformedPathException'); $this->assertEqual('u/nicolas/root', userRepoPath('nicolas', '/users/../root')); }
public function _doDispatchForkRepositories($request, $user) { $this->addAction('getProjectRepositoryList', array($this->groupId)); $this->checkSynchronizerToken('/plugins/git/?group_id=' . (int) $this->groupId . '&action=fork_repositories'); $repos_ids = array(); $valid = new Valid_String('path'); $valid->required(); $path = ''; if ($request->valid($valid)) { $path = trim($request->get('path')); } $path = userRepoPath($user->getUserName(), $path); $forkPermissions = $this->getForkPermissionsFromRequest($request); $valid = new Valid_String('repos'); $valid->required(); $repos_ids = explode(',', $request->get('repos')); $to_project = $this->projectManager->getProject($this->groupId); $repos = $this->getRepositoriesFromIds($repos_ids); $scope = GitRepository::REPO_SCOPE_INDIVIDUAL; $redirect_url = '/plugins/git/?group_id=' . (int) $this->groupId . '&user='******'fork', array($repos, $to_project, $path, $scope, $user, $GLOBALS['HTML'], $redirect_url, $forkPermissions)); }