From 398748bdeab49996010a6c4624bb100ce1b7509b Mon Sep 17 00:00:00 2001 From: =?utf8?q?S=C3=A9bastien=20Lesaint?= Date: Wed, 19 Apr 2017 10:48:19 +0200 Subject: [PATCH] SONAR-9140 only ComponentDto can be used to populate UserSessionRule --- .../org/sonar/server/user/UserSession.java | 6 +++ .../sonar/server/batch/IssuesActionTest.java | 2 +- .../batch/ProjectDataLoaderMediumTest.java | 34 ++++++------ .../server/batch/ProjectDataLoaderTest.java | 8 +-- .../server/ce/ws/ActivityActionTest.java | 8 +-- .../ce/ws/ActivityStatusActionTest.java | 5 +- .../server/ce/ws/ComponentActionTest.java | 16 +++--- .../sonar/server/ce/ws/TaskActionTest.java | 4 +- .../ComponentServiceUpdateKeyTest.java | 4 +- .../server/component/ws/AppActionTest.java | 16 +++--- .../server/component/ws/ShowActionTest.java | 13 ++--- .../server/component/ws/TreeActionTest.java | 6 +-- .../queue/ReportSubmitterTest.java | 16 +++--- .../server/duplication/ws/ShowActionTest.java | 4 +- .../server/favorite/ws/AddActionTest.java | 11 ++-- .../sonar/server/issue/ActionFinderTest.java | 3 +- .../sonar/server/issue/IssueFinderTest.java | 11 ++-- .../server/issue/IssueQueryFactoryTest.java | 2 +- .../server/issue/IssueServiceMediumTest.java | 2 +- .../server/issue/SetSeverityActionTest.java | 28 +++++----- .../sonar/server/issue/SetTypeActionTest.java | 23 ++++---- .../server/issue/TransitionActionTest.java | 8 ++- .../server/issue/TransitionServiceTest.java | 2 +- .../server/issue/ws/AddCommentActionTest.java | 12 +++-- .../server/issue/ws/AssignActionTest.java | 17 +++--- .../server/issue/ws/BulkChangeActionTest.java | 2 +- .../server/issue/ws/ChangelogActionTest.java | 39 ++++++++------ .../issue/ws/DeleteCommentActionTest.java | 14 +++-- .../issue/ws/DoTransitionActionTest.java | 14 ++--- .../issue/ws/EditCommentActionTest.java | 18 ++++--- .../ws/SearchActionComponentsMediumTest.java | 8 +-- .../issue/ws/SearchActionMediumTest.java | 4 +- .../issue/ws/SetSeverityActionTest.java | 21 +++++--- .../server/issue/ws/SetTagsActionTest.java | 26 +++++---- .../server/issue/ws/SetTypeActionTest.java | 23 +++++--- .../sonar/server/issue/ws/TagsActionTest.java | 2 +- .../measure/custom/ws/CreateActionTest.java | 52 +++++------------- .../measure/custom/ws/DeleteActionTest.java | 2 +- .../measure/custom/ws/MetricsActionTest.java | 4 +- .../measure/custom/ws/SearchActionTest.java | 4 +- .../measure/custom/ws/UpdateActionTest.java | 2 +- .../measure/ws/ComponentActionTest.java | 4 +- .../measure/ws/ComponentTreeActionTest.java | 6 +-- .../measure/ws/SearchHistoryActionTest.java | 12 ++--- .../permission/ws/AddGroupActionTest.java | 2 +- .../permission/ws/AddUserActionTest.java | 2 +- .../permission/ws/GroupsActionTest.java | 2 +- .../permission/ws/RemoveGroupActionTest.java | 2 +- .../permission/ws/RemoveUserActionTest.java | 2 +- .../SearchProjectPermissionsActionTest.java | 4 +- .../server/permission/ws/UsersActionTest.java | 2 +- .../server/project/ws/DeleteActionTest.java | 19 ++++--- .../ws/CreateEventActionTest.java | 3 +- .../projectanalysis/ws/DeleteActionTest.java | 2 +- .../ws/DeleteEventActionTest.java | 2 +- .../projectanalysis/ws/SearchActionTest.java | 14 ++--- .../ws/UpdateEventActionTest.java | 5 +- .../projectlink/ws/CreateActionTest.java | 2 +- .../projectlink/ws/DeleteActionTest.java | 4 +- .../projectlink/ws/SearchActionTest.java | 6 +-- .../server/projecttag/ws/SetActionTest.java | 4 +- .../server/property/ws/IndexActionTest.java | 8 +-- .../qualitygate/ws/DeselectActionTest.java | 4 +- .../ws/GetByProjectActionTest.java | 7 ++- .../ws/ProjectStatusActionTest.java | 14 ++--- .../qualitygate/ws/SelectActionTest.java | 4 +- .../ws/AddProjectActionTest.java | 2 +- .../ws/RemoveProjectActionTest.java | 2 +- .../setting/ws/ListDefinitionsActionTest.java | 8 +-- .../server/setting/ws/ResetActionTest.java | 4 +- .../server/setting/ws/SetActionTest.java | 2 +- .../server/setting/ws/ValuesActionTest.java | 16 +++--- .../server/source/ws/HashActionTest.java | 11 ++-- .../server/source/ws/IndexActionTest.java | 6 +-- .../server/source/ws/LinesActionTest.java | 21 ++++---- .../sonar/server/source/ws/RawActionTest.java | 2 +- .../sonar/server/source/ws/ScmActionTest.java | 34 +++++------- .../server/source/ws/ShowActionTest.java | 6 +-- .../test/ws/CoveredFilesActionTest.java | 20 ++++--- .../sonar/server/test/ws/ListActionTest.java | 26 ++++----- .../tester/AbstractMockUserSession.java | 28 +++++----- .../sonar/server/tester/UserSessionRule.java | 11 ++-- .../server/ui/ws/ComponentActionTest.java | 54 +++++++++---------- .../ws/WebhookDeliveriesActionTest.java | 12 ++--- .../webhook/ws/WebhookDeliveryActionTest.java | 6 +-- 85 files changed, 475 insertions(+), 428 deletions(-) diff --git a/server/sonar-server/src/main/java/org/sonar/server/user/UserSession.java b/server/sonar-server/src/main/java/org/sonar/server/user/UserSession.java index 379192f6b29..06aa9ca0004 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/user/UserSession.java +++ b/server/sonar-server/src/main/java/org/sonar/server/user/UserSession.java @@ -111,7 +111,10 @@ public interface UserSession { * Using {@link #hasComponentPermission(String, ComponentDto)} is recommended * because it does not have to load project if the referenced component * is not a project. + * + * @deprecated use {@link #hasComponentPermission(String, ComponentDto)} instead */ + @Deprecated boolean hasComponentUuidPermission(String permission, String componentUuid); /** @@ -123,7 +126,10 @@ public interface UserSession { /** * Ensures that {@link #hasComponentUuidPermission(String, String)} is {@code true}, * otherwise throws a {@link org.sonar.server.exceptions.ForbiddenException}. + * + * @deprecated use {@link #checkComponentPermission(String, ComponentDto)} instead */ + @Deprecated UserSession checkComponentUuidPermission(String permission, String componentUuid); /** diff --git a/server/sonar-server/src/test/java/org/sonar/server/batch/IssuesActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/batch/IssuesActionTest.java index da684380a75..b5c4552c2c7 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/batch/IssuesActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/batch/IssuesActionTest.java @@ -311,7 +311,7 @@ public class IssuesActionTest { } private void addBrowsePermissionOnComponent(ComponentDto project) { - userSessionRule.addProjectUuidPermissions(UserRole.USER, project.uuid()); + userSessionRule.addProjectPermission(UserRole.USER, project); } private ServerIssue call(String componentKey) { diff --git a/server/sonar-server/src/test/java/org/sonar/server/batch/ProjectDataLoaderMediumTest.java b/server/sonar-server/src/test/java/org/sonar/server/batch/ProjectDataLoaderMediumTest.java index 13bc7138812..8c70e8e7405 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/batch/ProjectDataLoaderMediumTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/batch/ProjectDataLoaderMediumTest.java @@ -88,7 +88,7 @@ public class ProjectDataLoaderMediumTest { OrganizationDto organizationDto = OrganizationTesting.newOrganizationDto(); dbClient.organizationDao().insert(dbSession, organizationDto); ComponentDto project = ComponentTesting.newProjectDto(organizationDto); - userSessionRule.logIn().addProjectUuidPermissions(SCAN_EXECUTION, project.uuid()); + userSessionRule.logIn().addProjectPermission(SCAN_EXECUTION, project); dbClient.componentDao().insert(dbSession, project); addDefaultProfile(); @@ -112,7 +112,7 @@ public class ProjectDataLoaderMediumTest { OrganizationDto organizationDto = OrganizationTesting.newOrganizationDto(); dbClient.organizationDao().insert(dbSession, organizationDto); ComponentDto project = ComponentTesting.newProjectDto(organizationDto); - userSessionRule.logIn("john").addProjectUuidPermissions(SCAN_EXECUTION, project.projectUuid()); + userSessionRule.logIn("john").addProjectPermission(SCAN_EXECUTION, project); dbClient.componentDao().insert(dbSession, project); addDefaultProfile(); @@ -136,7 +136,7 @@ public class ProjectDataLoaderMediumTest { OrganizationDto organizationDto = OrganizationTesting.newOrganizationDto(); dbClient.organizationDao().insert(dbSession, organizationDto); ComponentDto project = ComponentTesting.newProjectDto(organizationDto); - userSessionRule.logIn("john").addProjectUuidPermissions(UserRole.USER, project.uuid()); + userSessionRule.logIn("john").addProjectPermission(UserRole.USER, project); dbClient.componentDao().insert(dbSession, project); addDefaultProfile(); @@ -158,7 +158,7 @@ public class ProjectDataLoaderMediumTest { OrganizationDto organizationDto = OrganizationTesting.newOrganizationDto(); dbClient.organizationDao().insert(dbSession, organizationDto); ComponentDto project = ComponentTesting.newProjectDto(organizationDto); - userSessionRule.logIn().addProjectUuidPermissions(SCAN_EXECUTION, project.uuid()); + userSessionRule.logIn().addProjectPermission(SCAN_EXECUTION, project); dbClient.componentDao().insert(dbSession, project); addDefaultProfile(); @@ -194,7 +194,7 @@ public class ProjectDataLoaderMediumTest { OrganizationDto organizationDto = OrganizationTesting.newOrganizationDto(); dbClient.organizationDao().insert(dbSession, organizationDto); ComponentDto project = ComponentTesting.newProjectDto(organizationDto); - userSessionRule.logIn().addProjectUuidPermissions(SCAN_EXECUTION, project.uuid()); + userSessionRule.logIn().addProjectPermission(SCAN_EXECUTION, project); dbClient.componentDao().insert(dbSession, project); addDefaultProfile(); @@ -225,7 +225,7 @@ public class ProjectDataLoaderMediumTest { OrganizationDto organizationDto = OrganizationTesting.newOrganizationDto(); dbClient.organizationDao().insert(dbSession, organizationDto); ComponentDto project = ComponentTesting.newProjectDto(organizationDto); - userSessionRule.logIn().addProjectUuidPermissions(SCAN_EXECUTION, project.uuid()); + userSessionRule.logIn().addProjectPermission(SCAN_EXECUTION, project); dbClient.componentDao().insert(dbSession, project); addDefaultProfile(); @@ -272,7 +272,7 @@ public class ProjectDataLoaderMediumTest { OrganizationDto organizationDto = OrganizationTesting.newOrganizationDto(); dbClient.organizationDao().insert(dbSession, organizationDto); ComponentDto project = ComponentTesting.newProjectDto(organizationDto); - userSessionRule.logIn().addProjectUuidPermissions(SCAN_EXECUTION, project.uuid()); + userSessionRule.logIn().addProjectPermission(SCAN_EXECUTION, project); dbClient.componentDao().insert(dbSession, project); addDefaultProfile(); @@ -318,7 +318,7 @@ public class ProjectDataLoaderMediumTest { dbClient.organizationDao().insert(dbSession, organizationDto); // No snapshot attached on the project -> provisioned project ComponentDto project = ComponentTesting.newProjectDto(organizationDto); - userSessionRule.logIn().addProjectUuidPermissions(SCAN_EXECUTION, project.uuid()); + userSessionRule.logIn().addProjectPermission(SCAN_EXECUTION, project); dbClient.componentDao().insert(dbSession, project); addDefaultProfile(); @@ -348,7 +348,7 @@ public class ProjectDataLoaderMediumTest { // No module properties ComponentDto subModule = ComponentTesting.newModuleDto(module); - userSessionRule.logIn().addProjectUuidPermissions(SCAN_EXECUTION, project.uuid()); + userSessionRule.logIn().addProjectPermission(SCAN_EXECUTION, project); dbClient.componentDao().insert(dbSession, subModule); // Sub module properties @@ -386,7 +386,7 @@ public class ProjectDataLoaderMediumTest { dbClient.propertiesDao().saveProperty(dbSession, new PropertyDto().setKey("sonar.jira.login.secured").setValue("john").setResourceId(module.getId())); ComponentDto subModule = ComponentTesting.newModuleDto(module); - userSessionRule.logIn().addProjectUuidPermissions(SCAN_EXECUTION, project.uuid()); + userSessionRule.logIn().addProjectPermission(SCAN_EXECUTION, project); dbClient.componentDao().insert(dbSession, subModule); // Sub module properties @@ -423,7 +423,7 @@ public class ProjectDataLoaderMediumTest { // No module property ComponentDto subModule = ComponentTesting.newModuleDto(module); - userSessionRule.logIn().addProjectUuidPermissions(SCAN_EXECUTION, project.uuid()); + userSessionRule.logIn().addProjectPermission(SCAN_EXECUTION, project); dbClient.componentDao().insert(dbSession, subModule); // No sub module property @@ -458,7 +458,7 @@ public class ProjectDataLoaderMediumTest { dbClient.propertiesDao().saveProperty(dbSession, new PropertyDto().setKey("sonar.jira.project.key").setValue("SONAR-SERVER").setResourceId(module.getId())); ComponentDto subModule = ComponentTesting.newModuleDto(module); - userSessionRule.logIn().addProjectUuidPermissions(SCAN_EXECUTION, project.uuid()); + userSessionRule.logIn().addProjectPermission(SCAN_EXECUTION, project); dbClient.componentDao().insert(dbSession, subModule); // No sub module property @@ -499,7 +499,7 @@ public class ProjectDataLoaderMediumTest { dbClient.componentDao().insert(dbSession, project); dbSession.commit(); - userSessionRule.logIn("john").addProjectUuidPermissions(UserRole.USER, project.projectUuid()); + userSessionRule.logIn("john").addProjectPermission(UserRole.USER, project); thrown.expect(ForbiddenException.class); thrown.expectMessage("You're only authorized to execute a local (preview) SonarQube analysis without pushing the results to the SonarQube server. " + @@ -515,7 +515,7 @@ public class ProjectDataLoaderMediumTest { dbClient.componentDao().insert(dbSession, project); dbSession.commit(); - userSessionRule.logIn("john").addProjectUuidPermissions(GlobalPermissions.SCAN_EXECUTION, project.projectUuid()); + userSessionRule.logIn("john").addProjectPermission(GlobalPermissions.SCAN_EXECUTION, project); thrown.expect(ForbiddenException.class); thrown.expectMessage("You don't have the required permissions to access this project. Please contact your SonarQube administrator."); @@ -527,7 +527,7 @@ public class ProjectDataLoaderMediumTest { OrganizationDto organizationDto = OrganizationTesting.newOrganizationDto(); dbClient.organizationDao().insert(dbSession, organizationDto); ComponentDto project = ComponentTesting.newProjectDto(organizationDto); - userSessionRule.logIn().addProjectUuidPermissions(SCAN_EXECUTION, project.uuid()); + userSessionRule.logIn().addProjectPermission(SCAN_EXECUTION, project); dbClient.componentDao().insert(dbSession, project); addDefaultProfile(); @@ -547,7 +547,7 @@ public class ProjectDataLoaderMediumTest { OrganizationDto organizationDto = OrganizationTesting.newOrganizationDto(); dbClient.organizationDao().insert(dbSession, organizationDto); ComponentDto project = ComponentTesting.newProjectDto(organizationDto); - userSessionRule.logIn().addProjectUuidPermissions(SCAN_EXECUTION, project.uuid()); + userSessionRule.logIn().addProjectPermission(SCAN_EXECUTION, project); dbClient.componentDao().insert(dbSession, project); addDefaultProfile(); @@ -585,7 +585,7 @@ public class ProjectDataLoaderMediumTest { tester.get(FileSourceDao.class).insert(dbSession, newFileSourceDto(projectFile).setSrcHash("123456").setRevision("987654321")); ComponentDto module = ComponentTesting.newModuleDto(project); - userSessionRule.logIn().addProjectUuidPermissions(SCAN_EXECUTION, project.uuid()); + userSessionRule.logIn().addProjectPermission(SCAN_EXECUTION, project); dbClient.componentDao().insert(dbSession, module); // File on module diff --git a/server/sonar-server/src/test/java/org/sonar/server/batch/ProjectDataLoaderTest.java b/server/sonar-server/src/test/java/org/sonar/server/batch/ProjectDataLoaderTest.java index 49adcb22ced..a5f342d9fd7 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/batch/ProjectDataLoaderTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/batch/ProjectDataLoaderTest.java @@ -141,7 +141,7 @@ public class ProjectDataLoaderTest { @Test public void throw_ForbiddenException_if_browse_permission_but_not_scan_permission() { ComponentDto project = dbTester.components().insertProject(); - userSession.logIn().addProjectUuidPermissions(UserRole.USER, project.uuid()); + userSession.logIn().addProjectPermission(UserRole.USER, project); expectedException.expect(ForbiddenException.class); expectedException.expectMessage("You're only authorized to execute a local (preview) SonarQube analysis without pushing the results to the SonarQube server"); @@ -152,7 +152,7 @@ public class ProjectDataLoaderTest { @Test public void issues_mode_is_allowed_if_user_has_browse_permission() { ComponentDto project = dbTester.components().insertProject(); - userSession.logIn().addProjectUuidPermissions(UserRole.USER, project.uuid()); + userSession.logIn().addProjectPermission(UserRole.USER, project); ProjectRepositories repositories = underTest.load(ProjectDataQuery.create().setModuleKey(project.key()).setIssuesMode(true)); @@ -162,7 +162,7 @@ public class ProjectDataLoaderTest { @Test public void issues_mode_is_forbidden_if_user_doesnt_have_browse_permission() { ComponentDto project = dbTester.components().insertProject(); - userSession.logIn().addProjectUuidPermissions(GlobalPermissions.SCAN_EXECUTION, project.uuid()); + userSession.logIn().addProjectPermission(GlobalPermissions.SCAN_EXECUTION, project); expectedException.expect(ForbiddenException.class); expectedException.expectMessage("You don't have the required permissions to access this project"); @@ -174,7 +174,7 @@ public class ProjectDataLoaderTest { public void scan_permission_on_organization_is_enough_even_without_scan_permission_on_project() { ComponentDto project = dbTester.components().insertProject(); userSession.logIn().addPermission(SCAN, project.getOrganizationUuid()); - userSession.logIn().addProjectUuidPermissions(UserRole.USER, project.uuid()); + userSession.logIn().addProjectPermission(UserRole.USER, project); ProjectRepositories repositories = underTest.load(ProjectDataQuery.create().setModuleKey(project.key()).setIssuesMode(true)); diff --git a/server/sonar-server/src/test/java/org/sonar/server/ce/ws/ActivityActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/ce/ws/ActivityActionTest.java index 7a738a8ac51..73e57f68478 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/ce/ws/ActivityActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/ce/ws/ActivityActionTest.java @@ -211,9 +211,9 @@ public class ActivityActionTest { @Test public void project_administrator_can_access_his_project_activity() { - dbTester.components().insertProject(dbTester.organizations().insert(), "PROJECT_1"); + ComponentDto project = dbTester.components().insertProject(dbTester.organizations().insert(), "PROJECT_1"); // no need to be a system admin - userSession.logIn().addComponentUuidPermission(UserRole.ADMIN, "PROJECT_1", "PROJECT_1"); + userSession.logIn().addProjectPermission(UserRole.ADMIN, project); insertActivity("T1", "PROJECT_1", CeActivityDto.Status.SUCCESS); insertActivity("T2", "PROJECT_2", CeActivityDto.Status.FAILED); @@ -305,7 +305,7 @@ public class ActivityActionTest { // is reserved to roots ComponentDto view = dbTester.components().insertView(); insertActivity("T1", view.uuid(), CeActivityDto.Status.SUCCESS); - userSession.logIn().addProjectUuidPermissions(UserRole.ADMIN, view.uuid()); + userSession.logIn().addProjectPermission(UserRole.ADMIN, view); expectedException.expect(ForbiddenException.class); expectedException.expectMessage("Insufficient privileges"); @@ -318,7 +318,7 @@ public class ActivityActionTest { ComponentDto project = dbTester.components().insertProject(dbTester.getDefaultOrganization(), "PROJECT_1"); insertQueue("T1", "PROJECT_1", CeQueueDto.Status.IN_PROGRESS); insertActivity("T1", "PROJECT_1", CeActivityDto.Status.SUCCESS); - userSession.logIn().addProjectUuidPermissions(UserRole.ADMIN, project.uuid()); + userSession.logIn().addProjectPermission(UserRole.ADMIN, project); ActivityResponse result = call(ws.newRequest() .setParam(PARAM_COMPONENT_ID, "PROJECT_1") diff --git a/server/sonar-server/src/test/java/org/sonar/server/ce/ws/ActivityStatusActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/ce/ws/ActivityStatusActionTest.java index 1fab7fc1069..35534909ba1 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/ce/ws/ActivityStatusActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/ce/ws/ActivityStatusActionTest.java @@ -80,10 +80,11 @@ public class ActivityStatusActionTest { public void status_for_a_project_as_project_admin() { String projectUuid = "project-uuid"; String anotherProjectUuid = "another-project-uuid"; - userSession.logIn().addProjectUuidPermissions(UserRole.ADMIN, projectUuid); OrganizationDto organizationDto = db.organizations().insert(); - db.components().insertComponent(newProjectDto(organizationDto, projectUuid)); + ComponentDto project = newProjectDto(organizationDto, projectUuid); + db.components().insertComponent(project); db.components().insertComponent(newProjectDto(organizationDto, anotherProjectUuid)); + userSession.logIn().addProjectPermission(UserRole.ADMIN, project); // pending tasks returned insertInQueue(CeQueueDto.Status.PENDING, projectUuid); insertInQueue(CeQueueDto.Status.PENDING, projectUuid); diff --git a/server/sonar-server/src/test/java/org/sonar/server/ce/ws/ComponentActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/ce/ws/ComponentActionTest.java index 03c3dc02dc3..fa1b0352e99 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/ce/ws/ComponentActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/ce/ws/ComponentActionTest.java @@ -60,8 +60,8 @@ public class ComponentActionTest { @Test public void empty_queue_and_empty_activity() { - dbTester.components().insertComponent(newProjectDto(dbTester.organizations().insert(), "PROJECT_1")); - userSession.addComponentUuidPermission(UserRole.USER, "PROJECT_1", "PROJECT_1"); + ComponentDto project = dbTester.components().insertComponent(newProjectDto(dbTester.organizations().insert(), "PROJECT_1")); + userSession.addProjectPermission(UserRole.USER, project); WsCe.ProjectResponse response = ws.newRequest() .setParam("componentId", "PROJECT_1") @@ -74,8 +74,8 @@ public class ComponentActionTest { @Test public void project_tasks() { OrganizationDto organizationDto = dbTester.organizations().insert(); - dbTester.components().insertComponent(newProjectDto(organizationDto, "PROJECT_1")); - userSession.addComponentUuidPermission(UserRole.USER, "PROJECT_1", "PROJECT_1"); + ComponentDto project = dbTester.components().insertComponent(newProjectDto(organizationDto, "PROJECT_1")); + userSession.addProjectPermission(UserRole.USER, project); insertActivity("T1", "PROJECT_1", CeActivityDto.Status.SUCCESS); insertActivity("T2", "PROJECT_2", CeActivityDto.Status.FAILED); insertActivity("T3", "PROJECT_1", CeActivityDto.Status.FAILED); @@ -111,8 +111,8 @@ public class ComponentActionTest { @Test public void canceled_tasks_must_not_be_picked_as_current_analysis() { - dbTester.components().insertComponent(newProjectDto(dbTester.getDefaultOrganization(), "PROJECT_1")); - userSession.addComponentUuidPermission(UserRole.USER, "PROJECT_1", "PROJECT_1"); + ComponentDto project = dbTester.components().insertComponent(newProjectDto(dbTester.getDefaultOrganization(), "PROJECT_1")); + userSession.addProjectPermission(UserRole.USER, project); insertActivity("T1", "PROJECT_1", CeActivityDto.Status.SUCCESS); insertActivity("T2", "PROJECT_2", CeActivityDto.Status.FAILED); insertActivity("T3", "PROJECT_1", CeActivityDto.Status.SUCCESS); @@ -130,8 +130,6 @@ public class ComponentActionTest { @Test public void fail_with_404_when_component_does_not_exist() throws Exception { - userSession.addComponentUuidPermission(UserRole.USER, "PROJECT_1", "PROJECT_1"); - expectedException.expect(NotFoundException.class); ws.newRequest() .setParam("componentId", "UNKNOWN") @@ -161,7 +159,7 @@ public class ComponentActionTest { } private void logInWithBrowsePermission(ComponentDto project) { - userSession.logIn().addProjectUuidPermissions(UserRole.USER, project.uuid()); + userSession.logIn().addProjectPermission(UserRole.USER, project); } private CeQueueDto insertQueue(String taskUuid, String componentUuid, CeQueueDto.Status status) { diff --git a/server/sonar-server/src/test/java/org/sonar/server/ce/ws/TaskActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/ce/ws/TaskActionTest.java index 99aa93b072a..1380ec2eb12 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/ce/ws/TaskActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/ce/ws/TaskActionTest.java @@ -218,7 +218,7 @@ public class TaskActionTest { @Test public void get_project_queue_task_with_scan_permission_on_project() { - userSession.logIn().addProjectUuidPermissions(GlobalPermissions.SCAN_EXECUTION, project.uuid()); + userSession.logIn().addProjectPermission(GlobalPermissions.SCAN_EXECUTION, project); CeQueueDto task = createAndPersistQueueTask(project); call(task.getUuid()); @@ -262,7 +262,7 @@ public class TaskActionTest { @Test public void get_project_archived_task_with_scan_permission_on_project() { - userSession.logIn().addProjectUuidPermissions(GlobalPermissions.SCAN_EXECUTION, project.uuid()); + userSession.logIn().addProjectPermission(GlobalPermissions.SCAN_EXECUTION, project); CeActivityDto task = createAndPersistArchivedTask(project); call(task.getUuid()); diff --git a/server/sonar-server/src/test/java/org/sonar/server/component/ComponentServiceUpdateKeyTest.java b/server/sonar-server/src/test/java/org/sonar/server/component/ComponentServiceUpdateKeyTest.java index 204698c958b..1fc5f7f6993 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/component/ComponentServiceUpdateKeyTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/component/ComponentServiceUpdateKeyTest.java @@ -123,7 +123,7 @@ public class ComponentServiceUpdateKeyTest { expectedException.expect(ForbiddenException.class); ComponentDto project = insertSampleRootProject(); - userSession.logIn("john").addProjectUuidPermissions(UserRole.USER, project.uuid()); + userSession.logIn("john").addProjectPermission(UserRole.USER, project); underTest.updateKey(dbSession, project, "sample2:root"); } @@ -215,6 +215,6 @@ public class ComponentServiceUpdateKeyTest { } private void logInAsProjectAdministrator(ComponentDto provisionedProject) { - userSession.logIn("john").addProjectUuidPermissions(UserRole.ADMIN, provisionedProject.uuid()); + userSession.logIn("john").addProjectPermission(UserRole.ADMIN, provisionedProject); } } diff --git a/server/sonar-server/src/test/java/org/sonar/server/component/ws/AppActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/component/ws/AppActionTest.java index 347565c86da..0de565d501f 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/component/ws/AppActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/component/ws/AppActionTest.java @@ -80,17 +80,17 @@ public class AppActionTest { @Test public void file_without_measures() throws Exception { - insertComponentsAndAnalysis(); + ComponentDto[] components = insertComponentsAndAnalysis(); dbTester.commit(); - userSessionRule.logIn("john").addComponentUuidPermission(UserRole.USER, PROJECT_UUID, FILE_UUID); + userSessionRule.logIn("john").addProjectPermission(UserRole.USER, components); TestRequest request = wsTester.newRequest().setParam("uuid", FILE_UUID); jsonAssert(request, "app.json"); } @Test public void file_with_measures() throws Exception { - insertComponentsAndAnalysis(); + ComponentDto[] components = insertComponentsAndAnalysis(); insertFileMeasure(metricsByKey.get(LINES_KEY).getId(), 200d, null); insertFileMeasure(metricsByKey.get(DUPLICATED_LINES_DENSITY_KEY).getId(), 7.4, null); insertFileMeasure(metricsByKey.get(SQALE_RATING_KEY).getId(), null, "C"); @@ -101,18 +101,19 @@ public class AppActionTest { userSessionRule .logIn("john") - .addComponentUuidPermission(UserRole.USER, PROJECT_UUID, FILE_UUID); + .addProjectPermission(UserRole.USER, components); TestRequest request = wsTester.newRequest().setParam("uuid", FILE_UUID); jsonAssert(request, "app_with_measures.json"); } @Test public void file_with_coverage() throws Exception { - insertComponentsAndAnalysis(); + ComponentDto[] components = insertComponentsAndAnalysis(); insertFileMeasure(metricsByKey.get(COVERAGE_KEY).getId(), 95.4, null); dbTester.commit(); - userSessionRule.logIn("john").addComponentUuidPermission(UserRole.USER, PROJECT_UUID, FILE_UUID); + userSessionRule.logIn("john") + .addProjectPermission(UserRole.USER, components); TestRequest request = wsTester.newRequest().setParam("uuid", FILE_UUID); jsonAssert(request, "app_with_ut_measure.json"); } @@ -137,7 +138,7 @@ public class AppActionTest { dbTester.commit(); } - private void insertComponentsAndAnalysis() { + private ComponentDto[] insertComponentsAndAnalysis() { ComponentDto project = ComponentTesting.newProjectDto(dbTester.getDefaultOrganization(), PROJECT_UUID) .setLongName("SonarQube") .setKey(PROJECT_KEY); @@ -152,6 +153,7 @@ public class AppActionTest { dbTester.getDbClient().componentDao().insert(dbTester.getSession(), project, module, file); SnapshotDto analysis = SnapshotTesting.newAnalysis(project).setUuid(ANALYSIS_UUID); dbTester.getDbClient().snapshotDao().insert(dbTester.getSession(), analysis); + return new ComponentDto[] {project, module, file}; } private void insertFileMeasure(int metricId, @Nullable Double value, @Nullable String data) { diff --git a/server/sonar-server/src/test/java/org/sonar/server/component/ws/ShowActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/component/ws/ShowActionTest.java index c431c791837..55861bb473f 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/component/ws/ShowActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/component/ws/ShowActionTest.java @@ -93,8 +93,9 @@ public class ShowActionTest { @Test public void show_with_browse_permission() { - userSession.logIn().addProjectUuidPermissions(UserRole.USER, "project-uuid"); - componentDb.insertProjectAndSnapshot(newProjectDto(db.organizations().insert(), "project-uuid")); + ComponentDto project = newProjectDto(db.organizations().insert(), "project-uuid"); + componentDb.insertProjectAndSnapshot(project); + userSession.logIn().addProjectPermission(UserRole.USER, project); ShowWsResponse response = newRequest("project-uuid", null); @@ -118,7 +119,7 @@ public class ShowActionTest { ComponentDto module = componentDb.insertComponent(newModuleDto(project)); ComponentDto directory = componentDb.insertComponent(newDirectory(module, "dir")); ComponentDto file = componentDb.insertComponent(newFileDto(directory)); - userSession.addProjectUuidPermissions(UserRole.USER, project.uuid()); + userSession.addProjectPermission(UserRole.USER, project); ShowWsResponse response = newRequest(null, file.key()); @@ -130,7 +131,7 @@ public class ShowActionTest { public void show_without_ancestors_when_project() throws Exception { ComponentDto project = componentDb.insertProject(); componentDb.insertComponent(newModuleDto(project)); - userSession.addProjectUuidPermissions(UserRole.USER, project.uuid()); + userSession.addProjectPermission(UserRole.USER, project); ShowWsResponse response = newRequest(null, project.key()); @@ -144,7 +145,7 @@ public class ShowActionTest { componentDb.insertSnapshot(newAnalysis(project).setCreatedAt(1_000_000_000L).setLast(false)); componentDb.insertSnapshot(newAnalysis(project).setCreatedAt(2_000_000_000L).setLast(false)); componentDb.insertSnapshot(newAnalysis(project).setCreatedAt(3_000_000_000L).setLast(true)); - userSession.addProjectUuidPermissions(UserRole.USER, project.uuid()); + userSession.addProjectPermission(UserRole.USER, project); ShowWsResponse response = newRequest(null, project.key()); @@ -158,7 +159,7 @@ public class ShowActionTest { ComponentDto module = componentDb.insertComponent(newModuleDto(project)); ComponentDto directory = componentDb.insertComponent(newDirectory(module, "dir")); ComponentDto file = componentDb.insertComponent(newFileDto(directory)); - userSession.addProjectUuidPermissions(UserRole.USER, project.uuid()); + userSession.addProjectPermission(UserRole.USER, project); ShowWsResponse response = newRequest(null, file.key()); diff --git a/server/sonar-server/src/test/java/org/sonar/server/component/ws/TreeActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/component/ws/TreeActionTest.java index 1518d9ed220..f47c7508ca4 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/component/ws/TreeActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/component/ws/TreeActionTest.java @@ -300,9 +300,9 @@ public class TreeActionTest { @Test public void fail_when_not_enough_privileges() { + ComponentDto project = componentDb.insertComponent(newProjectDto(db.organizations().insert(), "project-uuid")); userSession.logIn() - .addProjectUuidPermissions(UserRole.CODEVIEWER, "project-uuid"); - componentDb.insertComponent(newProjectDto(db.organizations().insert(), "project-uuid")); + .addProjectPermission(UserRole.CODEVIEWER, project); db.commit(); expectedException.expect(ForbiddenException.class); @@ -424,6 +424,6 @@ public class TreeActionTest { } private void logInWithBrowsePermission(ComponentDto project) { - userSession.logIn().addProjectUuidPermissions(UserRole.USER, project.uuid()); + userSession.logIn().addProjectPermission(UserRole.USER, project); } } diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/queue/ReportSubmitterTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/queue/ReportSubmitterTest.java index 8f7a1c80ec5..89b05061786 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/computation/queue/ReportSubmitterTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/queue/ReportSubmitterTest.java @@ -36,7 +36,9 @@ import org.sonar.db.DbSession; import org.sonar.db.DbTester; import org.sonar.db.ce.CeTaskTypes; import org.sonar.db.component.ComponentDto; +import org.sonar.db.component.ComponentTesting; import org.sonar.db.organization.OrganizationDto; +import org.sonar.db.permission.OrganizationPermission; import org.sonar.server.component.ComponentUpdater; import org.sonar.server.component.NewComponent; import org.sonar.server.exceptions.ForbiddenException; @@ -110,7 +112,7 @@ public class ReportSubmitterTest { @Test public void submit_a_report_on_existing_project() { ComponentDto project = db.components().insertProject(db.getDefaultOrganization()); - userSession.logIn().addProjectUuidPermissions(SCAN_EXECUTION, project.uuid()); + userSession.logIn().addProjectPermission(SCAN_EXECUTION, project); mockSuccessfulPrepareSubmitCall(); @@ -137,7 +139,7 @@ public class ReportSubmitterTest { public void provision_project_if_does_not_exist() throws Exception { OrganizationDto organization = db.organizations().insert(); userSession - .addProjectUuidPermissions(SCAN_EXECUTION, PROJECT_UUID) + .addPermission(OrganizationPermission.SCAN, organization.getUuid()) .addPermission(PROVISION_PROJECTS, organization); mockSuccessfulPrepareSubmitCall(); @@ -168,7 +170,7 @@ public class ReportSubmitterTest { @Test public void no_favorite_when_no_project_creator_permission_on_permission_template() { userSession - .addProjectUuidPermissions(SCAN_EXECUTION, PROJECT_UUID) + .addPermission(OrganizationPermission.SCAN, db.getDefaultOrganization().getUuid()) .addPermission(PROVISION_PROJECTS, db.getDefaultOrganization()); mockSuccessfulPrepareSubmitCall(); @@ -187,7 +189,7 @@ public class ReportSubmitterTest { @Test public void submit_a_report_on_new_project_with_scan_permission_on_organization() { userSession - .addProjectUuidPermissions(SCAN_EXECUTION, PROJECT_UUID) + .addPermission(OrganizationPermission.SCAN, db.getDefaultOrganization().getUuid()) .addPermission(PROVISION_PROJECTS, db.getDefaultOrganization()); mockSuccessfulPrepareSubmitCall(); @@ -218,7 +220,7 @@ public class ReportSubmitterTest { @Test public void submit_a_report_on_existing_project_with_project_scan_permission() { ComponentDto project = db.components().insertProject(db.getDefaultOrganization()); - userSession.addProjectUuidPermissions(SCAN_EXECUTION, project.uuid()); + userSession.addProjectPermission(SCAN_EXECUTION, project); mockSuccessfulPrepareSubmitCall(); @@ -236,7 +238,7 @@ public class ReportSubmitterTest { @Test public void fail_with_forbidden_exception_on_new_project_when_only_project_scan_permission() { - userSession.addProjectUuidPermissions(SCAN_EXECUTION, PROJECT_UUID); + userSession.addProjectPermission(SCAN_EXECUTION, ComponentTesting.newProjectDto(db.getDefaultOrganization(), PROJECT_UUID)); mockSuccessfulPrepareSubmitCall(); when(componentUpdater.create(any(DbSession.class), any(NewComponent.class), eq(null))).thenReturn(new ComponentDto().setUuid(PROJECT_UUID).setKey(PROJECT_KEY)); @@ -251,7 +253,7 @@ public class ReportSubmitterTest { @Test public void project_branch_must_not_benefit_from_the_scan_permission_on_main_project() { ComponentDto mainProject = db.components().insertProject(); - userSession.addProjectUuidPermissions(GlobalPermissions.SCAN_EXECUTION, mainProject.uuid()); + userSession.addProjectPermission(GlobalPermissions.SCAN_EXECUTION, mainProject); // user does not have the "scan" permission on the branch, so it can't scan it String branchName = "branchFoo"; diff --git a/server/sonar-server/src/test/java/org/sonar/server/duplication/ws/ShowActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/duplication/ws/ShowActionTest.java index 9d7c0c78c5d..e6cacf51b6e 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/duplication/ws/ShowActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/duplication/ws/ShowActionTest.java @@ -83,7 +83,7 @@ public class ShowActionTest { ComponentDto file = db.components().insertComponent(newFileDto(project).setKey("foo.js")); db.components().insertSnapshot(newAnalysis(project)); - userSessionRule.addProjectUuidPermissions(UserRole.CODEVIEWER, project.uuid()); + userSessionRule.addProjectPermission(UserRole.CODEVIEWER, project); WsTester.Result result = newBaseRequest().setParam("key", file.key()).execute(); @@ -127,7 +127,7 @@ public class ShowActionTest { db.getDbClient().measureDao().insert(db.getSession(), newMeasureDto(dataMetric, file, snapshot).setData(xml)); db.commit(); - userSessionRule.addProjectUuidPermissions(UserRole.CODEVIEWER, project.uuid()); + userSessionRule.addProjectPermission(UserRole.CODEVIEWER, project); WsTester.TestRequest request = requestFactory.apply(file); WsTester.Result result = request.execute(); diff --git a/server/sonar-server/src/test/java/org/sonar/server/favorite/ws/AddActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/favorite/ws/AddActionTest.java index 4ce86209eef..84130b7b277 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/favorite/ws/AddActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/favorite/ws/AddActionTest.java @@ -88,7 +88,7 @@ public class AddActionTest { public void add_a_file() { ComponentDto project = insertProjectAndPermissions(); ComponentDto file = db.components().insertComponent(newFileDto(project)); - userSession.addComponentUuidPermission(UserRole.USER, PROJECT_UUID, file.uuid()); + userSession.addProjectPermission(UserRole.USER, project, file); call(file.key()); @@ -105,9 +105,9 @@ public class AddActionTest { @Test public void fail_when_no_browse_permission_on_the_project() { - insertProject(); + ComponentDto project = insertProject(); userSession.logIn(); - userSession.addProjectUuidPermissions(UserRole.ADMIN, PROJECT_UUID); + userSession.addProjectPermission(UserRole.ADMIN, project); expectedException.expect(ForbiddenException.class); @@ -146,12 +146,13 @@ public class AddActionTest { } private ComponentDto insertProjectAndPermissions() { + ComponentDto project = insertProject(); userSession .logIn() .setUserId(USER_ID) - .addProjectUuidPermissions(UserRole.USER, PROJECT_UUID); + .addProjectPermission(UserRole.USER, project); - return insertProject(); + return project; } private TestResponse call(@Nullable String componentKey) { diff --git a/server/sonar-server/src/test/java/org/sonar/server/issue/ActionFinderTest.java b/server/sonar-server/src/test/java/org/sonar/server/issue/ActionFinderTest.java index b5941fd91f9..2d3ea708c08 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/issue/ActionFinderTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/issue/ActionFinderTest.java @@ -23,6 +23,7 @@ import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; import org.sonar.db.component.ComponentDto; +import org.sonar.db.component.ComponentTesting; import org.sonar.db.issue.IssueDto; import org.sonar.db.organization.OrganizationTesting; import org.sonar.server.tester.UserSessionRule; @@ -60,7 +61,7 @@ public class ActionFinderTest { @Test public void return_provided_actions_with_set_severity_and_set_type_when_issue_admin() { - userSession.addProjectUuidPermissions(ISSUE_ADMIN, PROJECT_UUID); + userSession.addProjectPermission(ISSUE_ADMIN, ComponentTesting.newProjectDto(OrganizationTesting.newOrganizationDto(), PROJECT_UUID)); assertThat(underTest.listAvailableActions(issue)).containsOnly("comment", "assign", "set_tags", "set_type", "assign_to_me", "set_severity"); } diff --git a/server/sonar-server/src/test/java/org/sonar/server/issue/IssueFinderTest.java b/server/sonar-server/src/test/java/org/sonar/server/issue/IssueFinderTest.java index 464d94b685a..bc3f00546e3 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/issue/IssueFinderTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/issue/IssueFinderTest.java @@ -61,7 +61,8 @@ public class IssueFinderTest { @Test public void get_by_issue_key() throws Exception { IssueDto issueDto = insertIssue(); - userSession.addProjectUuidPermissions(USER, issueDto.getProjectUuid()); + String permission = USER; + addProjectPermission(issueDto, permission); IssueDto result = underTest.getByKey(db.getSession(), issueDto.getKey()); @@ -72,7 +73,7 @@ public class IssueFinderTest { @Test public void fail_when_issue_key_does_not_exist() throws Exception { IssueDto issueDto = insertIssue(); - userSession.addProjectUuidPermissions(USER, issueDto.getProjectUuid()); + addProjectPermission(issueDto, USER); expectedException.expect(NotFoundException.class); expectedException.expectMessage("Issue with key 'UNKNOWN' does not exist"); @@ -82,7 +83,7 @@ public class IssueFinderTest { @Test public void fail_when_not_enough_permission() throws Exception { IssueDto issueDto = insertIssue(); - userSession.addProjectUuidPermissions(CODEVIEWER, issueDto.getProjectUuid()); + addProjectPermission(issueDto, CODEVIEWER); expectedException.expect(ForbiddenException.class); underTest.getByKey(db.getSession(), issueDto.getKey()); @@ -94,4 +95,8 @@ public class IssueFinderTest { ComponentDto file = componentDbTester.insertComponent(newFileDto(project)); return issueDbTester.insertIssue(newDto(rule, file, project)); } + + private void addProjectPermission(IssueDto issueDto, String permission) { + userSession.addProjectPermission(permission, db.getDbClient().componentDao().selectByUuid(db.getSession(), issueDto.getProjectUuid()).get()); + } } diff --git a/server/sonar-server/src/test/java/org/sonar/server/issue/IssueQueryFactoryTest.java b/server/sonar-server/src/test/java/org/sonar/server/issue/IssueQueryFactoryTest.java index 294ab90c868..7f2c1285656 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/issue/IssueQueryFactoryTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/issue/IssueQueryFactoryTest.java @@ -192,7 +192,7 @@ public class IssueQueryFactoryTest { ComponentDto view = db.components().insertView(); SearchWsRequest request = new SearchWsRequest() .setComponentRootUuids(asList(view.uuid())); - userSession.addProjectUuidPermissions(UserRole.USER, view.uuid()); + userSession.addProjectPermission(UserRole.USER, view); IssueQuery query = underTest.create(request); diff --git a/server/sonar-server/src/test/java/org/sonar/server/issue/IssueServiceMediumTest.java b/server/sonar-server/src/test/java/org/sonar/server/issue/IssueServiceMediumTest.java index b2f04caedd9..6a24e75d3b6 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/issue/IssueServiceMediumTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/issue/IssueServiceMediumTest.java @@ -155,7 +155,7 @@ public class IssueServiceMediumTest { ComponentDto project = ComponentTesting.newProjectDto(organization); tester.get(ComponentDao.class).insert(session, project); - userSessionRule.logIn().addProjectUuidPermissions(UserRole.USER, project.uuid()); + userSessionRule.logIn().addProjectPermission(UserRole.USER, project); session.commit(); // project can be seen by group "anyone" diff --git a/server/sonar-server/src/test/java/org/sonar/server/issue/SetSeverityActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/issue/SetSeverityActionTest.java index 914ae6fffb1..15a80439331 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/issue/SetSeverityActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/issue/SetSeverityActionTest.java @@ -67,8 +67,9 @@ public class SetSeverityActionTest { @Test public void set_severity() { - DefaultIssue issue = newIssue().setSeverity(MAJOR).toDefaultIssue(); - setUserWithBrowseAndAdministerIssuePermission(issue.projectUuid()); + IssueDto issueDto = newIssue().setSeverity(MAJOR); + DefaultIssue issue = issueDto.toDefaultIssue(); + setUserWithBrowseAndAdministerIssuePermission(issueDto); BulkChangeAction.ActionContext context = new BulkChangeAction.ActionContext(issue, IssueChangeContext.createUser(NOW, userSession.getLogin()), null); action.execute(ImmutableMap.of("severity", MINOR), context); @@ -93,8 +94,9 @@ public class SetSeverityActionTest { @Test public void support_only_unresolved_issues() { - DefaultIssue issue = newIssue().setSeverity(MAJOR).toDefaultIssue(); - setUserWithBrowseAndAdministerIssuePermission(issue.projectUuid()); + IssueDto issueDto = newIssue().setSeverity(MAJOR); + DefaultIssue issue = issueDto.toDefaultIssue(); + setUserWithBrowseAndAdministerIssuePermission(issueDto); assertThat(action.supports(issue.setResolution(null))).isTrue(); assertThat(action.supports(issue.setResolution(Issue.RESOLUTION_FIXED))).isFalse(); @@ -102,18 +104,20 @@ public class SetSeverityActionTest { @Test public void support_only_issues_with_issue_admin_permission() { - DefaultIssue authorizedIssue = newIssue().setSeverity(MAJOR).toDefaultIssue(); - setUserWithBrowseAndAdministerIssuePermission(authorizedIssue.projectUuid()); - DefaultIssue unauthorizedIssue = newIssue().setSeverity(MAJOR).toDefaultIssue(); + IssueDto authorizedIssue = newIssue().setSeverity(MAJOR); + setUserWithBrowseAndAdministerIssuePermission(authorizedIssue); + IssueDto unauthorizedIssue = newIssue().setSeverity(MAJOR); - assertThat(action.supports(authorizedIssue.setResolution(null))).isTrue(); - assertThat(action.supports(unauthorizedIssue.setResolution(null))).isFalse(); + assertThat(action.supports(authorizedIssue.toDefaultIssue().setResolution(null))).isTrue(); + assertThat(action.supports(unauthorizedIssue.toDefaultIssue().setResolution(null))).isFalse(); } - private void setUserWithBrowseAndAdministerIssuePermission(String projectUuid) { + 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(); userSession.logIn(USER_LOGIN) - .addProjectUuidPermissions(ISSUE_ADMIN, projectUuid) - .addProjectUuidPermissions(USER, projectUuid); + .addProjectPermission(ISSUE_ADMIN, project, component) + .addProjectPermission(USER, project, component); } private IssueDto newIssue() { diff --git a/server/sonar-server/src/test/java/org/sonar/server/issue/SetTypeActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/issue/SetTypeActionTest.java index 4ff0e5d8f6b..f08d793deb8 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/issue/SetTypeActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/issue/SetTypeActionTest.java @@ -66,8 +66,9 @@ public class SetTypeActionTest { @Test public void set_type() { - DefaultIssue issue = newIssue().setType(BUG).toDefaultIssue(); - setUserWithBrowseAndAdministerIssuePermission(issue.projectUuid()); + IssueDto issueDto = newIssue().setType(BUG); + DefaultIssue issue = issueDto.toDefaultIssue(); + setUserWithBrowseAndAdministerIssuePermission(issueDto); action.execute(ImmutableMap.of("type", VULNERABILITY.name()), new BulkChangeAction.ActionContext(issue, IssueChangeContext.createUser(NOW, userSession.getLogin()), null)); @@ -99,8 +100,9 @@ public class SetTypeActionTest { @Test public void support_only_unresolved_issues() { - DefaultIssue issue = newIssue().setType(BUG).toDefaultIssue(); - setUserWithBrowseAndAdministerIssuePermission(issue.projectUuid()); + IssueDto issueDto = newIssue().setType(BUG); + DefaultIssue issue = issueDto.toDefaultIssue(); + setUserWithBrowseAndAdministerIssuePermission(issueDto); assertThat(action.supports(issue.setResolution(null))).isTrue(); assertThat(action.supports(issue.setResolution(Issue.RESOLUTION_FIXED))).isFalse(); @@ -108,18 +110,21 @@ public class SetTypeActionTest { @Test public void support_only_issues_with_issue_admin_permission() { - DefaultIssue authorizedIssue = newIssue().setType(BUG).toDefaultIssue(); - setUserWithBrowseAndAdministerIssuePermission(authorizedIssue.projectUuid()); + IssueDto authorizedIssueDto = newIssue().setType(BUG); + DefaultIssue authorizedIssue = authorizedIssueDto.toDefaultIssue(); + setUserWithBrowseAndAdministerIssuePermission(authorizedIssueDto); DefaultIssue unauthorizedIssue = newIssue().setType(BUG).toDefaultIssue(); assertThat(action.supports(authorizedIssue.setResolution(null))).isTrue(); assertThat(action.supports(unauthorizedIssue.setResolution(null))).isFalse(); } - private void setUserWithBrowseAndAdministerIssuePermission(String projectUuid) { + 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(); userSession.logIn(USER_LOGIN) - .addProjectUuidPermissions(ISSUE_ADMIN, projectUuid) - .addProjectUuidPermissions(USER, projectUuid); + .addProjectPermission(ISSUE_ADMIN, project, component) + .addProjectPermission(USER, project, component); } private IssueDto newIssue() { diff --git a/server/sonar-server/src/test/java/org/sonar/server/issue/TransitionActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/issue/TransitionActionTest.java index 598033a1063..d73a3e066ee 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/issue/TransitionActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/issue/TransitionActionTest.java @@ -73,7 +73,7 @@ public class TransitionActionTest { @Test public void execute() { - userSession.logIn("john").addProjectUuidPermissions(ISSUE_ADMIN, issue.projectUuid()); + loginAndAddProjectPermission("john", ISSUE_ADMIN); issue.setStatus(Issue.STATUS_RESOLVED); issue.setResolution(Issue.RESOLUTION_FIXED); @@ -85,7 +85,7 @@ public class TransitionActionTest { @Test public void does_not_execute_if_transition_is_not_available() { - userSession.logIn("john").addProjectUuidPermissions(ISSUE_ADMIN, issue.projectUuid()); + loginAndAddProjectPermission("john", ISSUE_ADMIN); issue.setStatus(Issue.STATUS_CLOSED); action.execute(ImmutableMap.of("transition", "reopen"), context); @@ -119,4 +119,8 @@ public class TransitionActionTest { return newDto(rule, file, project); } + private void loginAndAddProjectPermission(String login, String permission) { + userSession.logIn(login).addProjectPermission(permission, ComponentTesting.newProjectDto(OrganizationTesting.newOrganizationDto(), issue.projectUuid())); + } + } diff --git a/server/sonar-server/src/test/java/org/sonar/server/issue/TransitionServiceTest.java b/server/sonar-server/src/test/java/org/sonar/server/issue/TransitionServiceTest.java index d01e22e84b9..68690ec21a9 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/issue/TransitionServiceTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/issue/TransitionServiceTest.java @@ -62,7 +62,7 @@ public class TransitionServiceTest { @Test public void list_transitions() throws Exception { IssueDto issue = newIssue().setStatus(STATUS_OPEN).setResolution(null); - userSession.logIn("john").addProjectUuidPermissions(ISSUE_ADMIN, issue.getProjectUuid()); + userSession.logIn("john").addProjectPermission(ISSUE_ADMIN, ComponentTesting.newProjectDto(OrganizationTesting.newOrganizationDto(), issue.getProjectUuid())); List result = underTest.listTransitions(issue.toDefaultIssue()); diff --git a/server/sonar-server/src/test/java/org/sonar/server/issue/ws/AddCommentActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/issue/ws/AddCommentActionTest.java index 167bf3dc0f2..45c5f5bd814 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/issue/ws/AddCommentActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/issue/ws/AddCommentActionTest.java @@ -105,7 +105,7 @@ public class AddCommentActionTest { @Test public void add_comment() throws Exception { IssueDto issueDto = issueDbTester.insertIssue(); - userSession.logIn("john").addProjectUuidPermissions(USER, issueDto.getProjectUuid()); + loginWithBrowsePermission(issueDto, USER); call(issueDto.getKey(), "please fix it"); @@ -151,7 +151,7 @@ public class AddCommentActionTest { @Test public void fail_when_empty_comment_text() throws Exception { IssueDto issueDto = issueDbTester.insertIssue(); - userSession.logIn("john").addProjectUuidPermissions(USER, issueDto.getProjectUuid()); + loginWithBrowsePermission(issueDto, USER); expectedException.expect(IllegalArgumentException.class); call(issueDto.getKey(), ""); @@ -166,7 +166,7 @@ public class AddCommentActionTest { @Test public void fail_when_not_enough_permission() throws Exception { IssueDto issueDto = issueDbTester.insertIssue(); - userSession.logIn("john").addProjectUuidPermissions(CODEVIEWER, issueDto.getProjectUuid()); + loginWithBrowsePermission(issueDto, CODEVIEWER); expectedException.expect(ForbiddenException.class); call(issueDto.getKey(), "please fix it"); @@ -189,4 +189,10 @@ public class AddCommentActionTest { return request.execute(); } + private void loginWithBrowsePermission(IssueDto issueDto, String permission) { + userSession.logIn("john").addProjectPermission(permission, + dbClient.componentDao().selectByUuid(dbTester.getSession(), issueDto.getProjectUuid()).get(), + dbClient.componentDao().selectByUuid(dbTester.getSession(), issueDto.getComponentUuid()).get()); + } + } diff --git a/server/sonar-server/src/test/java/org/sonar/server/issue/ws/AssignActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/issue/ws/AssignActionTest.java index cac29c2121d..88fac14b25f 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/issue/ws/AssignActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/issue/ws/AssignActionTest.java @@ -69,13 +69,10 @@ public class AssignActionTest { @Rule public ExpectedException expectedException = ExpectedException.none(); - @Rule public UserSessionRule userSession = UserSessionRule.standalone(); - @Rule public EsTester es = new EsTester(new IssueIndexDefinition(new MapSettings())); - @Rule public DbTester db = DbTester.create(system2); @@ -211,7 +208,7 @@ public class AssignActionTest { @Test public void fail_when_missing_browse_permission() throws Exception { IssueDto issue = newIssue(); - userSession.logIn(CURRENT_USER_LOGIN).addProjectUuidPermissions(CODEVIEWER, issue.getProjectUuid()); + setUserWithPermission(issue, CODEVIEWER); expectedException.expect(ForbiddenException.class); @@ -246,11 +243,12 @@ public class AssignActionTest { } private IssueDto newIssue() { - return db.issues().insertIssue( + IssueDto issue = db.issues().insertIssue( issueDto -> issueDto .setAssignee(PREVIOUS_ASSIGNEE) .setCreatedAt(PAST).setIssueCreationTime(PAST) .setUpdatedAt(PAST).setIssueUpdateTime(PAST)); + return issue; } private IssueDto newIssueWithBrowsePermission() { @@ -260,8 +258,15 @@ public class AssignActionTest { } private void setUserWithBrowsePermission(IssueDto issue) { + setUserWithPermission(issue, USER); + } + + private void setUserWithPermission(IssueDto issue, String permission) { insertUser(CURRENT_USER_LOGIN); - userSession.logIn(CURRENT_USER_LOGIN).addProjectUuidPermissions(USER, issue.getProjectUuid()); + userSession.logIn(CURRENT_USER_LOGIN) + .addProjectPermission(permission, + db.getDbClient().componentDao().selectByUuid(db.getSession(), issue.getProjectUuid()).get(), + db.getDbClient().componentDao().selectByUuid(db.getSession(), issue.getComponentUuid()).get()); } private void checkIssueAssignee(String issueKey, @Nullable String expectedAssignee) { diff --git a/server/sonar-server/src/test/java/org/sonar/server/issue/ws/BulkChangeActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/issue/ws/BulkChangeActionTest.java index 009b960bee8..b7d328f4674 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/issue/ws/BulkChangeActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/issue/ws/BulkChangeActionTest.java @@ -487,7 +487,7 @@ public class BulkChangeActionTest { private void addUserProjectPermissions(ComponentDto project, String... permissions) { for (String permission : permissions) { db.users().insertProjectPermissionOnUser(user, permission, project); - userSession.addProjectUuidPermissions(permission, project.uuid()); + userSession.addProjectPermission(permission, project); } } diff --git a/server/sonar-server/src/test/java/org/sonar/server/issue/ws/ChangelogActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/issue/ws/ChangelogActionTest.java index 792059432fb..9e7c07db383 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/issue/ws/ChangelogActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/issue/ws/ChangelogActionTest.java @@ -20,6 +20,7 @@ package org.sonar.server.issue.ws; import javax.annotation.Nullable; +import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; @@ -63,13 +64,21 @@ public class ChangelogActionTest { @Rule public UserSessionRule userSession = UserSessionRule.standalone(); + private ComponentDto project; + private ComponentDto file; private WsActionTester tester = new WsActionTester(new ChangelogAction(db.getDbClient(), new IssueFinder(db.getDbClient(), userSession), new AvatarResolverImpl())); + @Before + public void setUp() throws Exception { + project = db.components().insertProject(); + file = db.components().insertComponent(newFileDto(project)); + } + @Test public void return_changelog() throws Exception { UserDto user = insertUser(); IssueDto issueDto = db.issues().insertIssue(newIssue()); - userSession.logIn("john").addProjectUuidPermissions(USER, issueDto.getProjectUuid()); + userSession.logIn("john").addProjectPermission(USER, project, file); db.issues().insertFieldDiffs(issueDto, new FieldDiffs().setUserLogin(user.getLogin()).setDiff("severity", "MAJOR", "BLOCKER")); ChangelogWsResponse result = call(issueDto.getKey()); @@ -89,7 +98,7 @@ public class ChangelogActionTest { ComponentDto file1 = db.components().insertComponent(newFileDto(project)); ComponentDto file2 = db.components().insertComponent(newFileDto(project)); IssueDto issueDto = db.issues().insertIssue(newDto(rule, file2, project)); - userSession.logIn("john").addProjectUuidPermissions(USER, issueDto.getProjectUuid()); + userSession.logIn("john").addProjectPermission(USER, project, file1, file2); db.issues().insertFieldDiffs(issueDto, new FieldDiffs().setDiff("file", file1.uuid(), file2.uuid())); ChangelogWsResponse result = call(issueDto.getKey()); @@ -104,7 +113,7 @@ public class ChangelogActionTest { @Test public void changelog_of_file_move_is_empty_when_files_does_not_exists() throws Exception { IssueDto issueDto = db.issues().insertIssue(newIssue()); - userSession.logIn("john").addProjectUuidPermissions(USER, issueDto.getProjectUuid()); + userSession.logIn("john").addProjectPermission(USER, project, file); db.issues().insertFieldDiffs(issueDto, new FieldDiffs().setDiff("file", "UNKNOWN_1", "UNKNOWN_2")); ChangelogWsResponse result = call(issueDto.getKey()); @@ -118,7 +127,7 @@ public class ChangelogActionTest { public void return_changelog_on_user_without_email() throws Exception { UserDto user = db.users().insertUser(UserTesting.newUserDto("john", "John", null)); IssueDto issueDto = db.issues().insertIssue(newIssue()); - userSession.logIn("john").addProjectUuidPermissions(USER, issueDto.getProjectUuid()); + userSession.logIn("john").addProjectPermission(USER, project, file); db.issues().insertFieldDiffs(issueDto, new FieldDiffs().setUserLogin(user.getLogin()).setDiff("severity", "MAJOR", "BLOCKER")); ChangelogWsResponse result = call(issueDto.getKey()); @@ -132,7 +141,7 @@ public class ChangelogActionTest { @Test public void return_changelog_not_having_user() throws Exception { IssueDto issueDto = db.issues().insertIssue(newIssue()); - userSession.logIn("john").addProjectUuidPermissions(USER, issueDto.getProjectUuid()); + userSession.logIn("john").addProjectPermission(USER, project, file); db.issues().insertFieldDiffs(issueDto, new FieldDiffs().setUserLogin(null).setDiff("severity", "MAJOR", "BLOCKER")); ChangelogWsResponse result = call(issueDto.getKey()); @@ -147,7 +156,7 @@ public class ChangelogActionTest { @Test public void return_changelog_on_none_existing_user() throws Exception { IssueDto issueDto = db.issues().insertIssue(newIssue()); - userSession.logIn("john").addProjectUuidPermissions(USER, issueDto.getProjectUuid()); + userSession.logIn("john").addProjectPermission(USER, project, file); db.issues().insertFieldDiffs(issueDto, new FieldDiffs().setUserLogin("UNKNOWN").setDiff("severity", "MAJOR", "BLOCKER")); ChangelogWsResponse result = call(issueDto.getKey()); @@ -163,7 +172,7 @@ public class ChangelogActionTest { public void return_multiple_diffs() throws Exception { UserDto user = insertUser(); IssueDto issueDto = db.issues().insertIssue(newIssue()); - userSession.logIn("john").addProjectUuidPermissions(USER, issueDto.getProjectUuid()); + userSession.logIn("john").addProjectPermission(USER, project, file); db.issues().insertFieldDiffs(issueDto, new FieldDiffs().setUserLogin(user.getLogin()).setDiff("severity", "MAJOR", "BLOCKER").setDiff("status", "RESOLVED", "CLOSED")); ChangelogWsResponse result = call(issueDto.getKey()); @@ -177,7 +186,7 @@ public class ChangelogActionTest { public void return_changelog_when_no_old_value() throws Exception { UserDto user = insertUser(); IssueDto issueDto = db.issues().insertIssue(newIssue()); - userSession.logIn("john").addProjectUuidPermissions(USER, issueDto.getProjectUuid()); + userSession.logIn("john").addProjectPermission(USER, project, file); db.issues().insertFieldDiffs(issueDto, new FieldDiffs().setUserLogin(user.getLogin()).setDiff("severity", null, "BLOCKER")); ChangelogWsResponse result = call(issueDto.getKey()); @@ -190,7 +199,7 @@ public class ChangelogActionTest { public void return_changelog_when_no_new_value() throws Exception { UserDto user = insertUser(); IssueDto issueDto = db.issues().insertIssue(newIssue()); - userSession.logIn("john").addProjectUuidPermissions(USER, issueDto.getProjectUuid()); + userSession.logIn("john").addProjectPermission(USER, project, file); db.issues().insertFieldDiffs(issueDto, new FieldDiffs().setUserLogin(user.getLogin()).setDiff("severity", "MAJOR", null)); ChangelogWsResponse result = call(issueDto.getKey()); @@ -203,7 +212,7 @@ public class ChangelogActionTest { public void return_many_changelog() throws Exception { UserDto user = insertUser(); IssueDto issueDto = db.issues().insertIssue(newIssue()); - userSession.logIn("john").addProjectUuidPermissions(USER, issueDto.getProjectUuid()); + userSession.logIn("john").addProjectPermission(USER, project, file); db.issues().insertFieldDiffs(issueDto, new FieldDiffs().setUserLogin(user.getLogin()).setDiff("severity", "MAJOR", "BLOCKER"), new FieldDiffs().setDiff("status", "RESOLVED", "CLOSED")); @@ -217,7 +226,7 @@ public class ChangelogActionTest { public void replace_technical_debt_key_by_effort() throws Exception { UserDto user = insertUser(); IssueDto issueDto = db.issues().insertIssue(newIssue()); - userSession.logIn("john").addProjectUuidPermissions(USER, issueDto.getProjectUuid()); + userSession.logIn("john").addProjectPermission(USER, project, file); db.issues().insertFieldDiffs(issueDto, new FieldDiffs().setUserLogin(user.getLogin()).setDiff("technicalDebt", "10", "20")); ChangelogWsResponse result = call(issueDto.getKey()); @@ -229,7 +238,7 @@ public class ChangelogActionTest { @Test public void return_empty_changelog_when_no_changes_on_issue() { IssueDto issueDto = db.issues().insertIssue(newIssue()); - userSession.logIn("john").addProjectUuidPermissions(USER, issueDto.getProjectUuid()); + userSession.logIn("john").addProjectPermission(USER, project, file); ChangelogWsResponse result = call(issueDto.getKey()); @@ -239,7 +248,7 @@ public class ChangelogActionTest { @Test public void fail_when_not_enough_permission() { IssueDto issueDto = db.issues().insertIssue(newIssue()); - userSession.logIn("john").addProjectUuidPermissions(CODEVIEWER, issueDto.getProjectUuid()); + userSession.logIn("john").addProjectPermission(CODEVIEWER, project, file); expectedException.expect(ForbiddenException.class); call(issueDto.getKey()); @@ -249,7 +258,7 @@ public class ChangelogActionTest { public void test_example() throws Exception { UserDto user = db.users().insertUser(newUserDto("john.smith", "John Smith", "john@smith.com")); IssueDto issueDto = db.issues().insertIssue(newIssue()); - userSession.logIn("john").addProjectUuidPermissions(USER, issueDto.getProjectUuid()); + userSession.logIn("john").addProjectPermission(USER, project, file); db.issues().insertFieldDiffs(issueDto, new FieldDiffs() .setUserLogin(user.getLogin()) .setDiff("severity", "MAJOR", "BLOCKER") @@ -278,8 +287,6 @@ public class ChangelogActionTest { private IssueDto newIssue() { RuleDto rule = db.rules().insertRule(newRuleDto()); - ComponentDto project = db.components().insertProject(); - ComponentDto file = db.components().insertComponent(newFileDto(project)); return newDto(rule, file, project); } diff --git a/server/sonar-server/src/test/java/org/sonar/server/issue/ws/DeleteCommentActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/issue/ws/DeleteCommentActionTest.java index 24a8d3798fd..d3d3770c096 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/issue/ws/DeleteCommentActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/issue/ws/DeleteCommentActionTest.java @@ -73,7 +73,7 @@ public class DeleteCommentActionTest { public void delete_comment() throws Exception { IssueDto issueDto = issueDbTester.insertIssue(); IssueChangeDto commentDto = issueDbTester.insertComment(issueDto, "john", "please fix it"); - userSession.logIn("john").addProjectUuidPermissions(USER, issueDto.getProjectUuid()); + loginAndAddProjectPermission("john", issueDto, USER); call(commentDto.getKey()); @@ -85,7 +85,7 @@ public class DeleteCommentActionTest { public void delete_comment_using_deprecated_key_parameter() throws Exception { IssueDto issueDto = issueDbTester.insertIssue(); IssueChangeDto commentDto = issueDbTester.insertComment(issueDto, "john", "please fix it"); - userSession.logIn("john").addProjectUuidPermissions(USER, issueDto.getProjectUuid()); + loginAndAddProjectPermission("john", issueDto, USER); tester.newRequest().setParam("key", commentDto.getKey()).setParam("text", "please have a look").execute(); @@ -97,7 +97,7 @@ public class DeleteCommentActionTest { public void fail_when_comment_does_not_belong_to_current_user() throws Exception { IssueDto issueDto = issueDbTester.insertIssue(); IssueChangeDto commentDto = issueDbTester.insertComment(issueDto, "john", "please fix it"); - userSession.logIn("another").addProjectUuidPermissions(USER, issueDto.getProjectUuid()); + loginAndAddProjectPermission("another", issueDto, USER); expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("You can only delete your own comments"); @@ -108,7 +108,7 @@ public class DeleteCommentActionTest { public void fail_when_comment_has_not_user() throws Exception { IssueDto issueDto = issueDbTester.insertIssue(); IssueChangeDto commentDto = issueDbTester.insertComment(issueDto, null, "please fix it"); - userSession.logIn("john").addProjectUuidPermissions(USER, issueDto.getProjectUuid()); + loginAndAddProjectPermission("john", issueDto, USER); expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("You can only delete your own comments"); @@ -141,7 +141,7 @@ public class DeleteCommentActionTest { public void fail_when_not_enough_permission() throws Exception { IssueDto issueDto = issueDbTester.insertIssue(); IssueChangeDto commentDto = issueDbTester.insertComment(issueDto, "john", "please fix it"); - userSession.logIn("john").addProjectUuidPermissions(CODEVIEWER, issueDto.getProjectUuid()); + loginAndAddProjectPermission("john", issueDto, CODEVIEWER); expectedException.expect(ForbiddenException.class); call(commentDto.getKey()); @@ -163,4 +163,8 @@ public class DeleteCommentActionTest { return request.execute(); } + private void loginAndAddProjectPermission(String login, IssueDto issueDto, String permission) { + userSession.logIn(login).addProjectPermission(permission, dbClient.componentDao().selectByUuid(dbTester.getSession(), issueDto.getProjectUuid()).get()); + } + } diff --git a/server/sonar-server/src/test/java/org/sonar/server/issue/ws/DoTransitionActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/issue/ws/DoTransitionActionTest.java index 682c9fe6101..68c91866b99 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/issue/ws/DoTransitionActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/issue/ws/DoTransitionActionTest.java @@ -103,19 +103,23 @@ public class DoTransitionActionTest { private IssueIndexer issueIndexer = new IssueIndexer(esTester.client(), new IssueIteratorFactory(dbClient)); private IssueUpdater issueUpdater = new IssueUpdater(dbClient, new ServerIssueStorage(system2, new DefaultRuleFinder(dbClient, defaultOrganizationProvider), dbClient, issueIndexer), mock(NotificationManager.class)); + private ComponentDto project; + private ComponentDto file; private WsAction underTest = new DoTransitionAction(dbClient, userSession, new IssueFinder(dbClient, userSession), issueUpdater, transitionService, responseWriter); private WsActionTester tester = new WsActionTester(underTest); @Before public void setUp() throws Exception { + project = componentDbTester.insertProject(); + file = componentDbTester.insertComponent(newFileDto(project)); workflow.start(); } @Test public void do_transition() throws Exception { IssueDto issueDto = issueDbTester.insertIssue(newIssue().setStatus(STATUS_OPEN).setResolution(null)); - userSession.logIn("john").addProjectUuidPermissions(USER, issueDto.getProjectUuid()); + userSession.logIn("john").addProjectPermission(USER, project, file); call(issueDto.getKey(), "confirm"); @@ -143,7 +147,7 @@ public class DoTransitionActionTest { @Test public void fail_if_no_transition_param() throws Exception { IssueDto issueDto = issueDbTester.insertIssue(newIssue().setStatus(STATUS_OPEN).setResolution(null)); - userSession.logIn("john").addProjectUuidPermissions(USER, issueDto.getProjectUuid()); + userSession.logIn("john").addProjectPermission(USER, project, file); expectedException.expect(IllegalArgumentException.class); call(issueDto.getKey(), null); @@ -152,7 +156,7 @@ public class DoTransitionActionTest { @Test public void fail_if_not_enough_permission_to_access_issue() throws Exception { IssueDto issueDto = issueDbTester.insertIssue(newIssue().setStatus(STATUS_OPEN).setResolution(null)); - userSession.logIn("john").addProjectUuidPermissions(CODEVIEWER, issueDto.getProjectUuid()); + userSession.logIn("john").addProjectPermission(CODEVIEWER, project, file); expectedException.expect(ForbiddenException.class); call(issueDto.getKey(), "confirm"); @@ -161,7 +165,7 @@ public class DoTransitionActionTest { @Test public void fail_if_not_enough_permission_to_apply_transition() throws Exception { IssueDto issueDto = issueDbTester.insertIssue(newIssue().setStatus(STATUS_OPEN).setResolution(null)); - userSession.logIn("john").addProjectUuidPermissions(USER, issueDto.getProjectUuid()); + userSession.logIn("john").addProjectPermission(USER, project, file); // False-positive transition is requiring issue admin permission expectedException.expect(ForbiddenException.class); @@ -187,8 +191,6 @@ public class DoTransitionActionTest { private IssueDto newIssue() { RuleDto rule = ruleDbTester.insertRule(newRuleDto()); - ComponentDto project = componentDbTester.insertProject(); - ComponentDto file = componentDbTester.insertComponent(newFileDto(project)); return newDto(rule, file, project); } diff --git a/server/sonar-server/src/test/java/org/sonar/server/issue/ws/EditCommentActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/issue/ws/EditCommentActionTest.java index 2c0ce12cead..dc524f6bc74 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/issue/ws/EditCommentActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/issue/ws/EditCommentActionTest.java @@ -85,7 +85,7 @@ public class EditCommentActionTest { public void edit_comment() throws Exception { IssueDto issueDto = issueDbTester.insertIssue(); IssueChangeDto commentDto = issueDbTester.insertComment(issueDto, "john", "please fix it"); - userSession.logIn("john").addProjectUuidPermissions(USER, issueDto.getProjectUuid()); + loginWithBrowsePermission("john", USER, issueDto); call(commentDto.getKey(), "please have a look"); @@ -99,7 +99,7 @@ public class EditCommentActionTest { public void edit_comment_using_deprecated_key_parameter() throws Exception { IssueDto issueDto = issueDbTester.insertIssue(); IssueChangeDto commentDto = issueDbTester.insertComment(issueDto, "john", "please fix it"); - userSession.logIn("john").addProjectUuidPermissions(USER, issueDto.getProjectUuid()); + loginWithBrowsePermission("john", USER, issueDto); tester.newRequest().setParam("key", commentDto.getKey()).setParam("text", "please have a look").execute(); @@ -113,7 +113,7 @@ public class EditCommentActionTest { public void fail_when_comment_does_not_belong_to_current_user() throws Exception { IssueDto issueDto = issueDbTester.insertIssue(); IssueChangeDto commentDto = issueDbTester.insertComment(issueDto, "john", "please fix it"); - userSession.logIn("another").addProjectUuidPermissions(USER, issueDto.getProjectUuid()); + loginWithBrowsePermission("another", USER, issueDto); expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("You can only edit your own comments"); @@ -124,7 +124,7 @@ public class EditCommentActionTest { public void fail_when_comment_has_not_user() throws Exception { IssueDto issueDto = issueDbTester.insertIssue(); IssueChangeDto commentDto = issueDbTester.insertComment(issueDto, null, "please fix it"); - userSession.logIn("john").addProjectUuidPermissions(USER, issueDto.getProjectUuid()); + loginWithBrowsePermission("john", USER, issueDto); expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("You can only edit your own comments"); @@ -159,7 +159,7 @@ public class EditCommentActionTest { public void fail_when_empty_comment_text() throws Exception { IssueDto issueDto = issueDbTester.insertIssue(); IssueChangeDto commentDto = issueDbTester.insertComment(issueDto, "john", "please fix it"); - userSession.logIn("john").addProjectUuidPermissions(USER, issueDto.getProjectUuid()); + loginWithBrowsePermission("john", USER, issueDto); expectedException.expect(IllegalArgumentException.class); call(commentDto.getKey(), ""); @@ -175,7 +175,7 @@ public class EditCommentActionTest { public void fail_when_not_enough_permission() throws Exception { IssueDto issueDto = issueDbTester.insertIssue(); IssueChangeDto commentDto = issueDbTester.insertComment(issueDto, "john", "please fix it"); - userSession.logIn("john").addProjectUuidPermissions(CODEVIEWER, issueDto.getProjectUuid()); + loginWithBrowsePermission("john", CODEVIEWER, issueDto); expectedException.expect(ForbiddenException.class); call(commentDto.getKey(), "please have a look"); @@ -197,4 +197,10 @@ public class EditCommentActionTest { setNullable(commentText, comment -> request.setParam("text", comment)); return request.execute(); } + + private void loginWithBrowsePermission(String login, String permission, IssueDto issueDto) { + userSession.logIn(login).addProjectPermission(permission, + dbClient.componentDao().selectByUuid(dbTester.getSession(), issueDto.getProjectUuid()).get(), + dbClient.componentDao().selectByUuid(dbTester.getSession(), issueDto.getComponentUuid()).get()); + } } diff --git a/server/sonar-server/src/test/java/org/sonar/server/issue/ws/SearchActionComponentsMediumTest.java b/server/sonar-server/src/test/java/org/sonar/server/issue/ws/SearchActionComponentsMediumTest.java index 43c46a306ec..28cd589d353 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/issue/ws/SearchActionComponentsMediumTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/issue/ws/SearchActionComponentsMediumTest.java @@ -494,7 +494,7 @@ public class SearchActionComponentsMediumTest { indexView(view.uuid(), newArrayList(project.uuid())); setAnyoneProjectPermission(view, UserRole.USER); - userSessionRule.logIn("john").addProjectUuidPermissions(UserRole.USER, view.uuid()); + userSessionRule.logIn("john").addProjectPermission(UserRole.USER, view); wsTester.newGetRequest(CONTROLLER_ISSUES, ACTION_SEARCH) .setParam(IssuesWsParameters.PARAM_COMPONENT_UUIDS, view.uuid()) @@ -514,7 +514,7 @@ public class SearchActionComponentsMediumTest { setAnyoneProjectPermission(view, UserRole.USER); // User has wrong permission on the view, no issue will be returned - userSessionRule.logIn("john").addProjectUuidPermissions(UserRole.CODEVIEWER, view.uuid()); + userSessionRule.logIn("john").addProjectPermission(UserRole.CODEVIEWER, view); wsTester.newGetRequest(CONTROLLER_ISSUES, ACTION_SEARCH) .setParam(IssuesWsParameters.PARAM_COMPONENT_UUIDS, view.uuid()) @@ -535,7 +535,7 @@ public class SearchActionComponentsMediumTest { indexView(subView.uuid(), newArrayList(project.uuid())); setAnyoneProjectPermission(view, UserRole.USER); - userSessionRule.logIn("john").addComponentUuidPermission(UserRole.USER, view.uuid(), subView.uuid()); + userSessionRule.logIn("john").addProjectPermission(UserRole.USER, view, subView); wsTester.newGetRequest(CONTROLLER_ISSUES, ACTION_SEARCH) .setParam(IssuesWsParameters.PARAM_COMPONENT_UUIDS, subView.uuid()) @@ -557,7 +557,7 @@ public class SearchActionComponentsMediumTest { setAnyoneProjectPermission(view, UserRole.USER); // User has wrong permission on the view, no issue will be returned - userSessionRule.logIn("john").addComponentUuidPermission(UserRole.CODEVIEWER, view.uuid(), subView.uuid()); + userSessionRule.logIn("john").addProjectPermission(UserRole.CODEVIEWER, view, subView); wsTester.newGetRequest(CONTROLLER_ISSUES, ACTION_SEARCH) .setParam(IssuesWsParameters.PARAM_COMPONENT_UUIDS, subView.uuid()) diff --git a/server/sonar-server/src/test/java/org/sonar/server/issue/ws/SearchActionMediumTest.java b/server/sonar-server/src/test/java/org/sonar/server/issue/ws/SearchActionMediumTest.java index e7da1c433fa..7041184c121 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/issue/ws/SearchActionMediumTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/issue/ws/SearchActionMediumTest.java @@ -705,7 +705,7 @@ public class SearchActionMediumTest { private void setDefaultProjectPermission(ComponentDto project) { // project can be seen by anyone and by code viewer - userSessionRule.logIn().addProjectUuidPermissions(UserRole.USER, project.uuid()); + userSessionRule.logIn().addProjectPermission(UserRole.USER, project); // TODO correctly feed default organization. Not a problem as long as issues search does not support "anyone" // for each organization GroupPermissionChange permissionChange = new GroupPermissionChange(PermissionChange.Operation.ADD, UserRole.USER, new ProjectId(project), GroupIdOrAnyone.forAnyone(project.getOrganizationUuid())); @@ -715,7 +715,7 @@ public class SearchActionMediumTest { private void setProjectPermission(ComponentDto project, String... permissions) { // project can be seen by anyone and by code viewer userSessionRule.logIn("admin"); - Arrays.stream(permissions).forEach(permission -> userSessionRule.addProjectUuidPermissions(permission, project.uuid())); + Arrays.stream(permissions).forEach(permission -> userSessionRule.addProjectPermission(permission, project)); tester.get(PermissionUpdater.class).apply(session, Arrays.stream(permissions) // TODO correctly feed default organization. Not a problem as long as issues search does not support "anyone" for each organization .map(permission -> new GroupPermissionChange(PermissionChange.Operation.ADD, permission, new ProjectId(project), GroupIdOrAnyone.forAnyone(project.getOrganizationUuid()))) diff --git a/server/sonar-server/src/test/java/org/sonar/server/issue/ws/SetSeverityActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/issue/ws/SetSeverityActionTest.java index 9ee03ecfd6c..e06e50b8a9c 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/issue/ws/SetSeverityActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/issue/ws/SetSeverityActionTest.java @@ -101,7 +101,7 @@ public class SetSeverityActionTest { @Test public void set_severity() throws Exception { IssueDto issueDto = issueDbTester.insertIssue(newIssue().setSeverity(MAJOR)); - setUserWithBrowseAndAdministerIssuePermission(issueDto.getProjectUuid()); + setUserWithBrowseAndAdministerIssuePermission(issueDto); call(issueDto.getKey(), MINOR); @@ -114,7 +114,7 @@ public class SetSeverityActionTest { @Test public void insert_entry_in_changelog_when_setting_severity() throws Exception { IssueDto issueDto = issueDbTester.insertIssue(newIssue().setSeverity(MAJOR)); - setUserWithBrowseAndAdministerIssuePermission(issueDto.getProjectUuid()); + setUserWithBrowseAndAdministerIssuePermission(issueDto); call(issueDto.getKey(), MINOR); @@ -128,7 +128,7 @@ public class SetSeverityActionTest { @Test public void fail_if_bad_severity() { IssueDto issueDto = issueDbTester.insertIssue(newIssue().setSeverity("unknown")); - setUserWithBrowseAndAdministerIssuePermission(issueDto.getProjectUuid()); + setUserWithBrowseAndAdministerIssuePermission(issueDto); expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("Value of parameter 'severity' (unknown) must be one of: [INFO, MINOR, MAJOR, CRITICAL, BLOCKER]"); @@ -144,7 +144,7 @@ public class SetSeverityActionTest { @Test public void fail_when_missing_browse_permission() throws Exception { IssueDto issueDto = issueDbTester.insertIssue(); - userSession.logIn("john").addProjectUuidPermissions(ISSUE_ADMIN, issueDto.getProjectUuid()); + logInAndAddProjectPermission(issueDto, ISSUE_ADMIN); expectedException.expect(ForbiddenException.class); call(issueDto.getKey(), MAJOR); @@ -153,7 +153,7 @@ public class SetSeverityActionTest { @Test public void fail_when_missing_administer_issue_permission() throws Exception { IssueDto issueDto = issueDbTester.insertIssue(); - userSession.logIn("john").addProjectUuidPermissions(USER, issueDto.getProjectUuid()); + logInAndAddProjectPermission(issueDto, USER); expectedException.expect(ForbiddenException.class); call(issueDto.getKey(), MAJOR); @@ -183,9 +183,14 @@ public class SetSeverityActionTest { return newDto(rule, file, project); } - private void setUserWithBrowseAndAdministerIssuePermission(String projectUuid) { + private void logInAndAddProjectPermission(IssueDto issueDto, String permission) { + userSession.logIn("john").addProjectPermission(permission, dbClient.componentDao().selectByUuid(dbTester.getSession(), issueDto.getProjectUuid()).get()); + } + + private void setUserWithBrowseAndAdministerIssuePermission(IssueDto issueDto) { + ComponentDto project = dbClient.componentDao().selectByUuid(dbTester.getSession(), issueDto.getProjectUuid()).get(); userSession.logIn("john") - .addProjectUuidPermissions(ISSUE_ADMIN, projectUuid) - .addProjectUuidPermissions(USER, projectUuid); + .addProjectPermission(ISSUE_ADMIN, project) + .addProjectPermission(USER, project); } } diff --git a/server/sonar-server/src/test/java/org/sonar/server/issue/ws/SetTagsActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/issue/ws/SetTagsActionTest.java index 2a9dbf7d550..694e530215f 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/issue/ws/SetTagsActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/issue/ws/SetTagsActionTest.java @@ -95,7 +95,7 @@ public class SetTagsActionTest { @Test public void set_tags() { IssueDto issueDto = db.issues().insertIssue(newIssue().setTags(singletonList("old-tag"))); - setUserWithBrowsePermission(issueDto.getProjectUuid()); + setUserWithBrowsePermission(issueDto); call(issueDto.getKey(), "bug", "todo"); @@ -107,7 +107,7 @@ public class SetTagsActionTest { @Test public void remove_existing_tags_when_value_is_not_set() { IssueDto issueDto = db.issues().insertIssue(newIssue().setTags(singletonList("old-tag"))); - setUserWithBrowsePermission(issueDto.getProjectUuid()); + setUserWithBrowsePermission(issueDto); call(issueDto.getKey()); @@ -118,7 +118,7 @@ public class SetTagsActionTest { @Test public void remove_existing_tags_when_value_is_empty_string() { IssueDto issueDto = db.issues().insertIssue(newIssue().setTags(singletonList("old-tag"))); - setUserWithBrowsePermission(issueDto.getProjectUuid()); + setUserWithBrowsePermission(issueDto); call(issueDto.getKey(), ""); @@ -129,7 +129,7 @@ public class SetTagsActionTest { @Test public void set_tags_using_deprecated_key_param() { IssueDto issueDto = db.issues().insertIssue(newIssue().setTags(singletonList("old-tag"))); - setUserWithBrowsePermission(issueDto.getProjectUuid()); + setUserWithBrowsePermission(issueDto); ws.newRequest().setParam("key", issueDto.getKey()).setParam("tags", "bug").execute(); @@ -140,7 +140,7 @@ public class SetTagsActionTest { @Test public void tags_are_stored_as_lowercase() { IssueDto issueDto = db.issues().insertIssue(newIssue().setTags(singletonList("old-tag"))); - setUserWithBrowsePermission(issueDto.getProjectUuid()); + setUserWithBrowsePermission(issueDto); call(issueDto.getKey(), "bug", "Convention"); @@ -151,7 +151,7 @@ public class SetTagsActionTest { @Test public void empty_tags_are_ignored() { IssueDto issueDto = db.issues().insertIssue(newIssue().setTags(singletonList("old-tag"))); - setUserWithBrowsePermission(issueDto.getProjectUuid()); + setUserWithBrowsePermission(issueDto); call(issueDto.getKey(), "security", "", "convention"); @@ -162,7 +162,7 @@ public class SetTagsActionTest { @Test public void insert_entry_in_changelog_when_setting_tags() throws Exception { IssueDto issueDto = db.issues().insertIssue(newIssue().setTags(singletonList("old-tag"))); - setUserWithBrowsePermission(issueDto.getProjectUuid()); + setUserWithBrowsePermission(issueDto); call(issueDto.getKey(), "new-tag"); @@ -176,7 +176,7 @@ public class SetTagsActionTest { @Test public void fail_when_bad_tag_format() { IssueDto issueDto = db.issues().insertIssue(newIssue().setTags(singletonList("old-tag"))); - setUserWithBrowsePermission(issueDto.getProjectUuid()); + setUserWithBrowsePermission(issueDto); expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("Tag 'pol op' is invalid. Rule tags accept only the characters: a-z, 0-9, '+', '-', '#', '.'"); @@ -194,7 +194,7 @@ public class SetTagsActionTest { @Test public void fail_when_missing_browse_permission() throws Exception { IssueDto issueDto = db.issues().insertIssue(); - userSession.logIn("john").addProjectUuidPermissions(ISSUE_ADMIN, issueDto.getProjectUuid()); + logInAndAddProjectPermission(issueDto, ISSUE_ADMIN); expectedException.expect(ForbiddenException.class); @@ -237,8 +237,12 @@ public class SetTagsActionTest { return IssueTesting.newIssue(rule, file, project); } - private void setUserWithBrowsePermission(String projectUuid) { - userSession.logIn("john").addProjectUuidPermissions(USER, projectUuid); + private void setUserWithBrowsePermission(IssueDto issueDto) { + logInAndAddProjectPermission(issueDto, USER); + } + + private void logInAndAddProjectPermission(IssueDto issueDto, String permission) { + userSession.logIn("john").addProjectPermission(permission, dbClient.componentDao().selectByUuid(db.getSession(), issueDto.getProjectUuid()).get()); } } diff --git a/server/sonar-server/src/test/java/org/sonar/server/issue/ws/SetTypeActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/issue/ws/SetTypeActionTest.java index ca5cd1b4436..b5e9af4f82e 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/issue/ws/SetTypeActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/issue/ws/SetTypeActionTest.java @@ -97,7 +97,7 @@ public class SetTypeActionTest { @Test public void set_type() throws Exception { IssueDto issueDto = issueDbTester.insertIssue(newIssue().setType(CODE_SMELL)); - setUserWithBrowseAndAdministerIssuePermission(issueDto.getProjectUuid()); + setUserWithBrowseAndAdministerIssuePermission(issueDto); call(issueDto.getKey(), BUG.name()); @@ -109,7 +109,7 @@ public class SetTypeActionTest { @Test public void insert_entry_in_changelog_when_setting_type() throws Exception { IssueDto issueDto = issueDbTester.insertIssue(newIssue().setType(CODE_SMELL)); - setUserWithBrowseAndAdministerIssuePermission(issueDto.getProjectUuid()); + setUserWithBrowseAndAdministerIssuePermission(issueDto); call(issueDto.getKey(), BUG.name()); @@ -123,7 +123,7 @@ public class SetTypeActionTest { @Test public void fail_if_bad_type_value() { IssueDto issueDto = issueDbTester.insertIssue(newIssue().setType(CODE_SMELL)); - setUserWithBrowseAndAdministerIssuePermission(issueDto.getProjectUuid()); + setUserWithBrowseAndAdministerIssuePermission(issueDto); expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("Value of parameter 'type' (unknown) must be one of: [CODE_SMELL, BUG, VULNERABILITY]"); @@ -139,7 +139,9 @@ public class SetTypeActionTest { @Test public void fail_when_missing_browse_permission() throws Exception { IssueDto issueDto = issueDbTester.insertIssue(); - userSession.logIn("john").addProjectUuidPermissions(ISSUE_ADMIN, issueDto.getProjectUuid()); + String login = "john"; + String permission = ISSUE_ADMIN; + logInAndAddProjectPermission(login, issueDto, permission); expectedException.expect(ForbiddenException.class); call(issueDto.getKey(), BUG.name()); @@ -148,7 +150,7 @@ public class SetTypeActionTest { @Test public void fail_when_missing_administer_issue_permission() throws Exception { IssueDto issueDto = issueDbTester.insertIssue(); - userSession.logIn("john").addProjectUuidPermissions(USER, issueDto.getProjectUuid()); + logInAndAddProjectPermission("john", issueDto, USER); expectedException.expect(ForbiddenException.class); call(issueDto.getKey(), BUG.name()); @@ -178,9 +180,14 @@ public class SetTypeActionTest { return newDto(rule, file, project); } - private void setUserWithBrowseAndAdministerIssuePermission(String projectUuid) { + private void setUserWithBrowseAndAdministerIssuePermission(IssueDto issueDto) { + ComponentDto project = dbClient.componentDao().selectByUuid(dbTester.getSession(), issueDto.getProjectUuid()).get(); userSession.logIn("john") - .addProjectUuidPermissions(ISSUE_ADMIN, projectUuid) - .addProjectUuidPermissions(USER, projectUuid); + .addProjectPermission(ISSUE_ADMIN, project) + .addProjectPermission(USER, project); + } + + private void logInAndAddProjectPermission(String login, IssueDto issueDto, String permission) { + userSession.logIn(login).addProjectPermission(permission, dbClient.componentDao().selectByUuid(dbTester.getSession(), issueDto.getProjectUuid()).get()); } } diff --git a/server/sonar-server/src/test/java/org/sonar/server/issue/ws/TagsActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/issue/ws/TagsActionTest.java index 2a3d61a577f..fdadb23e5c4 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/issue/ws/TagsActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/issue/ws/TagsActionTest.java @@ -213,7 +213,7 @@ public class TagsActionTest { } private void setUserWithBrowsePermission(IssueDto issue) { - userSession.logIn("john").addProjectUuidPermissions(USER, issue.getProjectUuid()); + userSession.logIn("john").addProjectPermission(USER, db.getDbClient().componentDao().selectByUuid(db.getSession(), issue.getProjectUuid()).get()); } private IssueDto insertIssueWithBrowsePermission(RuleDefinitionDto rule, String... tags) { diff --git a/server/sonar-server/src/test/java/org/sonar/server/measure/custom/ws/CreateActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/measure/custom/ws/CreateActionTest.java index f8c2a445f7f..13a6c7d1d69 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/measure/custom/ws/CreateActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/measure/custom/ws/CreateActionTest.java @@ -69,17 +69,15 @@ public class CreateActionTest { @Rule public UserSessionRule userSession = UserSessionRule.standalone(); - @Rule public ExpectedException expectedException = ExpectedException.none(); - @Rule public DbTester db = DbTester.create(System2.INSTANCE); - @Rule public EsTester es = new EsTester(new UserIndexDefinition(new MapSettings())); DbClient dbClient = db.getDbClient(); + ComponentDto project; final DbSession dbSession = db.getSession(); @@ -97,12 +95,15 @@ public class CreateActionTest { .setActive(true)); dbSession.commit(); - userSession.logIn("login").addProjectUuidPermissions(UserRole.ADMIN, DEFAULT_PROJECT_UUID); + OrganizationDto organizationDto = db.organizations().insert(); + project = ComponentTesting.newProjectDto(organizationDto, DEFAULT_PROJECT_UUID).setKey(DEFAULT_PROJECT_KEY); + dbClient.componentDao().insert(dbSession, project); + dbSession.commit(); + userSession.logIn("login").addProjectPermission(UserRole.ADMIN, project); } @Test public void create_boolean_custom_measure_in_db() throws Exception { - insertProject(DEFAULT_PROJECT_UUID); MetricDto metric = insertMetric(BOOL); newRequest() @@ -123,7 +124,6 @@ public class CreateActionTest { @Test public void create_int_custom_measure_in_db() throws Exception { - insertProject(DEFAULT_PROJECT_UUID); MetricDto metric = insertMetric(INT); newRequest() @@ -139,7 +139,6 @@ public class CreateActionTest { @Test public void create_text_custom_measure_in_db() throws Exception { - insertProject(DEFAULT_PROJECT_UUID); MetricDto metric = insertMetric(STRING); newRequest() @@ -154,9 +153,8 @@ public class CreateActionTest { @Test public void create_text_custom_measure_as_project_admin() throws Exception { - insertProject(DEFAULT_PROJECT_UUID); MetricDto metric = insertMetric(STRING); - userSession.logIn("login").addProjectUuidPermissions(UserRole.ADMIN, DEFAULT_PROJECT_UUID); + userSession.logIn("login").addProjectPermission(UserRole.ADMIN, project); newRequest() .setParam(CreateAction.PARAM_PROJECT_ID, DEFAULT_PROJECT_UUID) @@ -170,7 +168,6 @@ public class CreateActionTest { @Test public void create_text_custom_measure_with_metric_key() throws Exception { - insertProject(DEFAULT_PROJECT_UUID); MetricDto metric = insertMetric(STRING); newRequest() @@ -185,7 +182,6 @@ public class CreateActionTest { @Test public void create_text_custom_measure_with_project_key() throws Exception { - insertProject(DEFAULT_PROJECT_UUID); MetricDto metric = insertMetric(STRING); newRequest() @@ -200,7 +196,6 @@ public class CreateActionTest { @Test public void create_float_custom_measure_in_db() throws Exception { - insertProject(DEFAULT_PROJECT_UUID); MetricDto metric = insertMetric(FLOAT); newRequest() @@ -216,7 +211,6 @@ public class CreateActionTest { @Test public void create_work_duration_custom_measure_in_db() throws Exception { - insertProject(DEFAULT_PROJECT_UUID); MetricDto metric = insertMetric(WORK_DUR); newRequest() @@ -232,7 +226,6 @@ public class CreateActionTest { @Test public void create_level_type_custom_measure_in_db() throws Exception { - insertProject(DEFAULT_PROJECT_UUID); MetricDto metric = insertMetric(LEVEL); newRequest() @@ -247,7 +240,6 @@ public class CreateActionTest { @Test public void response_with_object_and_id() throws Exception { - insertProject(DEFAULT_PROJECT_UUID); MetricDto metric = insertMetric(STRING); WsTester.Result response = newRequest() @@ -266,10 +258,11 @@ public class CreateActionTest { @Test public void create_custom_measure_on_a_view() throws Exception { String viewUuid = "VIEW_UUID"; - dbClient.componentDao().insert(dbSession, ComponentTesting.newView(db.organizations().insert(), viewUuid)); + ComponentDto view = ComponentTesting.newView(db.organizations().insert(), viewUuid); + dbClient.componentDao().insert(dbSession, view); dbSession.commit(); MetricDto metric = insertMetric(BOOL); - userSession.logIn("login").addProjectUuidPermissions(UserRole.ADMIN, viewUuid); + userSession.logIn("login").addProjectPermission(UserRole.ADMIN, view); newRequest() .setParam(CreateAction.PARAM_PROJECT_ID, viewUuid) @@ -293,7 +286,7 @@ public class CreateActionTest { dbClient.componentDao().insert(dbSession, ComponentTesting.newSubView(view, subViewUuid, "SUB_VIEW_KEY")); dbSession.commit(); MetricDto metric = insertMetric(BOOL); - userSession.logIn("login").addProjectUuidPermissions(UserRole.ADMIN, view.uuid()); + userSession.logIn("login").addProjectPermission(UserRole.ADMIN, view); newRequest() .setParam(CreateAction.PARAM_PROJECT_ID, subViewUuid) @@ -323,7 +316,6 @@ public class CreateActionTest { public void fail_when_project_id_nor_project_key_provided() throws Exception { expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("Either 'projectId' or 'projectKey' must be provided, not both"); - insertProject(DEFAULT_PROJECT_UUID); MetricDto metric = insertMetric(STRING); newRequest() @@ -336,7 +328,6 @@ public class CreateActionTest { public void fail_when_project_id_and_project_key_are_provided() throws Exception { expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("Either 'projectId' or 'projectKey' must be provided, not both"); - insertProject(DEFAULT_PROJECT_UUID); MetricDto metric = insertMetric(STRING); newRequest() @@ -351,8 +342,7 @@ public class CreateActionTest { public void fail_when_project_key_does_not_exist_in_db() throws Exception { expectedException.expect(NotFoundException.class); expectedException.expectMessage("Component key 'another-project-key' not found"); - insertProject(DEFAULT_PROJECT_UUID); - MetricDto metric = insertMetric(STRING); + insertMetric(STRING); newRequest() .setParam(CreateAction.PARAM_PROJECT_KEY, "another-project-key") @@ -365,7 +355,6 @@ public class CreateActionTest { public void fail_when_project_id_does_not_exist_in_db() throws Exception { expectedException.expect(NotFoundException.class); expectedException.expectMessage("Component id 'another-project-uuid' not found"); - insertProject(DEFAULT_PROJECT_UUID); MetricDto metric = insertMetric(STRING); newRequest() @@ -379,8 +368,7 @@ public class CreateActionTest { public void fail_when_metric_id_nor_metric_key_is_provided() throws Exception { expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("The metric id or the metric key must be provided, not both."); - insertProject(DEFAULT_PROJECT_UUID); - MetricDto metric = insertMetric(STRING); + insertMetric(STRING); newRequest() .setParam(CreateAction.PARAM_PROJECT_ID, DEFAULT_PROJECT_UUID) @@ -392,7 +380,6 @@ public class CreateActionTest { public void fail_when_metric_id_and_metric_key_are_provided() throws Exception { expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("The metric id or the metric key must be provided, not both."); - insertProject(DEFAULT_PROJECT_UUID); MetricDto metric = insertMetric(STRING); newRequest() @@ -405,9 +392,6 @@ public class CreateActionTest { @Test public void fail_when_metric_is_not_found_in_db() throws Exception { - dbClient.componentDao().insert(dbSession, ComponentTesting.newProjectDto(db.organizations().insert(), DEFAULT_PROJECT_UUID)); - dbSession.commit(); - expectedException.expect(RowNotFoundException.class); expectedException.expectMessage("Metric id '42' not found"); @@ -420,7 +404,6 @@ public class CreateActionTest { @Test public void fail_when_measure_already_exists_on_same_project_and_same_metric() throws Exception { - insertProject(DEFAULT_PROJECT_UUID); MetricDto metric = insertMetric(STRING); expectedException.expect(ServerException.class); @@ -440,7 +423,6 @@ public class CreateActionTest { @Test public void fail_when_value_is_not_well_formatted() throws Exception { - insertProject(DEFAULT_PROJECT_UUID); MetricDto metric = insertMetric(BOOL); expectedException.expect(BadRequestException.class); @@ -455,7 +437,6 @@ public class CreateActionTest { @Test public void fail_when_not_project_administrator() throws Exception { userSession.logIn(); - insertProject(DEFAULT_PROJECT_UUID); MetricDto metric = insertMetric(STRING); expectedException.expect(ForbiddenException.class); @@ -471,8 +452,6 @@ public class CreateActionTest { public void fail_when_not_a_project() throws Exception { MetricDto metric = MetricTesting.newMetricDto().setEnabled(true).setValueType(STRING.name()).setKey("metric-key"); dbClient.metricDao().insert(dbSession, metric); - ComponentDto project = ComponentTesting.newProjectDto(db.organizations().insert(), DEFAULT_PROJECT_UUID).setKey(DEFAULT_PROJECT_KEY); - dbClient.componentDao().insert(dbSession, project); dbClient.componentDao().insert(dbSession, ComponentTesting.newDirectory(project, "directory-uuid", "path/to/directory").setKey("directory-key")); dbSession.commit(); @@ -497,9 +476,4 @@ public class CreateActionTest { return metric; } - private void insertProject(String projectUuid) { - OrganizationDto organizationDto = db.organizations().insert(); - dbClient.componentDao().insert(dbSession, ComponentTesting.newProjectDto(organizationDto, projectUuid).setKey(DEFAULT_PROJECT_KEY)); - dbSession.commit(); - } } diff --git a/server/sonar-server/src/test/java/org/sonar/server/measure/custom/ws/DeleteActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/measure/custom/ws/DeleteActionTest.java index c96d9d8daa6..ddc01c1061c 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/measure/custom/ws/DeleteActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/measure/custom/ws/DeleteActionTest.java @@ -64,7 +64,7 @@ public class DeleteActionTest { @Test public void project_administrator_can_delete_custom_measures() throws Exception { ComponentDto project = db.components().insertProject(); - userSession.logIn().addProjectUuidPermissions(UserRole.ADMIN, project.uuid()); + userSession.logIn().addProjectPermission(UserRole.ADMIN, project); long id = insertCustomMeasure(project); newRequest().setParam(PARAM_ID, valueOf(id)).execute(); diff --git a/server/sonar-server/src/test/java/org/sonar/server/measure/custom/ws/MetricsActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/measure/custom/ws/MetricsActionTest.java index c979aa7d2e7..a6e20b455a9 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/measure/custom/ws/MetricsActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/measure/custom/ws/MetricsActionTest.java @@ -76,7 +76,7 @@ public class MetricsActionTest { .setActive(true)); ws = new WsTester(new CustomMeasuresWs(new MetricsAction(dbClient, userSession, new ComponentFinder(dbClient)))); defaultProject = insertDefaultProject(); - userSession.logIn().addProjectUuidPermissions(UserRole.ADMIN, defaultProject.uuid()); + userSession.logIn().addProjectPermission(UserRole.ADMIN, defaultProject); } @Test @@ -145,7 +145,7 @@ public class MetricsActionTest { @Test public void list_metrics_as_a_project_admin() throws Exception { insertCustomMetric("metric-key-1"); - userSession.logIn("login").addProjectUuidPermissions(UserRole.ADMIN, defaultProject.uuid()); + userSession.logIn("login").addProjectPermission(UserRole.ADMIN, defaultProject); String response = newRequest().outputAsString(); diff --git a/server/sonar-server/src/test/java/org/sonar/server/measure/custom/ws/SearchActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/measure/custom/ws/SearchActionTest.java index 06f5bbc8045..b9ea1be717e 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/measure/custom/ws/SearchActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/measure/custom/ws/SearchActionTest.java @@ -81,7 +81,7 @@ public class SearchActionTest { CustomMeasureJsonWriter customMeasureJsonWriter = new CustomMeasureJsonWriter(new UserJsonWriter(userSessionRule)); ws = new WsTester(new CustomMeasuresWs(new SearchAction(dbClient, customMeasureJsonWriter, userSessionRule, new ComponentFinder(dbClient)))); defaultProject = insertDefaultProject(); - userSessionRule.logIn().addProjectUuidPermissions(UserRole.ADMIN, defaultProject.uuid()); + userSessionRule.logIn().addProjectPermission(UserRole.ADMIN, defaultProject); db.getDbClient().userDao().insert(dbSession, new UserDto() .setLogin("login") @@ -200,7 +200,7 @@ public class SearchActionTest { @Test public void search_as_project_admin() throws Exception { - userSessionRule.logIn("login").addProjectUuidPermissions(UserRole.ADMIN, DEFAULT_PROJECT_UUID); + userSessionRule.logIn("login").addProjectPermission(UserRole.ADMIN, defaultProject); MetricDto metric1 = insertCustomMetric(1); insertCustomMeasure(1, metric1); diff --git a/server/sonar-server/src/test/java/org/sonar/server/measure/custom/ws/UpdateActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/measure/custom/ws/UpdateActionTest.java index b5e151d3638..193f27620d0 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/measure/custom/ws/UpdateActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/measure/custom/ws/UpdateActionTest.java @@ -328,6 +328,6 @@ public class UpdateActionTest { } private void logInAsProjectAdministrator(ComponentDto component) { - userSessionRule.logIn("login").addProjectUuidPermissions(UserRole.ADMIN, component.uuid()); + userSessionRule.logIn("login").addProjectPermission(UserRole.ADMIN, component); } } diff --git a/server/sonar-server/src/test/java/org/sonar/server/measure/ws/ComponentActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/measure/ws/ComponentActionTest.java index 93dce596cd1..8ae3aabc805 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/measure/ws/ComponentActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/measure/ws/ComponentActionTest.java @@ -96,8 +96,8 @@ public class ComponentActionTest { @Test public void provided_project() { - componentDb.insertComponent(newProjectDto(db.getDefaultOrganization(), PROJECT_UUID)); - userSession.addProjectUuidPermissions(UserRole.USER, PROJECT_UUID); + ComponentDto project = componentDb.insertComponent(newProjectDto(db.getDefaultOrganization(), PROJECT_UUID)); + userSession.addProjectPermission(UserRole.USER, project); insertNclocMetric(); ComponentWsResponse response = newRequest(PROJECT_UUID, "ncloc"); diff --git a/server/sonar-server/src/test/java/org/sonar/server/measure/ws/ComponentTreeActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/measure/ws/ComponentTreeActionTest.java index 8ebad37a738..95a9f77d4bb 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/measure/ws/ComponentTreeActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/measure/ws/ComponentTreeActionTest.java @@ -148,7 +148,7 @@ public class ComponentTreeActionTest { .setPeriodDate(System.currentTimeMillis()) .setPeriodMode("last_version") .setPeriodDate(System.currentTimeMillis())); - userSession.anonymous().addProjectUuidPermissions(UserRole.USER, "project-uuid"); + userSession.anonymous().addProjectPermission(UserRole.USER, projectDto); ComponentDto directoryDto = newDirectory(projectDto, "directory-uuid", "path/to/directory").setName("directory-1"); componentDb.insertComponent(directoryDto); ComponentDto file = newFileDto(directoryDto, null, "file-uuid").setName("file-1"); @@ -179,7 +179,7 @@ public class ComponentTreeActionTest { public void load_measures_with_best_value() { ComponentDto projectDto = newProjectDto(db.getDefaultOrganization(), "project-uuid"); SnapshotDto projectSnapshot = componentDb.insertProjectAndSnapshot(projectDto); - userSession.anonymous().addProjectUuidPermissions(UserRole.USER, "project-uuid"); + userSession.anonymous().addProjectPermission(UserRole.USER, projectDto); ComponentDto directoryDto = newDirectory(projectDto, "directory-uuid", "path/to/directory").setName("directory-1"); componentDb.insertComponent(directoryDto); ComponentDto file = newFileDto(directoryDto, null, "file-uuid").setName("file-1"); @@ -221,8 +221,8 @@ public class ComponentTreeActionTest { @Test public void use_best_value_for_rating() { - userSession.anonymous().addProjectUuidPermissions(UserRole.USER, "project-uuid"); ComponentDto projectDto = newProjectDto(db.getDefaultOrganization(), "project-uuid"); + userSession.anonymous().addProjectPermission(UserRole.USER, projectDto); componentDb.insertComponent(projectDto); SnapshotDto projectSnapshot = dbClient.snapshotDao().insert(dbSession, newAnalysis(projectDto) .setPeriodDate(parseDateTime("2016-01-11T10:49:50+0100").getTime()) diff --git a/server/sonar-server/src/test/java/org/sonar/server/measure/ws/SearchHistoryActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/measure/ws/SearchHistoryActionTest.java index 24e464f9190..dfc31efbfd4 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/measure/ws/SearchHistoryActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/measure/ws/SearchHistoryActionTest.java @@ -94,7 +94,7 @@ public class SearchHistoryActionTest { public void setUp() { project = newProjectDto(db.getDefaultOrganization()); analysis = db.components().insertProjectAndSnapshot(project); - userSession.addProjectUuidPermissions(UserRole.USER, project.uuid()); + userSession.addProjectPermission(UserRole.USER, project); nclocMetric = insertNclocMetric(); complexityMetric = insertComplexityMetric(); newViolationMetric = insertNewViolationMetric(); @@ -105,7 +105,7 @@ public class SearchHistoryActionTest { @Test public void empty_response() { project = db.components().insertProject(); - userSession.addProjectUuidPermissions(UserRole.USER, project.uuid()); + userSession.addProjectPermission(UserRole.USER, project); wsRequest .setComponent(project.getKey()) .setMetrics(singletonList(complexityMetric.getKey())); @@ -173,7 +173,7 @@ public class SearchHistoryActionTest { @Test public void pagination_applies_to_analyses() { project = db.components().insertProject(); - userSession.addProjectUuidPermissions(UserRole.USER, project.uuid()); + userSession.addProjectPermission(UserRole.USER, project); List analysisDates = LongStream.rangeClosed(1, 9) .mapToObj(i -> dbClient.snapshotDao().insert(dbSession, newAnalysis(project).setCreatedAt(i * 1_000_000_000))) .peek(a -> dbClient.measureDao().insert(dbSession, newMeasureDto(complexityMetric, project, a).setValue(101d))) @@ -192,7 +192,7 @@ public class SearchHistoryActionTest { @Test public void inclusive_from_and_to_dates() { project = db.components().insertProject(); - userSession.addProjectUuidPermissions(UserRole.USER, project.uuid()); + userSession.addProjectPermission(UserRole.USER, project); List analysisDates = LongStream.rangeClosed(1, 9) .mapToObj(i -> dbClient.snapshotDao().insert(dbSession, newAnalysis(project).setCreatedAt(System2.INSTANCE.now() + i * 1_000_000_000L))) .peek(a -> dbClient.measureDao().insert(dbSession, newMeasureDto(complexityMetric, project, a).setValue(Double.valueOf(a.getCreatedAt())))) @@ -263,7 +263,7 @@ public class SearchHistoryActionTest { @Test public void fail_if_not_enough_permissions() { - userSession.logIn().addProjectUuidPermissions(UserRole.ADMIN, project.uuid()); + userSession.logIn().addProjectPermission(UserRole.ADMIN, project); expectedException.expect(ForbiddenException.class); @@ -293,7 +293,7 @@ public class SearchHistoryActionTest { @Test public void json_example() { project = db.components().insertProject(); - userSession.addProjectUuidPermissions(UserRole.USER, project.uuid()); + userSession.addProjectPermission(UserRole.USER, project); long now = parseDateTime("2017-01-23T17:00:53+0100").getTime(); LongStream.rangeClosed(0, 2) .mapToObj(i -> dbClient.snapshotDao().insert(dbSession, newAnalysis(project).setCreatedAt(now + i * 24 * 1_000 * 60 * 60))) diff --git a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/AddGroupActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/AddGroupActionTest.java index cf047f6794f..85d258bdb70 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/AddGroupActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/AddGroupActionTest.java @@ -301,7 +301,7 @@ public class AddGroupActionTest extends BasePermissionWsTest { public void adding_project_permission_is_allowed_to_project_administrators() throws Exception { GroupDto group = db.users().insertGroup(db.getDefaultOrganization(), "sonar-administrators"); ComponentDto project = db.components().insertProject(); - userSession.logIn().addProjectUuidPermissions(UserRole.ADMIN, project.uuid()); + userSession.logIn().addProjectPermission(UserRole.ADMIN, project); newRequest() .setParam(PARAM_GROUP_NAME, group.getName()) diff --git a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/AddUserActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/AddUserActionTest.java index 1ead26ac663..2cc8fa0bfce 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/AddUserActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/AddUserActionTest.java @@ -255,7 +255,7 @@ public class AddUserActionTest extends BasePermissionWsTest { public void adding_project_permission_is_allowed_to_project_administrators() throws Exception { ComponentDto project = db.components().insertProject(); - userSession.logIn().addProjectUuidPermissions(UserRole.ADMIN, project.uuid()); + userSession.logIn().addProjectPermission(UserRole.ADMIN, project); newRequest() .setParam(PARAM_USER_LOGIN, user.getLogin()) diff --git a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/GroupsActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/GroupsActionTest.java index 077a33c362a..d755750c72f 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/GroupsActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/GroupsActionTest.java @@ -164,7 +164,7 @@ public class GroupsActionTest extends BasePermissionWsTest { GroupDto groupWithoutPermission = db.users().insertGroup(organizationDto, "group-without-permission"); - userSession.logIn().addProjectUuidPermissions(ADMIN, "project-uuid"); + userSession.logIn().addProjectPermission(ADMIN, project); String result = newRequest() .setParam(PARAM_PERMISSION, ISSUE_ADMIN) .setParam(PARAM_PROJECT_ID, "project-uuid") diff --git a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/RemoveGroupActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/RemoveGroupActionTest.java index 32c66ee1040..5eb2310c45f 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/RemoveGroupActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/RemoveGroupActionTest.java @@ -296,7 +296,7 @@ public class RemoveGroupActionTest extends BasePermissionWsTest ComponentDto project = db.components().insertProject(); db.users().insertProjectPermissionOnUser(user, CODEVIEWER, project); db.users().insertProjectPermissionOnUser(user, ISSUE_ADMIN, project); - userSession.logIn().addProjectUuidPermissions(UserRole.ADMIN, project.uuid()); + userSession.logIn().addProjectPermission(UserRole.ADMIN, project); newRequest() .setParam(PARAM_USER_LOGIN, user.getLogin()) diff --git a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/SearchProjectPermissionsActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/SearchProjectPermissionsActionTest.java index 4c2996e7ba3..5759b7c9e7a 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/SearchProjectPermissionsActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/SearchProjectPermissionsActionTest.java @@ -120,8 +120,8 @@ public class SearchProjectPermissionsActionTest extends BasePermissionWsTest { UserDto withoutPermission = db.users().insertUser(newUserDto()); db.organizations().addMember(db.getDefaultOrganization(), withoutPermission); - userSession.logIn().addProjectUuidPermissions(SYSTEM_ADMIN, project.uuid()); + userSession.logIn().addProjectPermission(SYSTEM_ADMIN, project); String result = newRequest() .setParam(PARAM_PERMISSION, ISSUE_ADMIN) .setParam(PARAM_PROJECT_ID, project.uuid()) diff --git a/server/sonar-server/src/test/java/org/sonar/server/project/ws/DeleteActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/project/ws/DeleteActionTest.java index b2a493d5a39..eba3ee37746 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/project/ws/DeleteActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/project/ws/DeleteActionTest.java @@ -70,11 +70,11 @@ public class DeleteActionTest { @Before public void setUp() { ws = new WsTester(new ProjectsWs( - new DeleteAction( - componentCleanerService, - new ComponentFinder(dbClient), - dbClient, - userSessionRule))); + new DeleteAction( + componentCleanerService, + new ComponentFinder(dbClient), + dbClient, + userSessionRule))); } @Test @@ -107,7 +107,7 @@ public class DeleteActionTest { @Test public void project_administrator_deletes_the_project_by_uuid() throws Exception { ComponentDto project = componentDbTester.insertProject(); - userSessionRule.logIn().addProjectUuidPermissions(UserRole.ADMIN, project.uuid()); + userSessionRule.logIn().addProjectPermission(UserRole.ADMIN, project); call(newRequest().setParam(PARAM_PROJECT_ID, project.uuid())); @@ -117,7 +117,7 @@ public class DeleteActionTest { @Test public void project_administrator_deletes_the_project_by_key() throws Exception { ComponentDto project = componentDbTester.insertProject(); - userSessionRule.logIn().addProjectUuidPermissions(UserRole.ADMIN, project.uuid()); + userSessionRule.logIn().addProjectPermission(UserRole.ADMIN, project); call(newRequest().setParam(PARAM_PROJECT, project.key())); @@ -128,7 +128,10 @@ public class DeleteActionTest { public void return_403_if_not_project_admin_nor_org_admin() throws Exception { ComponentDto project = componentDbTester.insertProject(); - userSessionRule.logIn().addProjectUuidPermissions(project.uuid(), UserRole.CODEVIEWER, UserRole.ISSUE_ADMIN, UserRole.USER); + userSessionRule.logIn() + .addProjectPermission(UserRole.CODEVIEWER, project) + .addProjectPermission(UserRole.ISSUE_ADMIN, project) + .addProjectPermission(UserRole.USER, project); expectedException.expect(ForbiddenException.class); call(newRequest().setParam(PARAM_PROJECT_ID, project.uuid())); diff --git a/server/sonar-server/src/test/java/org/sonar/server/projectanalysis/ws/CreateEventActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/projectanalysis/ws/CreateEventActionTest.java index 8424b774e1f..e4192a16d39 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/projectanalysis/ws/CreateEventActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/projectanalysis/ws/CreateEventActionTest.java @@ -42,7 +42,6 @@ import org.sonar.server.exceptions.NotFoundException; import org.sonar.server.tester.UserSessionRule; import org.sonar.server.ws.TestRequest; import org.sonar.server.ws.WsActionTester; -import org.sonarqube.ws.MediaTypes; import org.sonarqube.ws.ProjectAnalyses; import org.sonarqube.ws.ProjectAnalyses.CreateEventResponse; import org.sonarqube.ws.client.projectanalysis.CreateEventRequest; @@ -354,7 +353,7 @@ public class CreateEventActionTest { } private void logInAsProjectAdministrator(ComponentDto project) { - userSession.logIn().addProjectUuidPermissions(UserRole.ADMIN, project.uuid()); + userSession.logIn().addProjectPermission(UserRole.ADMIN, project); } private CreateEventResponse call(CreateEventRequest.Builder requestBuilder) { diff --git a/server/sonar-server/src/test/java/org/sonar/server/projectanalysis/ws/DeleteActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/projectanalysis/ws/DeleteActionTest.java index 9f37bae452a..01be23ac7e2 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/projectanalysis/ws/DeleteActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/projectanalysis/ws/DeleteActionTest.java @@ -130,6 +130,6 @@ public class DeleteActionTest { } private void logInAsProjectAdministrator(ComponentDto project) { - userSession.logIn().addProjectUuidPermissions(UserRole.ADMIN, project.uuid()); + userSession.logIn().addProjectPermission(UserRole.ADMIN, project); } } diff --git a/server/sonar-server/src/test/java/org/sonar/server/projectanalysis/ws/DeleteEventActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/projectanalysis/ws/DeleteEventActionTest.java index 65be20d0827..b298e3e799a 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/projectanalysis/ws/DeleteEventActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/projectanalysis/ws/DeleteEventActionTest.java @@ -156,6 +156,6 @@ public class DeleteEventActionTest { } private void logInAsProjectAdministrator(ComponentDto project) { - userSession.logIn().addProjectUuidPermissions(UserRole.ADMIN, project.uuid()); + userSession.logIn().addProjectPermission(UserRole.ADMIN, project); } } diff --git a/server/sonar-server/src/test/java/org/sonar/server/projectanalysis/ws/SearchActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/projectanalysis/ws/SearchActionTest.java index c214937db6e..d9a22a65061 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/projectanalysis/ws/SearchActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/projectanalysis/ws/SearchActionTest.java @@ -80,7 +80,7 @@ public class SearchActionTest { public void json_example() { OrganizationDto organizationDto = db.organizations().insert(); ComponentDto project = db.components().insertComponent(newProjectDto(organizationDto).setKey(KEY_PROJECT_EXAMPLE_001)); - userSession.addProjectUuidPermissions(UserRole.USER, project.uuid()); + userSession.addProjectPermission(UserRole.USER, project); SnapshotDto a1 = db.components().insertSnapshot(newAnalysis(project).setUuid("A1").setCreatedAt(parseDateTime("2016-12-11T17:12:45+0100").getTime())); SnapshotDto a2 = db.components().insertSnapshot(newAnalysis(project).setUuid("A2").setCreatedAt(parseDateTime("2016-12-12T17:12:45+0100").getTime())); db.events().insertEvent(newEvent(a1).setUuid("E11") @@ -105,7 +105,7 @@ public class SearchActionTest { @Test public void return_analyses_ordered_by_analysis_date() { ComponentDto project = db.components().insertComponent(newProjectDto(db.organizations().insert()).setKey("P1")); - userSession.addProjectUuidPermissions(UserRole.USER, project.uuid()); + userSession.addProjectPermission(UserRole.USER, project); db.components().insertSnapshot(newAnalysis(project).setUuid("A1").setCreatedAt(1_000_000L)); db.components().insertSnapshot(newAnalysis(project).setUuid("A2").setCreatedAt(2_000_000L)); db.components().insertSnapshot(newAnalysis(project).setUuid("A3").setCreatedAt(3_000_000L)); @@ -122,7 +122,7 @@ public class SearchActionTest { @Test public void return_only_processed_analyses() { ComponentDto project = db.components().insertComponent(newProjectDto(db.getDefaultOrganization()).setKey("P1")); - userSession.addProjectUuidPermissions(UserRole.USER, project.uuid()); + userSession.addProjectPermission(UserRole.USER, project); db.components().insertSnapshot(newAnalysis(project).setUuid("A1")); db.components().insertSnapshot(newAnalysis(project).setUuid("A2").setStatus(SnapshotDto.STATUS_UNPROCESSED)); @@ -136,7 +136,7 @@ public class SearchActionTest { public void return_events() { OrganizationDto organizationDto = db.organizations().insert(); ComponentDto project = db.components().insertComponent(newProjectDto(organizationDto).setKey("P1")); - userSession.addProjectUuidPermissions(UserRole.USER, project.uuid()); + userSession.addProjectPermission(UserRole.USER, project); SnapshotDto a1 = db.components().insertSnapshot(newAnalysis(project).setUuid("A1")); SnapshotDto a42 = db.components().insertSnapshot(newAnalysis(newProjectDto(organizationDto)).setUuid("A42")); EventDto e1 = db.events().insertEvent(newEvent(a1).setUuid("E1").setName("N1").setCategory(EventCategory.QUALITY_GATE.getLabel()).setDescription("D1")); @@ -156,7 +156,7 @@ public class SearchActionTest { @Test public void paginate_analyses() { ComponentDto project = db.components().insertProject(); - userSession.addProjectUuidPermissions(UserRole.USER, project.uuid()); + userSession.addProjectPermission(UserRole.USER, project); IntStream.rangeClosed(1, 9).forEach(i -> db.components().insertSnapshot(newAnalysis(project).setCreatedAt(1_000_000L * i).setUuid("A" + i))); SearchResponse result = call(SearchRequest.builder() @@ -172,7 +172,7 @@ public class SearchActionTest { @Test public void filter_by_category() { ComponentDto project = db.components().insertComponent(newProjectDto(db.organizations().insert()).setKey("P1")); - userSession.addProjectUuidPermissions(UserRole.USER, project.uuid()); + userSession.addProjectPermission(UserRole.USER, project); SnapshotDto a1 = db.components().insertSnapshot(newAnalysis(project).setUuid("A1")); SnapshotDto a2 = db.components().insertSnapshot(newAnalysis(project).setUuid("A2")); SnapshotDto a42 = db.components().insertSnapshot(newAnalysis(project).setUuid("A42")); @@ -193,7 +193,7 @@ public class SearchActionTest { @Test public void paginate_with_filter_on_category() { ComponentDto project = db.components().insertComponent(newProjectDto(db.organizations().insert()).setKey("P1")); - userSession.addProjectUuidPermissions(UserRole.USER, project.uuid()); + userSession.addProjectPermission(UserRole.USER, project); SnapshotDto a1 = db.components().insertSnapshot(newAnalysis(project).setUuid("A1").setCreatedAt(1_000_000L)); SnapshotDto a2 = db.components().insertSnapshot(newAnalysis(project).setUuid("A2").setCreatedAt(2_000_000L)); SnapshotDto a3 = db.components().insertSnapshot(newAnalysis(project).setUuid("A3").setCreatedAt(3_000_000L)); diff --git a/server/sonar-server/src/test/java/org/sonar/server/projectanalysis/ws/UpdateEventActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/projectanalysis/ws/UpdateEventActionTest.java index f59583af161..2524d7e2f36 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/projectanalysis/ws/UpdateEventActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/projectanalysis/ws/UpdateEventActionTest.java @@ -82,6 +82,7 @@ public class UpdateEventActionTest { assertJson(result).isSimilarTo(getClass().getResource("update_event-example.json")); } + @Test public void update_name_in_db() { SnapshotDto analysis = createAnalysisAndLogInAsProjectAdministrator("5.6"); @@ -161,7 +162,7 @@ public class UpdateEventActionTest { ComponentDto project = newProjectDto(db.organizations().insert()); SnapshotDto analysis = db.components().insertProjectAndSnapshot(project); db.events().insertEvent(newEvent(analysis).setUuid("E1")); - userSession.logIn().addProjectUuidPermissions(project.uuid(), UserRole.USER); + userSession.logIn().addProjectPermission(UserRole.USER, project); expectedException.expect(ForbiddenException.class); @@ -232,7 +233,7 @@ public class UpdateEventActionTest { } private void logInAsProjectAdministrator(ComponentDto project) { - userSession.logIn().addProjectUuidPermissions(UserRole.ADMIN, project.uuid()); + userSession.logIn().addProjectPermission(UserRole.ADMIN, project); } private SnapshotDto createAnalysisAndLogInAsProjectAdministrator(String version) { diff --git a/server/sonar-server/src/test/java/org/sonar/server/projectlink/ws/CreateActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/projectlink/ws/CreateActionTest.java index 2178d69340c..81fc3651c4f 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/projectlink/ws/CreateActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/projectlink/ws/CreateActionTest.java @@ -226,6 +226,6 @@ public class CreateActionTest { } private void logInAsProjectAdministrator(ComponentDto project) { - userSession.logIn().addProjectUuidPermissions(UserRole.ADMIN, project.uuid()); + userSession.logIn().addProjectPermission(UserRole.ADMIN, project); } } diff --git a/server/sonar-server/src/test/java/org/sonar/server/projectlink/ws/DeleteActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/projectlink/ws/DeleteActionTest.java index 06d0a56041e..ad81d1daea9 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/projectlink/ws/DeleteActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/projectlink/ws/DeleteActionTest.java @@ -100,7 +100,7 @@ public class DeleteActionTest { ComponentLinkDto customLink2 = insertCustomLink(project2.uuid()); Long id1 = customLink1.getId(); Long id2 = customLink2.getId(); - userSession.logIn().addProjectUuidPermissions(UserRole.ADMIN, project1.uuid(), project2.uuid()); + userSession.logIn().addProjectPermission(UserRole.ADMIN, project1, project2); deleteLink(id1); assertLinkIsDeleted(id1); @@ -206,6 +206,6 @@ public class DeleteActionTest { } private void logInAsProjectAdministrator(ComponentDto project) { - userSession.logIn().addProjectUuidPermissions(UserRole.ADMIN, project.uuid()); + userSession.logIn().addProjectPermission(UserRole.ADMIN, project); } } diff --git a/server/sonar-server/src/test/java/org/sonar/server/projectlink/ws/SearchActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/projectlink/ws/SearchActionTest.java index 29ff9d0d6dc..a48d7fa38b9 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/projectlink/ws/SearchActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/projectlink/ws/SearchActionTest.java @@ -166,7 +166,7 @@ public class SearchActionTest { @Test public void project_administrator_can_search_for_links() throws IOException { ComponentDto project = insertProject(); - userSession.logIn().addProjectUuidPermissions(UserRole.ADMIN, project.uuid()); + userSession.logIn().addProjectPermission(UserRole.ADMIN, project); checkItWorks(project); } @@ -174,7 +174,7 @@ public class SearchActionTest { @Test public void project_user_can_search_for_links() throws IOException { ComponentDto project = insertProject(); - userSession.logIn().addProjectUuidPermissions(UserRole.USER, project.uuid()); + userSession.logIn().addProjectPermission(UserRole.USER, project); checkItWorks(project); } @@ -270,6 +270,6 @@ public class SearchActionTest { } private void logInAsProjectAdministrator(ComponentDto project) { - userSession.logIn().addProjectUuidPermissions(UserRole.ADMIN, project.uuid()); + userSession.logIn().addProjectPermission(UserRole.ADMIN, project); } } diff --git a/server/sonar-server/src/test/java/org/sonar/server/projecttag/ws/SetActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/projecttag/ws/SetActionTest.java index 3af5a737aac..086f7c18b84 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/projecttag/ws/SetActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/projecttag/ws/SetActionTest.java @@ -99,7 +99,7 @@ public class SetActionTest { @Test public void set_tags_as_project_admin() { - userSession.logIn().addProjectUuidPermissions(UserRole.ADMIN, project.uuid()); + userSession.logIn().addProjectPermission(UserRole.ADMIN, project); call(project.key(), "platform, lambda"); @@ -123,7 +123,7 @@ public class SetActionTest { @Test public void fail_if_not_project_admin() { - userSession.logIn().addProjectUuidPermissions(UserRole.USER, project.key()); + userSession.logIn().addProjectPermission(UserRole.USER, project); expectedException.expect(ForbiddenException.class); diff --git a/server/sonar-server/src/test/java/org/sonar/server/property/ws/IndexActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/property/ws/IndexActionTest.java index 7d254e01226..8be1173c0a8 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/property/ws/IndexActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/property/ws/IndexActionTest.java @@ -391,7 +391,7 @@ public class IndexActionTest { @Test public void does_not_fail_when_user_has_not_project_browse_permission() throws Exception { - userSession.logIn("project-admin").addProjectUuidPermissions(CODEVIEWER, project.uuid()); + userSession.logIn("project-admin").addProjectPermission(CODEVIEWER, project); definitions.addComponent(PropertyDefinition.builder("foo").build()); propertyDb.insertProperties(newComponentPropertyDto(project).setKey("foo").setValue("one")); @@ -468,7 +468,7 @@ public class IndexActionTest { } private void logInAsProjectUser() { - userSession.logIn().addProjectUuidPermissions(USER, project.uuid()); + userSession.logIn().addProjectPermission(USER, project); } private void logInAsSystemAdministrator() { @@ -477,8 +477,8 @@ public class IndexActionTest { private void logInAsProjectAdmin() { userSession.logIn() - .addProjectUuidPermissions(ADMIN, project.uuid()) - .addProjectUuidPermissions(USER, project.uuid()); + .addProjectPermission(ADMIN, project) + .addProjectPermission(USER, project); } protected static URL resource(String s) { diff --git a/server/sonar-server/src/test/java/org/sonar/server/qualitygate/ws/DeselectActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/qualitygate/ws/DeselectActionTest.java index a4231ce9898..debfee708d1 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/qualitygate/ws/DeselectActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/qualitygate/ws/DeselectActionTest.java @@ -117,7 +117,7 @@ public class DeselectActionTest { String gateId = String.valueOf(gate.getId()); associateProjectToQualityGate(project.getId(), gateId); - userSession.logIn().addProjectUuidPermissions(UserRole.ADMIN, project.uuid()); + userSession.logIn().addProjectPermission(UserRole.ADMIN, project); callByKey(gateId, project.getKey()); @@ -162,7 +162,7 @@ public class DeselectActionTest { public void fail_when_not_project_admin() throws Exception { String gateId = String.valueOf(gate.getId()); - userSession.logIn().addProjectUuidPermissions(UserRole.ISSUE_ADMIN, project.uuid()); + userSession.logIn().addProjectPermission(UserRole.ISSUE_ADMIN, project); expectedException.expect(ForbiddenException.class); diff --git a/server/sonar-server/src/test/java/org/sonar/server/qualitygate/ws/GetByProjectActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/qualitygate/ws/GetByProjectActionTest.java index 40a633efb4b..522eb69c460 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/qualitygate/ws/GetByProjectActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/qualitygate/ws/GetByProjectActionTest.java @@ -40,7 +40,6 @@ import org.sonar.server.qualitygate.QualityGateFinder; import org.sonar.server.tester.UserSessionRule; import org.sonar.server.ws.TestRequest; import org.sonar.server.ws.WsActionTester; -import org.sonarqube.ws.MediaTypes; import org.sonarqube.ws.WsQualityGates; import org.sonarqube.ws.WsQualityGates.GetByProjectWsResponse; @@ -136,7 +135,7 @@ public class GetByProjectActionTest { @Test public void get_with_project_admin_permission() { ComponentDto project = componentDb.insertProject(); - userSession.logIn().addProjectUuidPermissions(UserRole.ADMIN, project.uuid()); + userSession.logIn().addProjectPermission(UserRole.ADMIN, project); QualityGateDto dbQualityGate = insertQualityGate("Sonar way"); setDefaultQualityGate(dbQualityGate.getId()); @@ -148,7 +147,7 @@ public class GetByProjectActionTest { @Test public void get_with_project_user_permission() { ComponentDto project = componentDb.insertProject(); - userSession.logIn().addProjectUuidPermissions(UserRole.USER, project.uuid()); + userSession.logIn().addProjectPermission(UserRole.USER, project); QualityGateDto dbQualityGate = insertQualityGate("Sonar way"); setDefaultQualityGate(dbQualityGate.getId()); @@ -234,6 +233,6 @@ public class GetByProjectActionTest { } private void logInAsProjectUser(ComponentDto project) { - userSession.logIn().addProjectUuidPermissions(UserRole.USER, project.uuid()); + userSession.logIn().addProjectPermission(UserRole.USER, project); } } diff --git a/server/sonar-server/src/test/java/org/sonar/server/qualitygate/ws/ProjectStatusActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/qualitygate/ws/ProjectStatusActionTest.java index f169360e8b5..85f835eeb66 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/qualitygate/ws/ProjectStatusActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/qualitygate/ws/ProjectStatusActionTest.java @@ -78,7 +78,7 @@ public class ProjectStatusActionTest { @Test public void json_example() throws IOException { ComponentDto project = db.components().insertProject(db.organizations().insert()); - userSession.addProjectUuidPermissions(UserRole.USER, project.uuid()); + userSession.addProjectPermission(UserRole.USER, project); SnapshotDto snapshot = dbClient.snapshotDao().insert(dbSession, newAnalysis(project) .setPeriodMode("last_version") @@ -113,7 +113,7 @@ public class ProjectStatusActionTest { newMeasureDto(metric, project, snapshot) .setData(IOUtils.toString(getClass().getResource("ProjectStatusActionTest/measure_data.json")))); dbSession.commit(); - userSession.addProjectUuidPermissions(UserRole.USER, project.uuid()); + userSession.addProjectPermission(UserRole.USER, project); String response = ws.newRequest() .setParam(PARAM_PROJECT_ID, project.uuid()) @@ -136,7 +136,7 @@ public class ProjectStatusActionTest { newMeasureDto(metric, project, snapshot) .setData(IOUtils.toString(getClass().getResource("ProjectStatusActionTest/measure_data.json")))); dbSession.commit(); - userSession.addProjectUuidPermissions(UserRole.USER, project.uuid()); + userSession.addProjectPermission(UserRole.USER, project); String response = ws.newRequest() .setParam(PARAM_PROJECT_KEY, "project-key") @@ -150,7 +150,7 @@ public class ProjectStatusActionTest { ComponentDto project = db.components().insertProject(db.organizations().insert()); SnapshotDto snapshot = dbClient.snapshotDao().insert(dbSession, newAnalysis(project)); dbSession.commit(); - userSession.addProjectUuidPermissions(UserRole.USER, project.uuid()); + userSession.addProjectPermission(UserRole.USER, project); ProjectStatusWsResponse result = call(snapshot.getUuid()); @@ -161,7 +161,7 @@ public class ProjectStatusActionTest { @Test public void return_undefined_status_if_snapshot_is_not_found() { ComponentDto project = db.components().insertProject(db.organizations().insert()); - userSession.addProjectUuidPermissions(UserRole.USER, project.uuid()); + userSession.addProjectPermission(UserRole.USER, project); ProjectStatusWsResponse result = callByProjectUuid(project.uuid()); @@ -174,7 +174,7 @@ public class ProjectStatusActionTest { ComponentDto project = db.components().insertProject(db.organizations().insert()); SnapshotDto snapshot = dbClient.snapshotDao().insert(dbSession, newAnalysis(project)); dbSession.commit(); - userSession.addProjectUuidPermissions(UserRole.ADMIN, project.uuid()); + userSession.addProjectPermission(UserRole.ADMIN, project); call(snapshot.getUuid()); } @@ -184,7 +184,7 @@ public class ProjectStatusActionTest { ComponentDto project = db.components().insertProject(db.organizations().insert()); SnapshotDto snapshot = dbClient.snapshotDao().insert(dbSession, newAnalysis(project)); dbSession.commit(); - userSession.addProjectUuidPermissions(UserRole.USER, project.uuid()); + userSession.addProjectPermission(UserRole.USER, project); call(snapshot.getUuid()); } diff --git a/server/sonar-server/src/test/java/org/sonar/server/qualitygate/ws/SelectActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/qualitygate/ws/SelectActionTest.java index 30347da3694..c89cdb21347 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/qualitygate/ws/SelectActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/qualitygate/ws/SelectActionTest.java @@ -99,7 +99,7 @@ public class SelectActionTest { @Test public void project_admin() throws Exception { - userSession.logIn().addProjectUuidPermissions(UserRole.ADMIN, project.uuid()); + userSession.logIn().addProjectPermission(UserRole.ADMIN, project); String gateId = String.valueOf(gate.getId()); callByKey(gateId, project.getKey()); @@ -153,7 +153,7 @@ public class SelectActionTest { public void fail_when_not_project_admin() throws Exception { String gateId = String.valueOf(gate.getId()); - userSession.logIn().addProjectUuidPermissions(UserRole.ISSUE_ADMIN, project.uuid()); + userSession.logIn().addProjectPermission(UserRole.ISSUE_ADMIN, project); expectedException.expect(ForbiddenException.class); callByKey(gateId, project.getKey()); diff --git a/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/AddProjectActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/AddProjectActionTest.java index 7c3656561db..d3f59227c05 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/AddProjectActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/AddProjectActionTest.java @@ -172,7 +172,7 @@ public class AddProjectActionTest { public void project_administrator_can_change_profile() throws Exception { ComponentDto project = db.components().insertProject(db.getDefaultOrganization()); QualityProfileDto profile = db.qualityProfiles().insert(db.getDefaultOrganization()); - userSession.logIn().addProjectUuidPermissions(UserRole.ADMIN, project.uuid()); + userSession.logIn().addProjectPermission(UserRole.ADMIN, project); call(project, profile); diff --git a/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/RemoveProjectActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/RemoveProjectActionTest.java index 5ff0737471c..3e9ccc3b389 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/RemoveProjectActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/RemoveProjectActionTest.java @@ -112,7 +112,7 @@ public class RemoveProjectActionTest { ComponentDto project = db.components().insertProject(db.getDefaultOrganization()); QualityProfileDto profile = db.qualityProfiles().insert(db.getDefaultOrganization()); db.qualityProfiles().associateProjectWithQualityProfile(project, profile); - userSession.logIn().addProjectUuidPermissions(UserRole.ADMIN, project.uuid()); + userSession.logIn().addProjectPermission(UserRole.ADMIN, project); call(project, profile); diff --git a/server/sonar-server/src/test/java/org/sonar/server/setting/ws/ListDefinitionsActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/setting/ws/ListDefinitionsActionTest.java index 8abc30b9bbd..c0b895e0995 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/setting/ws/ListDefinitionsActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/setting/ws/ListDefinitionsActionTest.java @@ -383,7 +383,7 @@ public class ListDefinitionsActionTest { @Test public void fail_when_user_has_not_project_browse_permission() throws Exception { - userSession.logIn("project-admin").addProjectUuidPermissions(CODEVIEWER, project.uuid()); + userSession.logIn("project-admin").addProjectPermission(CODEVIEWER, project); propertyDefinitions.addComponent(PropertyDefinition.builder("foo").build()); expectedException.expect(ForbiddenException.class); @@ -469,7 +469,7 @@ public class ListDefinitionsActionTest { } private void logInAsProjectUser() { - userSession.logIn().addProjectUuidPermissions(USER, project.uuid()); + userSession.logIn().addProjectPermission(USER, project); } private void logInAsAdmin(OrganizationDto org) { @@ -478,8 +478,8 @@ public class ListDefinitionsActionTest { private void logInAsProjectAdmin() { userSession.logIn() - .addProjectUuidPermissions(ADMIN, project.uuid()) - .addProjectUuidPermissions(USER, project.uuid()); + .addProjectPermission(ADMIN, project) + .addProjectPermission(USER, project); } } diff --git a/server/sonar-server/src/test/java/org/sonar/server/setting/ws/ResetActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/setting/ws/ResetActionTest.java index 35c54e084ee..a8cfe9634ca 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/setting/ws/ResetActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/setting/ws/ResetActionTest.java @@ -230,7 +230,7 @@ public class ResetActionTest { @Test public void throw_ForbiddenException_if_project_setting_and_not_project_administrator() throws Exception { - userSession.logIn().addProjectUuidPermissions(USER, project.uuid()); + userSession.logIn().addProjectPermission(USER, project); definitions.addComponent(PropertyDefinition.builder("foo").build()); expectedException.expect(ForbiddenException.class); @@ -317,7 +317,7 @@ public class ResetActionTest { } private void logInAsProjectAdmin() { - userSession.logIn().addProjectUuidPermissions(ADMIN, project.uuid()); + userSession.logIn().addProjectPermission(ADMIN, project); } private void assertGlobalPropertyDoesNotExist(String key) { diff --git a/server/sonar-server/src/test/java/org/sonar/server/setting/ws/SetActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/setting/ws/SetActionTest.java index 9c33f556537..06f23556861 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/setting/ws/SetActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/setting/ws/SetActionTest.java @@ -901,6 +901,6 @@ public class SetActionTest { } private void logInAsProjectAdministrator(ComponentDto project) { - userSession.logIn().addProjectUuidPermissions(UserRole.ADMIN, project.uuid()); + userSession.logIn().addProjectPermission(UserRole.ADMIN, project); } } diff --git a/server/sonar-server/src/test/java/org/sonar/server/setting/ws/ValuesActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/setting/ws/ValuesActionTest.java index 35e0adda7a9..a959bbf645b 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/setting/ws/ValuesActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/setting/ws/ValuesActionTest.java @@ -561,8 +561,8 @@ public class ValuesActionTest { @Test public void return_component_secured_settings_when_not_authenticated_but_with_scan_permission() throws Exception { userSession - .addProjectUuidPermissions(USER, project.uuid()) - .addProjectUuidPermissions(SCAN_EXECUTION, project.uuid()); + .addProjectPermission(USER, project) + .addProjectPermission(SCAN_EXECUTION, project); definitions.addComponents(asList( PropertyDefinition.builder("foo").onQualifiers(PROJECT).build(), PropertyDefinition.builder("global.secret.secured").build(), @@ -586,8 +586,8 @@ public class ValuesActionTest { @Test public void return_component_secured_settings_even_if_not_defined_when_not_authenticated_but_with_scan_permission() throws Exception { userSession - .addProjectUuidPermissions(USER, project.uuid()) - .addProjectUuidPermissions(SCAN_EXECUTION, project.uuid()); + .addProjectPermission(USER, project) + .addProjectPermission(SCAN_EXECUTION, project); propertyDb.insertProperties(newComponentPropertyDto(project).setKey("not-defined.secured").setValue("123")); ValuesWsResponse result = executeRequestForProjectProperties("not-defined.secured"); @@ -728,7 +728,7 @@ public class ValuesActionTest { @Test public void fail_when_user_has_not_project_browse_permission() throws Exception { - userSession.logIn("project-admin").addProjectUuidPermissions(CODEVIEWER, project.uuid()); + userSession.logIn("project-admin").addProjectPermission(CODEVIEWER, project); definitions.addComponent(PropertyDefinition.builder("foo").build()); expectedException.expect(ForbiddenException.class); @@ -818,7 +818,7 @@ public class ValuesActionTest { } private void logInAsProjectUser() { - userSession.logIn().addProjectUuidPermissions(USER, project.uuid()); + userSession.logIn().addProjectPermission(USER, project); } private void logInAsAdmin() { @@ -827,8 +827,8 @@ public class ValuesActionTest { private void logInAsProjectAdmin() { userSession.logIn() - .addProjectUuidPermissions(ADMIN, project.uuid()) - .addProjectUuidPermissions(USER, project.uuid()); + .addProjectPermission(ADMIN, project) + .addProjectPermission(USER, project); } private void assertSetting(Settings.Setting setting, String expectedKey, String expectedValue, boolean expectedInherited) { diff --git a/server/sonar-server/src/test/java/org/sonar/server/source/ws/HashActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/source/ws/HashActionTest.java index d63d24042a8..9f82b15bddb 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/source/ws/HashActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/source/ws/HashActionTest.java @@ -62,7 +62,7 @@ public class HashActionTest { @Test public void show_hashes() throws Exception { db.prepareDbUnit(getClass(), "shared.xml"); - userSessionRule.logIn("polop").addProjectUuidPermissions(UserRole.USER, PROJECT_UUID); + loginAndAddProjectPermission(PROJECT_UUID, UserRole.USER); WsTester.TestRequest request = tester.newGetRequest("api/sources", "hash").setParam("key", COMPONENT_KEY); assertThat(request.execute().outputAsString()).isEqualTo("987654"); @@ -71,7 +71,7 @@ public class HashActionTest { @Test public void show_hashes_on_test_file() throws Exception { db.prepareDbUnit(getClass(), "show_hashes_on_test_file.xml"); - userSessionRule.logIn("polop").addProjectUuidPermissions(UserRole.USER, PROJECT_UUID); + loginAndAddProjectPermission(PROJECT_UUID, UserRole.USER); WsTester.TestRequest request = tester.newGetRequest("api/sources", "hash").setParam("key", "ActionTest.java"); assertThat(request.execute().outputAsString()).isEqualTo("987654"); @@ -80,7 +80,7 @@ public class HashActionTest { @Test public void hashes_empty_if_no_source() throws Exception { db.prepareDbUnit(getClass(), "no_source.xml"); - userSessionRule.logIn("polop").addProjectUuidPermissions(UserRole.USER, PROJECT_UUID); + loginAndAddProjectPermission(PROJECT_UUID, UserRole.USER); WsTester.TestRequest request = tester.newGetRequest("api/sources", "hash").setParam("key", COMPONENT_KEY); request.execute().assertNoContent(); @@ -88,7 +88,6 @@ public class HashActionTest { @Test public void fail_to_show_hashes_if_file_does_not_exist() { - userSessionRule.logIn("polop").addProjectUuidPermissions(UserRole.USER, PROJECT_UUID); try { WsTester.TestRequest request = tester.newGetRequest("api/sources", "hash").setParam("key", COMPONENT_KEY); request.execute(); @@ -105,4 +104,8 @@ public class HashActionTest { userSessionRule.logIn("polop"); tester.newGetRequest("api/sources", "hash").setParam("key", COMPONENT_KEY).execute(); } + + private void loginAndAddProjectPermission(String componentUuid, String permission) { + userSessionRule.logIn("polop").addProjectPermission(permission, db.getDbClient().componentDao().selectByUuid(db.getSession(), componentUuid).get()); + } } diff --git a/server/sonar-server/src/test/java/org/sonar/server/source/ws/IndexActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/source/ws/IndexActionTest.java index 1a8b0d8d0a2..43c58740d31 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/source/ws/IndexActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/source/ws/IndexActionTest.java @@ -59,7 +59,7 @@ public class IndexActionTest { @Test public void get_json() throws Exception { ComponentDto project = db.components().insertProject(); - userSession.addProjectUuidPermissions(CODEVIEWER, project.uuid()); + userSession.addProjectPermission(CODEVIEWER, project); ComponentDto file = db.components().insertComponent(newFileDto(project)); insertFileWithData(file, newData("public class HelloWorld {", "}")); @@ -78,7 +78,7 @@ public class IndexActionTest { @Test public void limit_range() throws Exception { ComponentDto project = db.components().insertProject(); - userSession.addProjectUuidPermissions(CODEVIEWER, project.uuid()); + userSession.addProjectPermission(CODEVIEWER, project); ComponentDto file = db.components().insertComponent(newFileDto(project)); insertFileWithData(file, newData("/**", " */", "public class HelloWorld {", "}", "", "foo")); @@ -99,7 +99,7 @@ public class IndexActionTest { @Test public void fail_when_missing_code_viewer_permission() throws Exception { ComponentDto project = db.components().insertProject(); - userSession.addProjectUuidPermissions(USER, project.uuid()); + userSession.addProjectPermission(USER, project); ComponentDto file = db.components().insertComponent(newFileDto(project)); expectedException.expect(ForbiddenException.class); diff --git a/server/sonar-server/src/test/java/org/sonar/server/source/ws/LinesActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/source/ws/LinesActionTest.java index d7a8d1fcc9b..cabdda93a86 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/source/ws/LinesActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/source/ws/LinesActionTest.java @@ -63,11 +63,12 @@ public class LinesActionTest { public UserSessionRule userSessionRule = UserSessionRule.standalone(); SourceService sourceService; - HtmlSourceDecorator htmlSourceDecorator; - ComponentDao componentDao; + ComponentDto project; + ComponentDto file; + WsTester wsTester; @Before @@ -83,12 +84,14 @@ public class LinesActionTest { componentDao = new ComponentDao(); wsTester = new WsTester(new SourcesWs( new LinesAction(new ComponentFinder(dbTester.getDbClient()), dbTester.getDbClient(), sourceService, htmlSourceDecorator, userSessionRule))); + project = ComponentTesting.newProjectDto(dbTester.organizations().insert(), PROJECT_UUID); + file = ComponentTesting.newFileDto(project, null, FILE_UUID).setKey(FILE_KEY); } @Test public void show_source() throws Exception { - setUserWithValidPermission(); insertFileWithData(FileSourceTesting.newFakeData(3).build()); + setUserWithValidPermission(); WsTester.TestRequest request = wsTester.newGetRequest("api/sources", "lines").setParam("uuid", FILE_UUID); request.execute().assertJson(getClass(), "show_source.json"); @@ -156,8 +159,8 @@ public class LinesActionTest { @Test public void display_deprecated_fields() throws Exception { - setUserWithValidPermission(); insertFileWithData(FileSourceTesting.newFakeData(1).build()); + setUserWithValidPermission(); WsTester.TestRequest request = wsTester .newGetRequest("api/sources", "lines") @@ -168,7 +171,6 @@ public class LinesActionTest { @Test public void use_deprecated_overall_coverage_fields_if_exists() throws Exception { - setUserWithValidPermission(); DbFileSources.Data.Builder dataBuilder = DbFileSources.Data.newBuilder(); insertFileWithData(dataBuilder.addLines(newLineBuilder() .setDeprecatedOverallLineHits(1) @@ -180,6 +182,7 @@ public class LinesActionTest { .setDeprecatedItLineHits(1) .setDeprecatedItConditions(2) .setDeprecatedItCoveredConditions(3)).build()); + setUserWithValidPermission(); WsTester.TestRequest request = wsTester .newGetRequest("api/sources", "lines") @@ -190,7 +193,6 @@ public class LinesActionTest { @Test public void use_deprecated_ut_coverage_fields_if_exists() throws Exception { - setUserWithValidPermission(); DbFileSources.Data.Builder dataBuilder = DbFileSources.Data.newBuilder(); insertFileWithData(dataBuilder.addLines(newLineBuilder() .setDeprecatedUtLineHits(1) @@ -199,6 +201,7 @@ public class LinesActionTest { .setDeprecatedItLineHits(1) .setDeprecatedItConditions(2) .setDeprecatedItCoveredConditions(3)).build()); + setUserWithValidPermission(); WsTester.TestRequest request = wsTester .newGetRequest("api/sources", "lines") @@ -209,12 +212,12 @@ public class LinesActionTest { @Test public void use_deprecated_it_coverage_fields_if_exists() throws Exception { - setUserWithValidPermission(); DbFileSources.Data.Builder dataBuilder = DbFileSources.Data.newBuilder(); insertFileWithData(dataBuilder.addLines(newLineBuilder() .setDeprecatedItLineHits(1) .setDeprecatedItConditions(2) .setDeprecatedItCoveredConditions(3)).build()); + setUserWithValidPermission(); WsTester.TestRequest request = wsTester .newGetRequest("api/sources", "lines") @@ -233,12 +236,10 @@ public class LinesActionTest { } private void setUserWithValidPermission() { - userSessionRule.logIn("login").addProjectUuidPermissions(UserRole.CODEVIEWER, PROJECT_UUID); + userSessionRule.logIn("login").addProjectPermission(UserRole.CODEVIEWER, project, file); } private void insertFile() throws IOException { - ComponentDto project = ComponentTesting.newProjectDto(dbTester.organizations().insert(), PROJECT_UUID); - ComponentDto file = ComponentTesting.newFileDto(project, null, FILE_UUID).setKey(FILE_KEY); componentDao.insert(dbTester.getSession(), project, file); dbTester.getSession().commit(); } diff --git a/server/sonar-server/src/test/java/org/sonar/server/source/ws/RawActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/source/ws/RawActionTest.java index eb785d10ce7..e0e44c65cc6 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/source/ws/RawActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/source/ws/RawActionTest.java @@ -76,7 +76,7 @@ public class RawActionTest { @Test public void get_txt() throws Exception { String fileKey = "src/Foo.java"; - userSessionRule.addProjectUuidPermissions(UserRole.CODEVIEWER, project.uuid()); + userSessionRule.addProjectPermission(UserRole.CODEVIEWER, project); when(componentDao.selectByKey(session, fileKey)).thenReturn(com.google.common.base.Optional.of(file)); Iterable lines = newArrayList( diff --git a/server/sonar-server/src/test/java/org/sonar/server/source/ws/ScmActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/source/ws/ScmActionTest.java index 998bbc1a21a..6fc112242cf 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/source/ws/ScmActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/source/ws/ScmActionTest.java @@ -55,17 +55,23 @@ public class ScmActionTest { private WsTester tester; private DbClient dbClient = dbTester.getDbClient(); private DbSession dbSession = dbTester.getSession(); + private ComponentDto project; + private ComponentDto file; @Before public void setUp() { tester = new WsTester( new SourcesWs(new ScmAction(dbClient, new SourceService(dbTester.getDbClient(), new HtmlSourceDecorator()), userSessionRule, new ComponentFinder(dbClient)))); + + project = ComponentTesting.newProjectDto(dbTester.organizations().insert(), PROJECT_UUID); + file = ComponentTesting.newFileDto(project, null, FILE_UUID).setKey(FILE_KEY); + dbClient.componentDao().insert(dbTester.getSession(), project, file); + dbTester.getSession().commit(); } @Test public void show_scm() throws Exception { - initFile(); - userSessionRule.addProjectUuidPermissions(UserRole.CODEVIEWER, PROJECT_UUID); + userSessionRule.addProjectPermission(UserRole.CODEVIEWER, project, file); dbTester.getDbClient().fileSourceDao().insert(dbSession, new FileSourceDto() .setProjectUuid(PROJECT_UUID) @@ -80,8 +86,7 @@ public class ScmActionTest { @Test public void show_scm_from_given_range_lines() throws Exception { - initFile(); - userSessionRule.addProjectUuidPermissions(UserRole.CODEVIEWER, PROJECT_UUID); + userSessionRule.addProjectPermission(UserRole.CODEVIEWER, project, file); dbTester.getDbClient().fileSourceDao().insert(dbSession, new FileSourceDto() .setProjectUuid(PROJECT_UUID) @@ -100,8 +105,7 @@ public class ScmActionTest { @Test public void not_group_lines_by_commit() throws Exception { - initFile(); - userSessionRule.addProjectUuidPermissions(UserRole.CODEVIEWER, PROJECT_UUID); + userSessionRule.addProjectPermission(UserRole.CODEVIEWER, project, file); // lines 1 and 2 are the same commit, but not 3 (different date) dbTester.getDbClient().fileSourceDao().insert(dbSession, new FileSourceDto() @@ -122,8 +126,7 @@ public class ScmActionTest { @Test public void group_lines_by_commit() throws Exception { - initFile(); - userSessionRule.addProjectUuidPermissions(UserRole.CODEVIEWER, PROJECT_UUID); + userSessionRule.addProjectPermission(UserRole.CODEVIEWER, project, file); // lines 1 and 2 are the same commit, but not 3 (different date) dbTester.getDbClient().fileSourceDao().insert(dbSession, new FileSourceDto() @@ -144,8 +147,7 @@ public class ScmActionTest { @Test public void accept_negative_value_in_from_parameter() throws Exception { - initFile(); - userSessionRule.addProjectUuidPermissions(UserRole.CODEVIEWER, PROJECT_UUID); + userSessionRule.addProjectPermission(UserRole.CODEVIEWER, project, file); dbTester.getDbClient().fileSourceDao().insert(dbSession, new FileSourceDto() .setProjectUuid(PROJECT_UUID) @@ -165,8 +167,7 @@ public class ScmActionTest { @Test public void return_empty_value_when_no_scm() throws Exception { - initFile(); - userSessionRule.addProjectUuidPermissions(UserRole.CODEVIEWER, PROJECT_UUID); + userSessionRule.addProjectPermission(UserRole.CODEVIEWER, project, file); dbTester.getDbClient().fileSourceDao().insert(dbSession, new FileSourceDto() .setProjectUuid(PROJECT_UUID) @@ -180,19 +181,12 @@ public class ScmActionTest { @Test(expected = ForbiddenException.class) public void fail_without_code_viewer_permission() throws Exception { - initFile(); - userSessionRule.addProjectUuidPermissions(UserRole.USER, PROJECT_UUID); + userSessionRule.addProjectPermission(UserRole.USER, project, file); WsTester.TestRequest request = tester.newGetRequest("api/sources", "scm").setParam("key", FILE_KEY); request.execute(); } - private void initFile() { - ComponentDto project = ComponentTesting.newProjectDto(dbTester.organizations().insert(), PROJECT_UUID); - dbClient.componentDao().insert(dbTester.getSession(), project, ComponentTesting.newFileDto(project, null, FILE_UUID).setKey(FILE_KEY)); - dbTester.getSession().commit(); - } - private DbFileSources.Line newSourceLine(String author, String revision, Date date, int line) { return DbFileSources.Line.newBuilder() .setScmAuthor(author) diff --git a/server/sonar-server/src/test/java/org/sonar/server/source/ws/ShowActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/source/ws/ShowActionTest.java index f99eb8a6b48..2d88ec0e59a 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/source/ws/ShowActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/source/ws/ShowActionTest.java @@ -78,7 +78,7 @@ public class ShowActionTest { @Test public void show_source() throws Exception { String fileKey = "src/Foo.java"; - userSessionRule.addProjectUuidPermissions(UserRole.CODEVIEWER, project.uuid()); + userSessionRule.addProjectPermission(UserRole.CODEVIEWER, project); when(componentDao.selectByKey(session, fileKey)).thenReturn(com.google.common.base.Optional.of(file)); when(sourceService.getLinesAsHtml(eq(session), eq(file.uuid()), anyInt(), anyInt())).thenReturn(Optional.of(newArrayList( "/*", @@ -95,7 +95,7 @@ public class ShowActionTest { @Test public void show_source_with_from_and_to_params() throws Exception { String fileKey = "src/Foo.java"; - userSessionRule.addProjectUuidPermissions(UserRole.CODEVIEWER, project.uuid()); + userSessionRule.addProjectPermission(UserRole.CODEVIEWER, project); when(componentDao.selectByKey(session, fileKey)).thenReturn(com.google.common.base.Optional.of(file)); when(sourceService.getLinesAsHtml(session, file.uuid(), 3, 5)).thenReturn(Optional.of(newArrayList( " */", @@ -112,7 +112,7 @@ public class ShowActionTest { @Test public void show_source_accept_from_less_than_one() throws Exception { String fileKey = "src/Foo.java"; - userSessionRule.addProjectUuidPermissions(UserRole.CODEVIEWER, project.uuid()); + userSessionRule.addProjectPermission(UserRole.CODEVIEWER, project); when(componentDao.selectByKey(session, fileKey)).thenReturn(com.google.common.base.Optional.of(file)); when(sourceService.getLinesAsHtml(session, file.uuid(), 1, 5)).thenReturn(Optional.of(newArrayList( " */", diff --git a/server/sonar-server/src/test/java/org/sonar/server/test/ws/CoveredFilesActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/test/ws/CoveredFilesActionTest.java index cc7f58e8e29..20dbef657aa 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/test/ws/CoveredFilesActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/test/ws/CoveredFilesActionTest.java @@ -28,6 +28,8 @@ import org.junit.rules.ExpectedException; import org.sonar.api.web.UserRole; import org.sonar.db.DbClient; import org.sonar.db.DbSession; +import org.sonar.db.component.ComponentDto; +import org.sonar.db.component.ComponentTesting; import org.sonar.db.organization.OrganizationDto; import org.sonar.db.organization.OrganizationTesting; import org.sonar.server.exceptions.NotFoundException; @@ -51,17 +53,17 @@ import static org.sonar.test.JsonAssert.assertJson; public class CoveredFilesActionTest { - public static final String FILE_1_ID = "FILE1"; - public static final String FILE_2_ID = "FILE2"; + private static final String FILE_1_ID = "FILE1"; + private static final String FILE_2_ID = "FILE2"; @Rule public UserSessionRule userSessionRule = UserSessionRule.standalone(); @Rule public ExpectedException expectedException = ExpectedException.none(); - WsActionTester ws; - DbClient dbClient; - TestIndex testIndex; + private WsActionTester ws; + private DbClient dbClient; + private TestIndex testIndex; @Before public void setUp() { @@ -73,7 +75,9 @@ public class CoveredFilesActionTest { @Test public void covered_files() { - userSessionRule.addComponentUuidPermission(UserRole.CODEVIEWER, "SonarQube", "test-file-uuid"); + ComponentDto project = ComponentTesting.newProjectDto(OrganizationTesting.newOrganizationDto(), "SonarQube"); + ComponentDto file = ComponentTesting.newFileDto(project, null, "test-file-uuid"); + userSessionRule.addProjectPermission(UserRole.CODEVIEWER, project, file); when(testIndex.getNullableByTestUuid(anyString())).thenReturn(Optional.of(new TestDoc().setFileUuid("test-file-uuid"))); when(testIndex.coveredFiles("test-uuid")).thenReturn(Arrays.asList( @@ -92,7 +96,9 @@ public class CoveredFilesActionTest { @Test public void fail_when_test_uuid_is_unknown() { - userSessionRule.addComponentUuidPermission(UserRole.CODEVIEWER, "SonarQube", "test-file-uuid"); + ComponentDto project = ComponentTesting.newProjectDto(OrganizationTesting.newOrganizationDto(), "SonarQube"); + ComponentDto file = ComponentTesting.newFileDto(project); + userSessionRule.addProjectPermission(UserRole.CODEVIEWER, project, file); when(testIndex.getNullableByTestUuid(anyString())).thenReturn(Optional.absent()); when(testIndex.coveredFiles("test-uuid")).thenReturn(Arrays.asList( diff --git a/server/sonar-server/src/test/java/org/sonar/server/test/ws/ListActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/test/ws/ListActionTest.java index 15acd7da032..208f02dbd9a 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/test/ws/ListActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/test/ws/ListActionTest.java @@ -89,7 +89,7 @@ public class ListActionTest { @Test public void list_tests() throws Exception { - userSessionRule.addProjectUuidPermissions(CODEVIEWER, project.uuid()); + userSessionRule.addProjectPermission(CODEVIEWER, project); DbFileSources.Test test = newTest(mainFile, 10, 11, 12, 20, 21, 25).setStatus(OK).build(); insertTests(testFile, test); @@ -111,7 +111,7 @@ public class ListActionTest { @Test public void list_tests_by_test_uuid() throws Exception { - userSessionRule.addProjectUuidPermissions(CODEVIEWER, project.uuid()); + userSessionRule.addProjectPermission(CODEVIEWER, project); DbFileSources.Test test1 = newTest(mainFile, 10).build(); DbFileSources.Test test2 = newTest(mainFile, 11).build(); insertTests(testFile, test1, test2); @@ -123,7 +123,7 @@ public class ListActionTest { @Test public void list_tests_by_test_file_uuid() throws Exception { - userSessionRule.addProjectUuidPermissions(CODEVIEWER, project.uuid()); + userSessionRule.addProjectPermission(CODEVIEWER, project); ComponentDto anotherTestFile = db.components().insertComponent(newFileDto(project)); DbFileSources.Test test1 = newTest(mainFile, 10).build(); DbFileSources.Test test2 = newTest(mainFile, 11).build(); @@ -138,7 +138,7 @@ public class ListActionTest { @Test public void list_tests_by_test_file_key() throws Exception { - userSessionRule.addProjectUuidPermissions(CODEVIEWER, project.uuid()); + userSessionRule.addProjectPermission(CODEVIEWER, project); ComponentDto anotherTestFile = db.components().insertComponent(newFileDto(project)); DbFileSources.Test test1 = newTest(mainFile, 10).build(); DbFileSources.Test test2 = newTest(mainFile, 11).build(); @@ -153,7 +153,7 @@ public class ListActionTest { @Test public void list_tests_by_source_file_uuid_and_line_number() throws Exception { - userSessionRule.addProjectUuidPermissions(CODEVIEWER, project.uuid()); + userSessionRule.addProjectPermission(CODEVIEWER, project); ComponentDto anotherMainFile = db.components().insertComponent(newFileDto(project)); DbFileSources.Test test1 = newTest(mainFile, 10, 11, 12).build(); DbFileSources.Test test2 = newTest(mainFile, 9, 11).build(); @@ -168,7 +168,7 @@ public class ListActionTest { @Test public void list_tests_by_source_file_key_and_line_number() throws Exception { - userSessionRule.addProjectUuidPermissions(CODEVIEWER, project.uuid()); + userSessionRule.addProjectPermission(CODEVIEWER, project); ComponentDto anotherMainFile = db.components().insertComponent(newFileDto(project)); DbFileSources.Test test1 = newTest(mainFile, 10, 11, 12).build(); DbFileSources.Test test2 = newTest(mainFile, 9, 11).build(); @@ -183,7 +183,7 @@ public class ListActionTest { @Test public void tests_are_paginated() throws Exception { - userSessionRule.addProjectUuidPermissions(CODEVIEWER, project.uuid()); + userSessionRule.addProjectPermission(CODEVIEWER, project); insertTests(testFile, newTest(mainFile, 10).build(), newTest(mainFile, 11).build(), newTest(mainFile, 12).build()); ListResponse request = call(ws.newRequest().setParam(TEST_FILE_ID, testFile.uuid())); @@ -195,7 +195,7 @@ public class ListActionTest { @Test public void fail_when_no_argument() throws Exception { - userSessionRule.addProjectUuidPermissions(CODEVIEWER, project.uuid()); + userSessionRule.addProjectPermission(CODEVIEWER, project); expectedException.expect(IllegalArgumentException.class); call(ws.newRequest()); @@ -203,7 +203,7 @@ public class ListActionTest { @Test public void fail_when_source_file_uuid_without_line_number() throws Exception { - userSessionRule.addProjectUuidPermissions(CODEVIEWER, project.uuid()); + userSessionRule.addProjectPermission(CODEVIEWER, project); expectedException.expect(IllegalArgumentException.class); call(ws.newRequest().setParam(SOURCE_FILE_ID, mainFile.uuid())); @@ -211,7 +211,7 @@ public class ListActionTest { @Test public void fail_when_not_enough_privilege_on_test_uuid() throws Exception { - userSessionRule.addProjectUuidPermissions(USER, project.uuid()); + userSessionRule.addProjectPermission(USER, project); DbFileSources.Test test = newTest(mainFile, 10).build(); insertTests(testFile, test); @@ -221,7 +221,7 @@ public class ListActionTest { @Test public void fail_when_no_enough_privilege_on_test_file_id() throws Exception { - userSessionRule.addProjectUuidPermissions(USER, project.uuid()); + userSessionRule.addProjectPermission(USER, project); insertTests(testFile, newTest(mainFile, 10).build()); expectedException.expect(ForbiddenException.class); @@ -230,7 +230,7 @@ public class ListActionTest { @Test public void fail_when_not_enough_privilege_on_test_file_key() throws Exception { - userSessionRule.addProjectUuidPermissions(USER, project.uuid()); + userSessionRule.addProjectPermission(USER, project); insertTests(testFile, newTest(mainFile, 10).build()); expectedException.expect(ForbiddenException.class); @@ -239,7 +239,7 @@ public class ListActionTest { @Test public void fail_when_not_enough_privilege_on_main_file_uuid() throws Exception { - userSessionRule.addProjectUuidPermissions(USER, project.uuid()); + userSessionRule.addProjectPermission(USER, project); insertTests(testFile, newTest(mainFile, 10).build()); expectedException.expect(ForbiddenException.class); diff --git a/server/sonar-server/src/test/java/org/sonar/server/tester/AbstractMockUserSession.java b/server/sonar-server/src/test/java/org/sonar/server/tester/AbstractMockUserSession.java index 0f0b60ef6d3..c4f88e935b5 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/tester/AbstractMockUserSession.java +++ b/server/sonar-server/src/test/java/org/sonar/server/tester/AbstractMockUserSession.java @@ -20,13 +20,15 @@ package org.sonar.server.tester; import com.google.common.collect.HashMultimap; -import java.util.List; +import java.util.Arrays; +import java.util.HashSet; import java.util.Map; import java.util.Optional; +import java.util.Set; +import org.sonar.db.component.ComponentDto; import org.sonar.db.permission.OrganizationPermission; import org.sonar.server.user.AbstractUserSession; -import static com.google.common.collect.Lists.newArrayList; import static com.google.common.collect.Maps.newHashMap; public abstract class AbstractMockUserSession extends AbstractUserSession { @@ -34,7 +36,7 @@ public abstract class AbstractMockUserSession private HashMultimap projectUuidByPermission = HashMultimap.create(); private final HashMultimap permissionsByOrganizationUuid = HashMultimap.create(); private Map projectUuidByComponentUuid = newHashMap(); - private List projectPermissionsCheckedByUuid = newArrayList(); + private Set projectPermissionsCheckedByUuid = new HashSet<>(); private boolean systemAdministrator = false; protected AbstractMockUserSession(Class clazz) { @@ -51,22 +53,16 @@ public abstract class AbstractMockUserSession return permissionsByOrganizationUuid.get(organizationUuid).contains(permission); } - - public T addProjectUuidPermissions(String projectPermission, String... projectUuids) { - this.projectPermissionsCheckedByUuid.add(projectPermission); - this.projectUuidByPermission.putAll(projectPermission, newArrayList(projectUuids)); - for (String projectUuid : projectUuids) { - this.projectUuidByComponentUuid.put(projectUuid, projectUuid); - } + public T addProjectPermission(String permission, ComponentDto... components) { + this.projectPermissionsCheckedByUuid.add(permission); + Arrays.stream(components) + .forEach(component -> { + this.projectUuidByPermission.put(permission, component.projectUuid()); + this.projectUuidByComponentUuid.put(component.uuid(), component.projectUuid()); + }); return clazz.cast(this); } - public T addComponentUuidPermission(String projectPermission, String projectUuid, String componentUuid) { - this.projectUuidByComponentUuid.put(componentUuid, projectUuid); - addProjectUuidPermissions(projectPermission, projectUuid); - return clazz.cast(this); - } - @Override protected Optional componentUuidToProjectUuid(String componentUuid) { return Optional.ofNullable(projectUuidByComponentUuid.get(componentUuid)); diff --git a/server/sonar-server/src/test/java/org/sonar/server/tester/UserSessionRule.java b/server/sonar-server/src/test/java/org/sonar/server/tester/UserSessionRule.java index 6e58b4074b0..5e10fa04489 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/tester/UserSessionRule.java +++ b/server/sonar-server/src/test/java/org/sonar/server/tester/UserSessionRule.java @@ -28,9 +28,9 @@ import org.junit.runner.Description; import org.junit.runners.model.Statement; import org.sonar.db.component.ComponentDto; import org.sonar.db.organization.OrganizationDto; +import org.sonar.db.permission.OrganizationPermission; import org.sonar.db.user.GroupDto; import org.sonar.db.user.UserDto; -import org.sonar.db.permission.OrganizationPermission; import org.sonar.server.user.ThreadLocalUserSession; import org.sonar.server.user.UserSession; @@ -187,8 +187,8 @@ public class UserSessionRule implements TestRule, UserSession { setCurrentUserSession(userSession); } - public UserSessionRule addProjectUuidPermissions(String projectPermission, String... projectUuids) { - ensureAbstractMockUserSession().addProjectUuidPermissions(projectPermission, projectUuids); + public UserSessionRule addProjectPermission(String projectPermission, ComponentDto... components) { + ensureAbstractMockUserSession().addProjectPermission(projectPermission, components); return this; } @@ -216,11 +216,6 @@ public class UserSessionRule implements TestRule, UserSession { return this; } - public UserSessionRule addComponentUuidPermission(String projectPermission, String projectUuid, String componentUuid) { - ensureAbstractMockUserSession().addComponentUuidPermission(projectPermission, projectUuid, componentUuid); - return this; - } - public UserSessionRule setName(@Nullable String s) { ensureMockUserSession().setName(s); return this; diff --git a/server/sonar-server/src/test/java/org/sonar/server/ui/ws/ComponentActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/ui/ws/ComponentActionTest.java index e6dad613f9e..06d4d326370 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/ui/ws/ComponentActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/ui/ws/ComponentActionTest.java @@ -131,7 +131,7 @@ public class ComponentActionTest { public void return_info_if_user_has_browse_permission_on_project() throws Exception { init(); componentDbTester.insertComponent(project); - userSession.logIn().addProjectUuidPermissions(UserRole.USER, project.uuid()); + userSession.logIn().addProjectPermission(UserRole.USER, project); verifySuccess(project.key()); } @@ -140,7 +140,7 @@ public class ComponentActionTest { public void return_info_if_user_has_administration_permission_on_project() throws Exception { init(); componentDbTester.insertComponent(project); - userSession.logIn().addProjectUuidPermissions(UserRole.ADMIN, project.uuid()); + userSession.logIn().addProjectPermission(UserRole.ADMIN, project); verifySuccess(project.key()); } @@ -158,7 +158,7 @@ public class ComponentActionTest { public void return_component_info_when_anonymous_no_snapshot() throws Exception { init(); componentDbTester.insertComponent(project); - userSession.addProjectUuidPermissions(UserRole.USER, project.uuid()); + userSession.addProjectPermission(UserRole.USER, project); executeAndVerify(project.key(), "return_component_info_when_anonymous_no_snapshot.json"); } @@ -169,7 +169,7 @@ public class ComponentActionTest { UserDto user = dbTester.users().insertUser("obiwan"); componentDbTester.insertComponent(project); propertyDbTester.insertProperty(new PropertyDto().setKey("favourite").setResourceId(project.getId()).setUserId(user.getId())); - userSession.logIn(user).addProjectUuidPermissions(UserRole.USER, project.uuid()); + userSession.logIn(user).addProjectPermission(UserRole.USER, project); executeAndVerify(project.key(), "return_component_info_with_favourite.json"); } @@ -182,7 +182,7 @@ public class ComponentActionTest { .setCreatedAt(DateUtils.parseDateTime("2015-04-22T11:44:00+0200").getTime()) .setVersion("3.14") .setLast(true)); - userSession.addProjectUuidPermissions(UserRole.USER, project.uuid()); + userSession.addProjectPermission(UserRole.USER, project); executeAndVerify(project.key(), "return_component_info_when_snapshot.json"); } @@ -195,7 +195,7 @@ public class ComponentActionTest { addQualityProfiles(project, analysis, createQProfile("qp1", "Sonar Way Java", "java"), createQProfile("qp2", "Sonar Way Xoo", "xoo")); - userSession.addProjectUuidPermissions(UserRole.USER, project.uuid()); + userSession.addProjectPermission(UserRole.USER, project); executeAndVerify(project.key(), "return_quality_profiles.json"); } @@ -204,7 +204,7 @@ public class ComponentActionTest { public void return_empty_quality_profiles_when_no_measure() throws Exception { init(); componentDbTester.insertComponent(project); - userSession.addProjectUuidPermissions(UserRole.USER, project.uuid()); + userSession.addProjectPermission(UserRole.USER, project); executeAndVerify(project.key(), "return_empty_quality_profiles_when_no_measure.json"); } @@ -215,7 +215,7 @@ public class ComponentActionTest { componentDbTester.insertComponent(project); QualityGateDto qualityGateDto = dbTester.qualityGates().insertQualityGate("Sonar way"); dbTester.qualityGates().associateProjectToQualityGate(project, qualityGateDto); - userSession.addProjectUuidPermissions(UserRole.USER, project.uuid()); + userSession.addProjectPermission(UserRole.USER, project); executeAndVerify(project.key(), "return_quality_gate.json"); } @@ -225,7 +225,7 @@ public class ComponentActionTest { init(); componentDbTester.insertComponent(project); dbTester.qualityGates().createDefaultQualityGate("Sonar way"); - userSession.addProjectUuidPermissions(UserRole.USER, project.uuid()); + userSession.addProjectPermission(UserRole.USER, project); executeAndVerify(project.key(), "return_default_quality_gate.json"); } @@ -234,7 +234,7 @@ public class ComponentActionTest { public void return_no_quality_gate_when_not_defined_on_project_and_no_default_one() throws Exception { init(); componentDbTester.insertComponent(project); - userSession.addProjectUuidPermissions(UserRole.USER, project.uuid()); + userSession.addProjectPermission(UserRole.USER, project); String json = execute(project.key()); assertThat(json).doesNotContain("qualityGate"); @@ -244,7 +244,7 @@ public class ComponentActionTest { public void return_extensions() throws Exception { init(createPages()); componentDbTester.insertComponent(project); - userSession.anonymous().addProjectUuidPermissions(UserRole.USER, project.uuid()); + userSession.anonymous().addProjectPermission(UserRole.USER, project); executeAndVerify(project.key(), "return_extensions.json"); } @@ -254,8 +254,8 @@ public class ComponentActionTest { init(createPages()); componentDbTester.insertComponent(project); userSession.anonymous() - .addProjectUuidPermissions(UserRole.USER, project.uuid()) - .addProjectUuidPermissions(UserRole.ADMIN, project.uuid()); + .addProjectPermission(UserRole.USER, project) + .addProjectPermission(UserRole.ADMIN, project); executeAndVerify(project.key(), "return_extensions_for_admin.json"); } @@ -265,8 +265,8 @@ public class ComponentActionTest { UserDto user = dbTester.users().insertUser(); componentDbTester.insertComponent(project); userSession.logIn(user) - .addProjectUuidPermissions(UserRole.USER, "abcd") - .addProjectUuidPermissions(UserRole.ADMIN, "abcd"); + .addProjectPermission(UserRole.USER, project) + .addProjectPermission(UserRole.ADMIN, project); Page page1 = Page.builder("my_plugin/first_page") .setName("First Page") @@ -290,8 +290,8 @@ public class ComponentActionTest { init(); componentDbTester.insertComponent(project); userSession.anonymous() - .addProjectUuidPermissions(UserRole.USER, "abcd") - .addProjectUuidPermissions(UserRole.ADMIN, "abcd"); + .addProjectPermission(UserRole.USER, project) + .addProjectPermission(UserRole.ADMIN, project); ResourceType projectResourceType = ResourceType.builder(project.qualifier()) .setProperty("comparable", true) @@ -313,8 +313,8 @@ public class ComponentActionTest { ComponentDto project = componentDbTester.insertComponent(this.project); ComponentDto module = componentDbTester.insertComponent(newModuleDto("bcde", project).setKey("palap").setName("Palap")); userSession.anonymous() - .addProjectUuidPermissions(UserRole.USER, "abcd") - .addProjectUuidPermissions(UserRole.ADMIN, "abcd"); + .addProjectPermission(UserRole.USER, project) + .addProjectPermission(UserRole.ADMIN, project); executeAndVerify(module.key(), "return_breadcrumbs_on_module.json"); } @@ -324,7 +324,7 @@ public class ComponentActionTest { init(); componentDbTester.insertComponent(project); userSession.logIn() - .addProjectUuidPermissions(UserRole.USER, project.uuid()) + .addProjectPermission(UserRole.USER, project) .addPermission(ADMINISTER_QUALITY_PROFILES, project.getOrganizationUuid()); executeAndVerify(project.key(), "return_configuration_for_quality_profile_admin.json"); @@ -335,7 +335,7 @@ public class ComponentActionTest { init(); componentDbTester.insertComponent(project); userSession.logIn() - .addProjectUuidPermissions(UserRole.USER, project.uuid()) + .addProjectPermission(UserRole.USER, project) .addPermission(ADMINISTER_QUALITY_GATES, project.getOrganizationUuid()); executeAndVerify(project.key(), "return_configuration_for_quality_gate_admin.json"); @@ -350,7 +350,7 @@ public class ComponentActionTest { ComponentDto file = componentDbTester.insertComponent(newFileDto(directory, directory, "cdef").setName("Source.xoo") .setKey("palap:src/main/xoo/Source.xoo") .setPath(directory.path())); - userSession.addProjectUuidPermissions(UserRole.USER, project.uuid()); + userSession.addProjectPermission(UserRole.USER, project); executeAndVerify(file.key(), "return_bread_crumbs_on_several_levels.json"); } @@ -359,7 +359,7 @@ public class ComponentActionTest { public void project_administrator_is_allowed_to_get_information() throws Exception { init(createPages()); componentDbTester.insertProjectAndSnapshot(project); - userSession.addProjectUuidPermissions(UserRole.ADMIN, project.uuid()); + userSession.addProjectPermission(UserRole.ADMIN, project); execute(project.key()); } @@ -387,8 +387,8 @@ public class ComponentActionTest { QualityGateDto qualityGateDto = dbTester.qualityGates().insertQualityGate("Sonar way"); dbTester.qualityGates().associateProjectToQualityGate(project, qualityGateDto); userSession.logIn(user) - .addProjectUuidPermissions(UserRole.USER, project.uuid()) - .addProjectUuidPermissions(UserRole.ADMIN, project.uuid()); + .addProjectPermission(UserRole.USER, project) + .addProjectPermission(UserRole.ADMIN, project); String result = execute(project.key()); assertJson(result).ignoreFields("snapshotDate", "key", "qualityGate.key").isSimilarTo(ws.getDef().responseExampleAsString()); @@ -401,12 +401,12 @@ public class ComponentActionTest { ComponentDto project = dbTester.components().insertProject(org); userSession.logIn() - .addProjectUuidPermissions(UserRole.ADMIN, project.uuid()) + .addProjectPermission(UserRole.ADMIN, project) .addPermission(OrganizationPermission.ADMINISTER, org); assertJson(execute(project.key())).isSimilarTo("{\"configuration\": {\"canApplyPermissionTemplate\": true}}"); userSession.logIn() - .addProjectUuidPermissions(UserRole.ADMIN, project.uuid()); + .addProjectPermission(UserRole.ADMIN, project); assertJson(execute(project.key())).isSimilarTo("{\"configuration\": {\"canApplyPermissionTemplate\": false}}"); } diff --git a/server/sonar-server/src/test/java/org/sonar/server/webhook/ws/WebhookDeliveriesActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/webhook/ws/WebhookDeliveriesActionTest.java index 776af78a28e..ba7bd3f157a 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/webhook/ws/WebhookDeliveriesActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/webhook/ws/WebhookDeliveriesActionTest.java @@ -82,7 +82,7 @@ public class WebhookDeliveriesActionTest { @Test public void search_by_component_and_return_no_records() throws Exception { - userSession.logIn().addProjectUuidPermissions(project.uuid(), UserRole.ADMIN); + userSession.logIn().addProjectPermission(UserRole.ADMIN, project); Webhooks.DeliveriesWsResponse response = ws.newRequest() .setParam("componentKey", project.getKey()) @@ -93,7 +93,7 @@ public class WebhookDeliveriesActionTest { @Test public void search_by_task_and_return_no_records() throws Exception { - userSession.logIn().addProjectUuidPermissions(project.uuid(), UserRole.ADMIN); + userSession.logIn().addProjectPermission(UserRole.ADMIN, project); Webhooks.DeliveriesWsResponse response = ws.newRequest() .setParam("ceTaskId", "t1") @@ -116,7 +116,7 @@ public class WebhookDeliveriesActionTest { .setHttpStatus(200); dbClient.webhookDeliveryDao().insert(db.getSession(), dto); db.commit(); - userSession.logIn().addProjectUuidPermissions(UserRole.ADMIN, project.uuid()); + userSession.logIn().addProjectPermission(UserRole.ADMIN, project); String json = ws.newRequest() .setParam("componentKey", project.getKey()) @@ -135,7 +135,7 @@ public class WebhookDeliveriesActionTest { dbClient.webhookDeliveryDao().insert(db.getSession(), dto2); dbClient.webhookDeliveryDao().insert(db.getSession(), dto3); db.commit(); - userSession.logIn().addProjectUuidPermissions(UserRole.ADMIN, project.uuid()); + userSession.logIn().addProjectPermission(UserRole.ADMIN, project); Webhooks.DeliveriesWsResponse response = ws.newRequest() .setParam("ceTaskId", "t1") @@ -150,7 +150,7 @@ public class WebhookDeliveriesActionTest { .setComponentUuid(project.uuid()); dbClient.webhookDeliveryDao().insert(db.getSession(), dto); db.commit(); - userSession.logIn().addProjectUuidPermissions(UserRole.USER, project.uuid()); + userSession.logIn().addProjectPermission(UserRole.USER, project); expectedException.expect(ForbiddenException.class); expectedException.expectMessage("Insufficient privileges"); @@ -166,7 +166,7 @@ public class WebhookDeliveriesActionTest { .setComponentUuid(project.uuid()); dbClient.webhookDeliveryDao().insert(db.getSession(), dto); db.commit(); - userSession.logIn().addProjectUuidPermissions(UserRole.USER, project.uuid()); + userSession.logIn().addProjectPermission(UserRole.USER, project); expectedException.expect(ForbiddenException.class); expectedException.expectMessage("Insufficient privileges"); diff --git a/server/sonar-server/src/test/java/org/sonar/server/webhook/ws/WebhookDeliveryActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/webhook/ws/WebhookDeliveryActionTest.java index 353ebe1773c..0c3bf8881fb 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/webhook/ws/WebhookDeliveryActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/webhook/ws/WebhookDeliveryActionTest.java @@ -112,7 +112,7 @@ public class WebhookDeliveryActionTest { .setPayload("{\"status\"=\"SUCCESS\"}"); dbClient.webhookDeliveryDao().insert(db.getSession(), dto); db.commit(); - userSession.logIn().addProjectUuidPermissions(UserRole.ADMIN, project.uuid()); + userSession.logIn().addProjectPermission(UserRole.ADMIN, project); String json = ws.newRequest() .setParam("deliveryId", dto.getUuid()) @@ -132,7 +132,7 @@ public class WebhookDeliveryActionTest { .setErrorStacktrace("IOException -> can not connect"); dbClient.webhookDeliveryDao().insert(db.getSession(), dto); db.commit(); - userSession.logIn().addProjectUuidPermissions(UserRole.ADMIN, project.uuid()); + userSession.logIn().addProjectPermission(UserRole.ADMIN, project); Webhooks.DeliveryWsResponse response = ws.newRequest() .setParam("deliveryId", dto.getUuid()) @@ -150,7 +150,7 @@ public class WebhookDeliveryActionTest { .setComponentUuid(project.uuid()); dbClient.webhookDeliveryDao().insert(db.getSession(), dto); db.commit(); - userSession.logIn().addProjectUuidPermissions(UserRole.USER, project.uuid()); + userSession.logIn().addProjectPermission(UserRole.USER, project); expectedException.expect(ForbiddenException.class); expectedException.expectMessage("Insufficient privileges"); -- 2.39.5