aboutsummaryrefslogtreecommitdiffstats
path: root/server/sonar-server/src
diff options
context:
space:
mode:
authorSébastien Lesaint <sebastien.lesaint@sonarsource.com>2017-04-24 17:58:05 +0200
committerSébastien Lesaint <sebastien.lesaint@sonarsource.com>2017-04-27 14:42:50 +0200
commitd7ce42f81b9ce387128df86363a6fabb463fda55 (patch)
treec2584ac2f830c53f976058ee25bea6047577eeda /server/sonar-server/src
parent8250bcc84139f46b9e782b050e3b5f51e5ba4298 (diff)
downloadsonarqube-d7ce42f81b9ce387128df86363a6fabb463fda55.tar.gz
sonarqube-d7ce42f81b9ce387128df86363a6fabb463fda55.zip
SONAR-9136 replace AnyOne by default group in default template
Diffstat (limited to 'server/sonar-server/src')
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/startup/RegisterPermissionTemplates.java28
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/startup/RegisterPermissionTemplatesTest.java44
2 files changed, 59 insertions, 13 deletions
diff --git a/server/sonar-server/src/main/java/org/sonar/server/startup/RegisterPermissionTemplates.java b/server/sonar-server/src/main/java/org/sonar/server/startup/RegisterPermissionTemplates.java
index 5ef341e0330..a6e9cd0d3c7 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/startup/RegisterPermissionTemplates.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/startup/RegisterPermissionTemplates.java
@@ -21,7 +21,6 @@ package org.sonar.server.startup;
import java.util.Date;
import java.util.Optional;
-import javax.annotation.Nullable;
import org.sonar.api.security.DefaultGroups;
import org.sonar.api.utils.log.Logger;
import org.sonar.api.utils.log.Loggers;
@@ -34,6 +33,8 @@ import org.sonar.db.permission.template.PermissionTemplateDto;
import org.sonar.db.user.GroupDto;
import org.sonar.server.organization.DefaultOrganizationProvider;
+import static java.lang.String.format;
+
public class RegisterPermissionTemplates {
private static final Logger LOG = Loggers.get(RegisterPermissionTemplates.class);
@@ -84,6 +85,11 @@ public class RegisterPermissionTemplates {
}
private void insertDefaultGroupPermissions(DbSession dbSession, PermissionTemplateDto template) {
+ insertPermissionForAdministrators(dbSession, template);
+ insertPermissionsForDefaultGroup(dbSession, template);
+ }
+
+ private void insertPermissionForAdministrators(DbSession dbSession, PermissionTemplateDto template) {
Optional<GroupDto> admins = dbClient.groupDao().selectByName(dbSession, template.getOrganizationUuid(), DefaultGroups.ADMINISTRATORS);
if (admins.isPresent()) {
insertGroupPermission(dbSession, template, UserRole.ADMIN, admins.get());
@@ -91,16 +97,20 @@ public class RegisterPermissionTemplates {
} else {
LOG.error("Cannot setup default permission for group: " + DefaultGroups.ADMINISTRATORS);
}
- insertGroupPermission(dbSession, template, UserRole.USER, null);
- insertGroupPermission(dbSession, template, UserRole.CODEVIEWER, null);
}
- private void insertGroupPermission(DbSession dbSession, PermissionTemplateDto template, String permission, @Nullable GroupDto group) {
- if (group == null) {
- dbClient.permissionTemplateDao().insertGroupPermission(dbSession, template.getId(), null, permission);
- } else {
- dbClient.permissionTemplateDao().insertGroupPermission(dbSession, template.getId(), group.getId(), permission);
- }
+ private void insertPermissionsForDefaultGroup(DbSession dbSession, PermissionTemplateDto template) {
+ String organizationUuid = template.getOrganizationUuid();
+ Integer defaultGroupId = dbClient.organizationDao().getDefaultGroupId(dbSession, organizationUuid)
+ .orElseThrow(() -> new IllegalStateException(format("Default group for organization %s is not defined", organizationUuid)));
+ GroupDto defaultGroup = Optional.ofNullable(dbClient.groupDao().selectById(dbSession, defaultGroupId))
+ .orElseThrow(() -> new IllegalStateException(format("Default group with id %s for organization %s doesn't exist", defaultGroupId, organizationUuid)));
+ insertGroupPermission(dbSession, template, UserRole.USER, defaultGroup);
+ insertGroupPermission(dbSession, template, UserRole.CODEVIEWER, defaultGroup);
+ }
+
+ private void insertGroupPermission(DbSession dbSession, PermissionTemplateDto template, String permission, GroupDto group) {
+ dbClient.permissionTemplateDao().insertGroupPermission(dbSession, template.getId(), group.getId(), permission);
}
}
diff --git a/server/sonar-server/src/test/java/org/sonar/server/startup/RegisterPermissionTemplatesTest.java b/server/sonar-server/src/test/java/org/sonar/server/startup/RegisterPermissionTemplatesTest.java
index 3a2f6ba063a..9436ff31a1b 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/startup/RegisterPermissionTemplatesTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/startup/RegisterPermissionTemplatesTest.java
@@ -24,6 +24,7 @@ import java.util.Objects;
import java.util.Optional;
import org.junit.Rule;
import org.junit.Test;
+import org.junit.rules.ExpectedException;
import org.sonar.api.security.DefaultGroups;
import org.sonar.api.utils.System2;
import org.sonar.api.utils.log.LogTester;
@@ -33,6 +34,7 @@ import org.sonar.db.DbTester;
import org.sonar.db.organization.DefaultTemplates;
import org.sonar.db.permission.template.PermissionTemplateDto;
import org.sonar.db.permission.template.PermissionTemplateGroupDto;
+import org.sonar.db.user.GroupDto;
import org.sonar.server.organization.DefaultOrganizationProvider;
import org.sonar.server.organization.TestDefaultOrganizationProvider;
@@ -46,12 +48,33 @@ public class RegisterPermissionTemplatesTest {
public DbTester db = DbTester.create(System2.INSTANCE);
@Rule
public LogTester logTester = new LogTester();
+ @Rule
+ public ExpectedException expectedException = ExpectedException.none();
private DefaultOrganizationProvider defaultOrganizationProvider = TestDefaultOrganizationProvider.from(db);
private RegisterPermissionTemplates underTest = new RegisterPermissionTemplates(db.getDbClient(), defaultOrganizationProvider);
@Test
+ public void fail_with_ISE_if_default_template_must_be_created_and_no_default_group_is_defined() {
+ expectedException.expect(IllegalStateException.class);
+ expectedException.expectMessage("Default group for organization " + db.getDefaultOrganization().getUuid() + " is not defined");
+
+ underTest.start();
+ }
+
+ @Test
+ public void fail_with_ISE_if_default_template_must_be_created_and_default_group_does_not_exist() {
+ setDefaultGroupId(new GroupDto().setId(22));
+
+ expectedException.expect(IllegalStateException.class);
+ expectedException.expectMessage("Default group with id 22 for organization " + db.getDefaultOrganization().getUuid() + " doesn't exist");
+
+ underTest.start();
+ }
+
+ @Test
public void insert_default_permission_template_if_fresh_install() {
+ GroupDto defaultGroup = createAndSetDefaultGroup();
db.users().insertGroup(db.getDefaultOrganization(), DefaultGroups.ADMINISTRATORS);
underTest.start();
@@ -63,8 +86,8 @@ public class RegisterPermissionTemplatesTest {
assertThat(groupPermissions).hasSize(4);
expectGroupPermission(groupPermissions, UserRole.ADMIN, DefaultGroups.ADMINISTRATORS);
expectGroupPermission(groupPermissions, UserRole.ISSUE_ADMIN, DefaultGroups.ADMINISTRATORS);
- expectGroupPermission(groupPermissions, UserRole.CODEVIEWER, DefaultGroups.ANYONE);
- expectGroupPermission(groupPermissions, UserRole.USER, DefaultGroups.ANYONE);
+ expectGroupPermission(groupPermissions, UserRole.CODEVIEWER, defaultGroup.getName());
+ expectGroupPermission(groupPermissions, UserRole.USER, defaultGroup.getName());
verifyDefaultTemplates();
@@ -73,6 +96,8 @@ public class RegisterPermissionTemplatesTest {
@Test
public void ignore_administrators_permissions_if_group_does_not_exist() {
+ GroupDto defaultGroup = createAndSetDefaultGroup();
+
underTest.start();
PermissionTemplateDto defaultTemplate = selectTemplate();
@@ -80,8 +105,8 @@ public class RegisterPermissionTemplatesTest {
List<PermissionTemplateGroupDto> groupPermissions = selectGroupPermissions(defaultTemplate);
assertThat(groupPermissions).hasSize(2);
- expectGroupPermission(groupPermissions, UserRole.CODEVIEWER, DefaultGroups.ANYONE);
- expectGroupPermission(groupPermissions, UserRole.USER, DefaultGroups.ANYONE);
+ expectGroupPermission(groupPermissions, UserRole.CODEVIEWER, defaultGroup.getName());
+ expectGroupPermission(groupPermissions, UserRole.USER, defaultGroup.getName());
verifyDefaultTemplates();
@@ -132,4 +157,15 @@ public class RegisterPermissionTemplatesTest {
.isPresent();
assertThat(defaultTemplates.get().getProjectUuid()).isEqualTo(DEFAULT_TEMPLATE_UUID);
}
+
+ private void setDefaultGroupId(GroupDto defaultGroup) {
+ db.getDbClient().organizationDao().setDefaultGroupId(db.getSession(), db.getDefaultOrganization().getUuid(), defaultGroup);
+ db.commit();
+ }
+
+ private GroupDto createAndSetDefaultGroup() {
+ GroupDto res = db.users().insertGroup(db.getDefaultOrganization());
+ setDefaultGroupId(res);
+ return res;
+ }
}