Skip to content

Commit

Permalink
SONAR-19888 Update test framework to not use addProjectPermission(jav…
Browse files Browse the repository at this point in the history
…a.lang.String, org.sonar.db.component.ComponentDto...)
  • Loading branch information
leo-geoffroy-sonarsource authored and sonartech committed Aug 31, 2023
1 parent 77c43ec commit 12639b9
Show file tree
Hide file tree
Showing 31 changed files with 436 additions and 318 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,10 @@ public static ComponentDto newProjectCopy(ProjectData project, ProjectData view)
return newProjectCopy(Uuids.createFast(), project.getMainBranchComponent(), view.getMainBranchComponent());
}

public static ComponentDto newProjectCopy(ProjectData project, PortfolioData view) {
return newProjectCopy(Uuids.createFast(), project.getMainBranchComponent(), view.getRootComponent());
}

public static ComponentDto newProjectCopy(ComponentDto project, ComponentDto view) {
return newProjectCopy(Uuids.createFast(), project, view);
}
Expand Down Expand Up @@ -254,10 +258,23 @@ public static BranchDto newMainBranchDto(ComponentDto branchComponent, String pr
.setBranchType(BranchType.BRANCH);
}

public static BranchDto newMainBranchDto(String projectUUid) {
return new BranchDto()
.setKey(DEFAULT_MAIN_BRANCH_NAME)
.setIsMain(true)
.setUuid(Uuids.createFast())
.setProjectUuid(projectUUid)
.setBranchType(BranchType.BRANCH);
}

public static ProjectDto newProjectDto() {
return newProjectDto("uuid").setPrivate(true);
}

public static ProjectDto newProjectDto(String projectUuid) {
return new ProjectDto()
.setKey("projectKey")
.setUuid("uuid")
.setUuid(projectUuid)
.setName("projectName")
.setQualifier(Qualifiers.PROJECT);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,8 @@ public void submit_stores_report() {
public void submit_a_report_on_existing_project() {
ProjectData project = db.components().insertPrivateProject();
UserDto user = db.users().insertUser();
userSession.logIn(user).addProjectPermission(SCAN.getKey(), project.getMainBranchComponent());
userSession.logIn(user).addProjectPermission(SCAN.getKey(), project.getProjectDto())
.addProjectBranchMapping(project.projectUuid(), project.getMainBranchComponent());
mockSuccessfulPrepareSubmitCall();

underTest.submit(project.projectKey(), project.getProjectDto().getName(), emptyMap(), IOUtils.toInputStream("{binary}", UTF_8));
Expand Down Expand Up @@ -255,11 +256,13 @@ public void user_with_scan_permission_is_allowed_to_submit_a_report_on_existing_

@Test
public void submit_a_report_on_existing_project_with_project_scan_permission() {
ComponentDto project = db.components().insertPrivateProject().getMainBranchComponent();
userSession.addProjectPermission(SCAN.getKey(), project);
ProjectData projectData = db.components().insertPrivateProject();
ProjectDto project = projectData.getProjectDto();
userSession.addProjectPermission(SCAN.getKey(), project)
.addProjectBranchMapping(project.getUuid(), projectData.getMainBranchComponent());
mockSuccessfulPrepareSubmitCall();

underTest.submit(project.getKey(), project.name(), emptyMap(), IOUtils.toInputStream("{binary}", UTF_8));
underTest.submit(project.getKey(), project.getName(), emptyMap(), IOUtils.toInputStream("{binary}", UTF_8));

verify(queue).submit(any(CeTaskSubmit.class));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -436,7 +436,7 @@ public void fail_if_component_does_not_exist() {
public void fail_if_component_is_removed() {
ProjectData projectData = db.components().insertPrivateProject();
ComponentDto mainBranch = projectData.getMainBranchComponent();
userSession.addProjectPermission(USER, mainBranch)
userSession.addProjectPermission(USER, projectData.getProjectDto())
.registerBranches(projectData.getMainBranchDto());
db.components().insertComponent(newFileDto(mainBranch).setKey("file-key").setEnabled(false));

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -377,13 +377,13 @@ public void return_projects_composing_a_view() {

@Test
public void branch() {
ComponentDto project = db.components().insertPrivateProject().getMainBranchComponent();
userSession.addProjectPermission(UserRole.USER, project);
ProjectData project = db.components().insertPrivateProject();
userSession.addProjectPermission(UserRole.USER, project.getProjectDto());
String branchKey = "my_branch";
ComponentDto branch = db.components().insertProjectBranch(project, b -> b.setKey(branchKey));
userSession.addProjectBranchMapping(project.uuid(), branch);
ComponentDto directory = db.components().insertComponent(newDirectoryOnBranch(branch, "dir", project.uuid()));
ComponentDto file = db.components().insertComponent(ComponentTesting.newFileDto(directory, project.uuid()));
ComponentDto branch = db.components().insertProjectBranch(project.getMainBranchComponent(), b -> b.setKey(branchKey));
userSession.addProjectBranchMapping(project.projectUuid(), branch);
ComponentDto directory = db.components().insertComponent(newDirectoryOnBranch(branch, "dir", project.mainBranchUuid()));
ComponentDto file = db.components().insertComponent(ComponentTesting.newFileDto(directory, project.mainBranchUuid()));

TreeWsResponse response = ws.newRequest()
.setParam(PARAM_COMPONENT, branch.getKey())
Expand All @@ -400,9 +400,10 @@ public void branch() {

@Test
public void dont_show_branch_if_main_branch() {
ComponentDto project = db.components().insertPrivateProject().getMainBranchComponent();
ComponentDto file = db.components().insertComponent(ComponentTesting.newFileDto(project));
userSession.addProjectPermission(UserRole.USER, project);
ProjectData project = db.components().insertPrivateProject();
ComponentDto file = db.components().insertFile(project.getMainBranchDto());
userSession.addProjectPermission(UserRole.USER, project.getProjectDto())
.addProjectBranchMapping(project.projectUuid(), project.getMainBranchComponent());

TreeWsResponse response = ws.newRequest()
.setParam(PARAM_COMPONENT, file.getKey())
Expand All @@ -415,13 +416,13 @@ public void dont_show_branch_if_main_branch() {

@Test
public void pull_request() {
ComponentDto project = db.components().insertPrivateProject().getMainBranchComponent();
userSession.addProjectPermission(UserRole.USER, project);
ProjectData project = db.components().insertPrivateProject();
userSession.addProjectPermission(UserRole.USER, project.getProjectDto());
String pullRequestId = "pr-123";
ComponentDto branch = db.components().insertProjectBranch(project, b -> b.setKey(pullRequestId).setBranchType(PULL_REQUEST));
userSession.addProjectBranchMapping(project.uuid(), branch);
ComponentDto directory = db.components().insertComponent(newDirectoryOnBranch(branch, "dir", project.uuid()));
ComponentDto file = db.components().insertComponent(ComponentTesting.newFileDto(directory, project.uuid()));
ComponentDto branch = db.components().insertProjectBranch(project.getMainBranchComponent(), b -> b.setKey(pullRequestId).setBranchType(PULL_REQUEST));
userSession.addProjectBranchMapping(project.projectUuid(), branch);
ComponentDto directory = db.components().insertComponent(newDirectoryOnBranch(branch, "dir", project.mainBranchUuid()));
ComponentDto file = db.components().insertComponent(ComponentTesting.newFileDto(directory, project.mainBranchUuid()));

TreeWsResponse response = ws.newRequest()
.setParam(PARAM_COMPONENT, directory.getKey())
Expand All @@ -437,13 +438,13 @@ public void pull_request() {

@Test
public void fail_when_not_enough_privileges() {
ComponentDto project = db.components().insertPrivateProject("project-uuid").getMainBranchComponent();
ProjectData project = db.components().insertPrivateProject("project-uuid");
userSession.logIn()
.addProjectPermission(UserRole.CODEVIEWER, project);
.addProjectPermission(UserRole.CODEVIEWER, project.getProjectDto());
db.commit();

TestRequest request = ws.newRequest()
.setParam(PARAM_COMPONENT, project.getKey());
.setParam(PARAM_COMPONENT, project.projectKey());
assertThatThrownBy(request::execute)
.isInstanceOf(ForbiddenException.class);
}
Expand Down Expand Up @@ -531,16 +532,16 @@ public void fail_when_no_base_component_parameter() {

@Test
public void fail_if_branch_does_not_exist() {
ComponentDto project = db.components().insertPrivateProject().getMainBranchComponent();
userSession.addProjectPermission(UserRole.USER, project);
db.components().insertProjectBranch(project, b -> b.setKey("my_branch"));
ProjectData project = db.components().insertPrivateProject();
userSession.addProjectPermission(UserRole.USER, project.getProjectDto());
db.components().insertProjectBranch(project.getProjectDto(), b -> b.setKey("my_branch"));

TestRequest request = ws.newRequest()
.setParam(PARAM_COMPONENT, project.getKey())
.setParam(PARAM_COMPONENT, project.projectKey())
.setParam(PARAM_BRANCH, "another_branch");
assertThatThrownBy(request::execute)
.isInstanceOf(NotFoundException.class)
.hasMessage(format("Component '%s' on branch '%s' not found", project.getKey(), "another_branch"));
.hasMessage(format("Component '%s' on branch '%s' not found", project.projectKey(), "another_branch"));
}

private static ComponentDto newFileDto(ComponentDto moduleOrProject, @Nullable ComponentDto directory, int i) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -136,14 +136,15 @@ public void many_issues_events() {
@Test
public void does_not_return_old_issue() {
userSession.logIn();
ComponentDto project = db.components().insertPrivateProject().getMainBranchComponent();
userSession.addProjectPermission(USER, project);
SnapshotDto analysis = insertAnalysis(project, 1_500_000_000_000L);
db.issues().insert(db.rules().insert(), project, project, i -> i.setIssueCreationDate(new Date(analysis.getCreatedAt() - 10_000L)));
ProjectData project = db.components().insertPrivateProject();
userSession.addProjectPermission(USER, project.getProjectDto());
SnapshotDto analysis = insertAnalysis(project.getMainBranchComponent(), 1_500_000_000_000L);
db.issues().insert(db.rules().insert(), project.getMainBranchComponent(), project.getMainBranchComponent(),
i -> i.setIssueCreationDate(new Date(analysis.getCreatedAt() - 10_000L)));
issueIndexer.indexAllIssues();

SearchEventsWsResponse result = ws.newRequest()
.setParam(PARAM_PROJECTS, project.getKey())
.setParam(PARAM_PROJECTS, project.projectKey())
.setParam(PARAM_FROM, formatDateTime(analysis.getCreatedAt() - 1_000L))
.executeProtobuf(SearchEventsWsResponse.class);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import org.sonar.db.DbSession;
import org.sonar.db.DbTester;
import org.sonar.db.component.ComponentDto;
import org.sonar.db.component.ProjectData;
import org.sonar.db.project.ProjectDto;
import org.sonar.db.property.PropertyDto;
import org.sonar.db.property.PropertyQuery;
Expand Down Expand Up @@ -84,7 +85,7 @@ public void add_a_project() {

@Test
public void fail_when_no_browse_permission_on_the_project() {
ComponentDto project = db.components().insertPrivateProject().getMainBranchComponent();
ProjectDto project = db.components().insertPrivateProject().getProjectDto();
userSession.logIn().addProjectPermission(UserRole.ADMIN, project);

assertThatThrownBy(() -> call(project.getKey()))
Expand All @@ -109,10 +110,10 @@ public void fail_when_user_is_not_authenticated() {

@Test
public void fail_on_file() {
ComponentDto project = db.components().insertPrivateProject().getMainBranchComponent();
ComponentDto file = db.components().insertComponent(newFileDto(project));
ProjectData project = db.components().insertPrivateProject();
ComponentDto file = db.components().insertComponent(newFileDto(project.getMainBranchComponent()));
UserDto user = db.users().insertUser();
userSession.logIn(user).addProjectPermission(USER, project);
userSession.logIn(user).addProjectPermission(USER, project.getProjectDto());

assertThatThrownBy(() -> call(file.getKey()))
.isInstanceOf(NotFoundException.class)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -813,10 +813,9 @@ public static Object[][] onlyMineParamValues() {
@Test
public void fail_if_hotspots_provided_with_onlyMine_param() {
ProjectData projectData = dbTester.components().insertPrivateProject();
ComponentDto project = projectData.getMainBranchComponent();

userSessionRule.registerProjects(projectData.getProjectDto());
userSessionRule.logIn().addProjectPermission(USER, project);
userSessionRule.logIn().addProjectPermission(USER, projectData.getProjectDto());

TestRequest request = actionTester.newRequest()
.setParam(PARAM_HOTSPOTS, IntStream.range(2, 10).mapToObj(String::valueOf).collect(joining(",")))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,12 @@
import org.junit.Test;
import org.sonar.api.utils.System2;
import org.sonar.db.DbTester;
import org.sonar.db.component.BranchDto;
import org.sonar.db.component.ComponentDto;
import org.sonar.db.component.ProjectData;
import org.sonar.db.issue.IssueDbTester;
import org.sonar.db.issue.IssueDto;
import org.sonar.db.project.ProjectDto;
import org.sonar.db.rule.RuleDbTester;
import org.sonar.db.rule.RuleDto;
import org.sonar.server.exceptions.ForbiddenException;
Expand Down Expand Up @@ -70,7 +73,7 @@ public void fail_when_issue_key_does_not_exist() {
IssueDto issueDto = insertIssue();
addProjectPermission(issueDto, USER);

assertThatThrownBy(() -> underTest.getByKey(db.getSession(), "UNKNOWN"))
assertThatThrownBy(() -> underTest.getByKey(db.getSession(), "UNKNOWN"))
.isInstanceOf(NotFoundException.class)
.hasMessage("Issue with key 'UNKNOWN' does not exist");
}
Expand All @@ -86,12 +89,16 @@ public void fail_when_not_enough_permission() {

private IssueDto insertIssue() {
RuleDto rule = ruleDbTester.insert(newRule());
ComponentDto project = db.components().insertPrivateProject().getMainBranchComponent();
ComponentDto file = db.components().insertComponent(newFileDto(project));
return issueDbTester.insert(newIssue(rule, project, file));
ProjectData project = db.components().insertPrivateProject();
ComponentDto file = db.components().insertComponent(newFileDto(project.getMainBranchComponent()));
return issueDbTester.insert(newIssue(rule, project.getMainBranchComponent(), file));
}

private void addProjectPermission(IssueDto issueDto, String permission) {
userSession.addProjectPermission(permission, db.getDbClient().componentDao().selectByUuid(db.getSession(), issueDto.getProjectUuid()).get());
BranchDto branchDto = db.getDbClient().branchDao().selectByUuid(db.getSession(), issueDto.getProjectUuid())
.orElseThrow(() -> new IllegalStateException("Couldn't find branch :" + issueDto.getProjectUuid()));
ProjectDto projectDto = db.getDbClient().projectDao().selectByUuid(db.getSession(), branchDto.getProjectUuid()).get();
userSession.addProjectPermission(permission, projectDto)
.registerBranches(branchDto);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,11 @@
import org.sonar.core.issue.DefaultIssue;
import org.sonar.core.issue.FieldDiffs;
import org.sonar.db.DbTester;
import org.sonar.db.component.BranchDto;
import org.sonar.db.component.ComponentDto;
import org.sonar.db.issue.IssueDto;
import org.sonar.db.issue.IssueTesting;
import org.sonar.db.project.ProjectDto;
import org.sonar.db.rule.RuleDto;
import org.sonar.server.tester.AnonymousMockUserSession;
import org.sonar.server.tester.UserSessionRule;
Expand Down Expand Up @@ -120,11 +122,14 @@ public void support_only_issues_with_issue_admin_permission() {
}

private void setUserWithBrowseAndAdministerIssuePermission(IssueDto issue) {
ComponentDto project = db.getDbClient().componentDao().selectByUuid(db.getSession(), issue.getProjectUuid()).get();
ComponentDto component = db.getDbClient().componentDao().selectByUuid(db.getSession(), issue.getComponentUuid()).get();

BranchDto branchDto = db.getDbClient().branchDao().selectByUuid(db.getSession(), issue.getProjectUuid())
.orElseThrow(() -> new IllegalStateException("Couldn't find branch :" + issue.getProjectUuid()));
ProjectDto project = db.getDbClient().projectDao().selectByUuid(db.getSession(), branchDto.getProjectUuid()).get();
userSession.logIn(USER_LOGIN)
.addProjectPermission(ISSUE_ADMIN, project, component)
.addProjectPermission(USER, project, component);
.addProjectPermission(ISSUE_ADMIN, project)
.addProjectPermission(USER, project)
.registerBranches(branchDto);
}

private IssueDto newIssue() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,11 @@
import org.sonar.core.issue.DefaultIssue;
import org.sonar.core.issue.FieldDiffs;
import org.sonar.db.DbTester;
import org.sonar.db.component.BranchDto;
import org.sonar.db.component.ComponentDto;
import org.sonar.db.issue.IssueDto;
import org.sonar.db.issue.IssueTesting;
import org.sonar.db.project.ProjectDto;
import org.sonar.db.rule.RuleDto;
import org.sonar.server.tester.UserSessionRule;

Expand Down Expand Up @@ -115,11 +117,13 @@ public void support_only_issues_with_issue_admin_permission() {
}

private void setUserWithBrowseAndAdministerIssuePermission(IssueDto issueDto) {
ComponentDto project = db.getDbClient().componentDao().selectByUuid(db.getSession(), issueDto.getProjectUuid()).get();
ComponentDto component = db.getDbClient().componentDao().selectByUuid(db.getSession(), issueDto.getComponentUuid()).get();
BranchDto branchDto = db.getDbClient().branchDao().selectByUuid(db.getSession(), issueDto.getProjectUuid())
.orElseThrow(() -> new IllegalStateException("Couldn't find branch :" + issueDto.getProjectUuid()));
ProjectDto project = db.getDbClient().projectDao().selectByUuid(db.getSession(), branchDto.getProjectUuid()).get();
userSession.logIn(USER_LOGIN)
.addProjectPermission(ISSUE_ADMIN, project, component)
.addProjectPermission(USER, project, component);
.addProjectPermission(ISSUE_ADMIN, project)
.addProjectPermission(USER, project)
.registerBranches(branchDto);
}

private IssueDto newIssue() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,13 @@
import org.sonar.api.rules.RuleType;
import org.sonar.core.issue.DefaultIssue;
import org.sonar.core.util.Uuids;
import org.sonar.db.component.BranchDto;
import org.sonar.db.component.BranchType;
import org.sonar.db.component.ComponentDto;
import org.sonar.db.component.ComponentTesting;
import org.sonar.db.issue.IssueDto;
import org.sonar.db.issue.IssueTesting;
import org.sonar.db.project.ProjectDto;
import org.sonar.db.rule.RuleDto;
import org.sonar.server.issue.workflow.FunctionExecutor;
import org.sonar.server.issue.workflow.IssueWorkflow;
Expand Down Expand Up @@ -113,6 +116,7 @@ public void should_support_all_issues() {
assertThat(action.supports(new DefaultIssue().setResolution(Issue.RESOLUTION_FIXED))).isTrue();
}


private IssueDto newIssue() {
RuleDto rule = newRule().setUuid(Uuids.createFast());
ComponentDto project = ComponentTesting.newPrivateProjectDto();
Expand All @@ -121,7 +125,10 @@ private IssueDto newIssue() {
}

private void loginAndAddProjectPermission(String login, String permission) {
userSession.logIn(login).addProjectPermission(permission, ComponentTesting.newPrivateProjectDto(issue.projectUuid()));
ProjectDto projectDto = ComponentTesting.newProjectDto();
BranchDto branchDto = ComponentTesting.newBranchDto(projectDto.getUuid(), BranchType.BRANCH).setIsMain(true).setUuid(issue.projectUuid());
userSession.logIn(login).addProjectPermission(permission, projectDto)
.registerBranches(branchDto);
}

}

0 comments on commit 12639b9

Please sign in to comment.