aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJulien Lancelot <julien.lancelot@sonarsource.com>2017-03-29 15:03:10 +0200
committerJulien Lancelot <julien.lancelot@sonarsource.com>2017-04-13 11:51:55 +0200
commit8bf3014f238206ecb370742f749608ae577fb43c (patch)
tree5ede61a468410c9c64f41076f36c5cc6794562da
parentee51a9a448d08d824e0e4751aab913078e534925 (diff)
downloadsonarqube-8bf3014f238206ecb370742f749608ae577fb43c.tar.gz
sonarqube-8bf3014f238206ecb370742f749608ae577fb43c.zip
SONAR-9014 Replace 'sonar.defaultGroup' setting usage by hardcoded 'sonar-users'
-rw-r--r--it/it-tests/src/test/java/it/settings/SettingsTest.java2
-rw-r--r--server/sonar-ce/src/test/java/org/sonar/ce/container/ComputeEngineContainerImplTest.java7
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/user/UserUpdater.java20
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/DeleteAction.java17
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/UpdateAction.java25
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/authentication/SsoAuthenticatorTest.java7
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/authentication/UserIdentityAuthenticatorTest.java9
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/user/UserUpdaterTest.java28
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/user/ws/ChangePasswordActionTest.java6
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/user/ws/CreateActionTest.java20
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/user/ws/UpdateActionTest.java9
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/usergroups/ws/DeleteActionTest.java16
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/usergroups/ws/UpdateActionTest.java52
-rw-r--r--sonar-core/src/main/java/org/sonar/core/config/SecurityProperties.java12
-rw-r--r--sonar-core/src/test/java/org/sonar/core/config/CorePropertyDefinitionsTest.java2
-rw-r--r--sonar-plugin-api/src/main/java/org/sonar/api/CoreProperties.java12
-rw-r--r--sonar-plugin-api/src/main/java/org/sonar/api/server/authentication/UserIdentity.java3
17 files changed, 54 insertions, 193 deletions
diff --git a/it/it-tests/src/test/java/it/settings/SettingsTest.java b/it/it-tests/src/test/java/it/settings/SettingsTest.java
index 042a82a3df7..c53f507e2ba 100644
--- a/it/it-tests/src/test/java/it/settings/SettingsTest.java
+++ b/it/it-tests/src/test/java/it/settings/SettingsTest.java
@@ -189,7 +189,7 @@ public class SettingsTest {
assertThat(adminSettingsService.values(ValuesRequest.builder().build()).getSettingsList())
.extracting(Setting::getKey)
- .contains(PLUGIN_SETTING_KEY, "hidden", "sonar.forceAuthentication", "sonar.defaultGroup",
+ .contains(PLUGIN_SETTING_KEY, "hidden", "sonar.forceAuthentication",
// Settings for scanner
"sonar.core.startTime");
diff --git a/server/sonar-ce/src/test/java/org/sonar/ce/container/ComputeEngineContainerImplTest.java b/server/sonar-ce/src/test/java/org/sonar/ce/container/ComputeEngineContainerImplTest.java
index fdbd689b8ee..89a1da47da4 100644
--- a/server/sonar-ce/src/test/java/org/sonar/ce/container/ComputeEngineContainerImplTest.java
+++ b/server/sonar-ce/src/test/java/org/sonar/ce/container/ComputeEngineContainerImplTest.java
@@ -107,11 +107,10 @@ public class ComputeEngineContainerImplTest {
);
assertThat(picoContainer.getParent().getParent().getParent().getComponentAdapters()).hasSize(
COMPONENTS_IN_LEVEL_1_AT_CONSTRUCTION
- + 22 // level 1
- + 48 // content of DaoModule
+ + 23 // level 1
+ + 46 // content of DaoModule
+ 3 // content of EsSearchModule
- + 56 // content of CorePropertyDefinitions
- + 1 // content of CePropertyDefinitions
+ + 57 // content of CorePropertyDefinitions
);
assertThat(picoContainer.getParent().getParent().getParent().getParent()).isNull();
underTest.stop();
diff --git a/server/sonar-server/src/main/java/org/sonar/server/user/UserUpdater.java b/server/sonar-server/src/main/java/org/sonar/server/user/UserUpdater.java
index 16bbacf758c..22021cd4ce6 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/user/UserUpdater.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/user/UserUpdater.java
@@ -30,8 +30,6 @@ import java.util.Optional;
import java.util.Random;
import javax.annotation.Nullable;
import org.apache.commons.codec.digest.DigestUtils;
-import org.sonar.api.CoreProperties;
-import org.sonar.api.config.Settings;
import org.sonar.api.platform.NewUserHandler;
import org.sonar.api.server.ServerSide;
import org.sonar.api.utils.System2;
@@ -59,6 +57,8 @@ import static org.sonar.server.ws.WsUtils.checkRequest;
@ServerSide
public class UserUpdater {
+ public static final String SONAR_USERS_GROUP_NAME = "sonar-users";
+
private static final String SQ_AUTHORITY = "sonarqube";
private static final String LOGIN_PARAM = "Login";
@@ -72,17 +72,15 @@ public class UserUpdater {
private static final int NAME_MAX_LENGTH = 200;
private final NewUserNotifier newUserNotifier;
- private final Settings settings;
private final DbClient dbClient;
private final UserIndexer userIndexer;
private final System2 system2;
private final DefaultOrganizationProvider defaultOrganizationProvider;
private final OrganizationCreation organizationCreation;
- public UserUpdater(NewUserNotifier newUserNotifier, Settings settings, DbClient dbClient, UserIndexer userIndexer, System2 system2,
+ public UserUpdater(NewUserNotifier newUserNotifier, DbClient dbClient, UserIndexer userIndexer, System2 system2,
DefaultOrganizationProvider defaultOrganizationProvider, OrganizationCreation organizationCreation) {
this.newUserNotifier = newUserNotifier;
- this.settings = settings;
this.dbClient = dbClient;
this.userIndexer = userIndexer;
this.system2 = system2;
@@ -383,20 +381,14 @@ public class UserUpdater {
}
private void addDefaultGroup(DbSession dbSession, UserDto userDto) {
- String defaultGroupName = settings.getString(CoreProperties.CORE_DEFAULT_GROUP);
- if (defaultGroupName == null) {
- return;
- }
String defOrgUuid = defaultOrganizationProvider.get().getUuid();
List<GroupDto> userGroups = dbClient.groupDao().selectByUserLogin(dbSession, userDto.getLogin());
- if (isUserAlreadyMemberOfDefaultGroup(defaultGroupName, defOrgUuid, userGroups)) {
+ if (isUserAlreadyMemberOfDefaultGroup(SONAR_USERS_GROUP_NAME, defOrgUuid, userGroups)) {
return;
}
- Optional<GroupDto> groupDto = dbClient.groupDao().selectByName(dbSession, defOrgUuid, defaultGroupName);
+ Optional<GroupDto> groupDto = dbClient.groupDao().selectByName(dbSession, defOrgUuid, SONAR_USERS_GROUP_NAME);
if (!groupDto.isPresent()) {
- throw new ServerException(HttpURLConnection.HTTP_INTERNAL_ERROR,
- format("The default group '%s' for new users does not exist. Please update the general security settings to fix this issue.",
- defaultGroupName));
+ throw new ServerException(HttpURLConnection.HTTP_INTERNAL_ERROR, format("The default group '%s' for new users does not exist.", SONAR_USERS_GROUP_NAME));
}
dbClient.userGroupDao().insert(dbSession, new UserGroupDto().setUserId(userDto.getId()).setGroupId(groupDto.get().getId()));
}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/DeleteAction.java b/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/DeleteAction.java
index 219ef32d44b..cce669d97e1 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/DeleteAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/DeleteAction.java
@@ -20,21 +20,20 @@
package org.sonar.server.usergroups.ws;
import java.util.Optional;
-import org.sonar.api.CoreProperties;
-import org.sonar.api.config.Settings;
import org.sonar.api.server.ws.Request;
import org.sonar.api.server.ws.Response;
import org.sonar.api.server.ws.WebService;
import org.sonar.api.server.ws.WebService.NewController;
import org.sonar.db.DbClient;
import org.sonar.db.DbSession;
+import org.sonar.db.permission.OrganizationPermission;
import org.sonar.db.user.GroupDto;
import org.sonar.server.organization.DefaultOrganizationProvider;
-import org.sonar.db.permission.OrganizationPermission;
import org.sonar.server.user.UserSession;
import static com.google.common.base.Preconditions.checkArgument;
import static java.lang.String.format;
+import static org.sonar.server.user.UserUpdater.SONAR_USERS_GROUP_NAME;
import static org.sonar.server.usergroups.ws.GroupWsSupport.PARAM_GROUP_ID;
import static org.sonar.server.usergroups.ws.GroupWsSupport.PARAM_GROUP_NAME;
import static org.sonar.server.usergroups.ws.GroupWsSupport.defineGroupWsParameters;
@@ -44,15 +43,12 @@ public class DeleteAction implements UserGroupsWsAction {
private final DbClient dbClient;
private final UserSession userSession;
private final GroupWsSupport support;
- private final Settings settings;
private final DefaultOrganizationProvider defaultOrganizationProvider;
- public DeleteAction(DbClient dbClient, UserSession userSession, GroupWsSupport support, Settings settings,
- DefaultOrganizationProvider defaultOrganizationProvider) {
+ public DeleteAction(DbClient dbClient, UserSession userSession, GroupWsSupport support, DefaultOrganizationProvider defaultOrganizationProvider) {
this.dbClient = dbClient;
this.userSession = userSession;
this.support = support;
- this.settings = settings;
this.defaultOrganizationProvider = defaultOrganizationProvider;
}
@@ -95,11 +91,10 @@ public class DeleteAction implements UserGroupsWsAction {
* are not implemented.
*/
private void checkNotTryingToDeleteDefaultGroup(DbSession dbSession, GroupId group) {
- String defaultGroupName = settings.getString(CoreProperties.CORE_DEFAULT_GROUP);
- if (defaultGroupName != null && group.getOrganizationUuid().equals(defaultOrganizationProvider.get().getUuid())) {
- Optional<GroupDto> defaultGroup = dbClient.groupDao().selectByName(dbSession, group.getOrganizationUuid(), defaultGroupName);
+ if (group.getOrganizationUuid().equals(defaultOrganizationProvider.get().getUuid())) {
+ Optional<GroupDto> defaultGroup = dbClient.groupDao().selectByName(dbSession, group.getOrganizationUuid(), SONAR_USERS_GROUP_NAME);
checkArgument(!defaultGroup.isPresent() || defaultGroup.get().getId() != group.getId(),
- format("Default group '%s' cannot be deleted", defaultGroupName));
+ format("Default group '%s' cannot be deleted", SONAR_USERS_GROUP_NAME));
}
}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/UpdateAction.java b/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/UpdateAction.java
index 160ccc6b7c8..2e92f8e9f7a 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/UpdateAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/UpdateAction.java
@@ -19,7 +19,6 @@
*/
package org.sonar.server.usergroups.ws;
-import java.util.Objects;
import java.util.Optional;
import org.sonar.api.server.ws.Request;
import org.sonar.api.server.ws.Response;
@@ -31,12 +30,9 @@ import org.sonar.db.DbSession;
import org.sonar.db.organization.OrganizationDto;
import org.sonar.db.user.GroupDto;
import org.sonar.db.user.UserMembershipQuery;
-import org.sonar.server.organization.DefaultOrganizationProvider;
-import org.sonar.server.platform.PersistentSettings;
import org.sonar.server.user.UserSession;
import org.sonarqube.ws.WsUserGroups;
-import static org.sonar.api.CoreProperties.CORE_DEFAULT_GROUP;
import static org.sonar.api.user.UserGroupValidation.GROUP_NAME_MAX_LENGTH;
import static org.sonar.db.permission.OrganizationPermission.ADMINISTER;
import static org.sonar.server.usergroups.ws.GroupWsSupport.DESCRIPTION_MAX_LENGTH;
@@ -53,16 +49,11 @@ public class UpdateAction implements UserGroupsWsAction {
private final DbClient dbClient;
private final UserSession userSession;
private final GroupWsSupport support;
- private final PersistentSettings persistentSettings;
- private final DefaultOrganizationProvider defaultOrganizationProvider;
- public UpdateAction(DbClient dbClient, UserSession userSession, GroupWsSupport support, PersistentSettings persistentSettings,
- DefaultOrganizationProvider defaultOrganizationProvider) {
+ public UpdateAction(DbClient dbClient, UserSession userSession, GroupWsSupport support) {
this.dbClient = dbClient;
this.userSession = userSession;
this.support = support;
- this.persistentSettings = persistentSettings;
- this.defaultOrganizationProvider = defaultOrganizationProvider;
}
@Override
@@ -107,10 +98,7 @@ public class UpdateAction implements UserGroupsWsAction {
changed = true;
UserGroupValidation.validateGroupName(newName);
support.checkNameDoesNotExist(dbSession, group.getOrganizationUuid(), newName);
-
- String oldName = group.getName();
group.setName(newName);
- updateDefaultGroupIfNeeded(dbSession, org.get(), oldName, newName);
}
String description = request.param(PARAM_GROUP_DESCRIPTION);
@@ -128,17 +116,6 @@ public class UpdateAction implements UserGroupsWsAction {
}
}
- private void updateDefaultGroupIfNeeded(DbSession dbSession, OrganizationDto org, String oldName, String newName) {
- // The feature "default group" relies on a property. As organization properties are
- // not implemented yet, default groups are not supported on non-default organizations
- if (defaultOrganizationProvider.get().getUuid().equals(org.getUuid())) {
- String defaultGroupName = persistentSettings.getString(CORE_DEFAULT_GROUP);
- if (Objects.equals(defaultGroupName, oldName)) {
- persistentSettings.saveProperty(dbSession, CORE_DEFAULT_GROUP, newName);
- }
- }
- }
-
private void writeResponse(DbSession dbSession, Request request, Response response, OrganizationDto organization, GroupDto group) {
UserMembershipQuery query = UserMembershipQuery.builder()
.groupId(group.getId())
diff --git a/server/sonar-server/src/test/java/org/sonar/server/authentication/SsoAuthenticatorTest.java b/server/sonar-server/src/test/java/org/sonar/server/authentication/SsoAuthenticatorTest.java
index 0cb53e939f6..e79ebdfc0f1 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/authentication/SsoAuthenticatorTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/authentication/SsoAuthenticatorTest.java
@@ -89,6 +89,7 @@ public class SsoAuthenticatorTest {
private GroupDto group1;
private GroupDto group2;
+ private GroupDto sonarUsers;
private System2 system2 = mock(System2.class);
private Settings settings = new MapSettings();
@@ -97,7 +98,7 @@ public class SsoAuthenticatorTest {
private DefaultOrganizationProvider defaultOrganizationProvider = TestDefaultOrganizationProvider.from(db);
private UserIdentityAuthenticator userIdentityAuthenticator = new UserIdentityAuthenticator(
db.getDbClient(),
- new UserUpdater(mock(NewUserNotifier.class), settings, db.getDbClient(), mock(UserIndexer.class), System2.INSTANCE, defaultOrganizationProvider, organizationCreation),
+ new UserUpdater(mock(NewUserNotifier.class), db.getDbClient(), mock(UserIndexer.class), System2.INSTANCE, defaultOrganizationProvider, organizationCreation),
defaultOrganizationProvider);
private HttpServletResponse response = mock(HttpServletResponse.class);
@@ -111,7 +112,7 @@ public class SsoAuthenticatorTest {
when(system2.now()).thenReturn(NOW);
group1 = db.users().insertGroup(db.getDefaultOrganization(), GROUP1);
group2 = db.users().insertGroup(db.getDefaultOrganization(), GROUP2);
- db.commit();
+ sonarUsers = db.users().insertGroup(db.getDefaultOrganization(), "sonar-users");
}
@Test
@@ -135,7 +136,7 @@ public class SsoAuthenticatorTest {
HttpServletRequest request = createRequest(DEFAULT_LOGIN, null, null, null);
underTest.authenticate(request, response);
- verifyUserInDb(DEFAULT_LOGIN, DEFAULT_LOGIN, null);
+ verifyUserInDb(DEFAULT_LOGIN, DEFAULT_LOGIN, null, sonarUsers);
verify(authenticationEvent).loginSuccess(request, DEFAULT_LOGIN, Source.sso());
}
diff --git a/server/sonar-server/src/test/java/org/sonar/server/authentication/UserIdentityAuthenticatorTest.java b/server/sonar-server/src/test/java/org/sonar/server/authentication/UserIdentityAuthenticatorTest.java
index d36d54f66c8..9f3fc517940 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/authentication/UserIdentityAuthenticatorTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/authentication/UserIdentityAuthenticatorTest.java
@@ -25,8 +25,6 @@ import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
-import org.sonar.api.config.MapSettings;
-import org.sonar.api.config.Settings;
import org.sonar.api.server.authentication.UserIdentity;
import org.sonar.api.utils.System2;
import org.sonar.api.utils.internal.AlwaysIncreasingSystem2;
@@ -74,24 +72,21 @@ public class UserIdentityAuthenticatorTest {
@Rule
public DbTester db = DbTester.create(new AlwaysIncreasingSystem2());
- private Settings settings = new MapSettings();
private DefaultOrganizationProvider defaultOrganizationProvider = TestDefaultOrganizationProvider.from(db);
private OrganizationCreation organizationCreation = mock(OrganizationCreation.class);
private UserUpdater userUpdater = new UserUpdater(
mock(NewUserNotifier.class),
- settings,
db.getDbClient(),
mock(UserIndexer.class),
System2.INSTANCE,
defaultOrganizationProvider,
- organizationCreation);
+ organizationCreation);
private UserIdentityAuthenticator underTest = new UserIdentityAuthenticator(db.getDbClient(), userUpdater, defaultOrganizationProvider);
private GroupDto defaultGroup;
@Before
public void setUp() throws Exception {
- settings.setProperty("sonar.defaultGroup", DEFAULT_GROUP);
- defaultGroup = db.users().insertGroup(db.getDefaultOrganization(), DEFAULT_GROUP);
+ defaultGroup = db.users().insertGroup(db.getDefaultOrganization(), "sonar-users");
}
@Test
diff --git a/server/sonar-server/src/test/java/org/sonar/server/user/UserUpdaterTest.java b/server/sonar-server/src/test/java/org/sonar/server/user/UserUpdaterTest.java
index 3e36354bf0f..7b6677f0444 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/user/UserUpdaterTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/user/UserUpdaterTest.java
@@ -30,7 +30,6 @@ import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.mockito.ArgumentCaptor;
import org.sonar.api.config.MapSettings;
-import org.sonar.api.config.Settings;
import org.sonar.api.platform.NewUserHandler;
import org.sonar.api.utils.System2;
import org.sonar.db.DbClient;
@@ -60,7 +59,6 @@ import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
-import static org.sonar.api.CoreProperties.CORE_DEFAULT_GROUP;
import static org.sonar.db.user.UserTesting.newDisabledUser;
import static org.sonar.db.user.UserTesting.newLocalUser;
import static org.sonar.db.user.UserTesting.newUserDto;
@@ -87,12 +85,11 @@ public class UserUpdaterTest {
private DbClient dbClient = db.getDbClient();
private NewUserNotifier newUserNotifier = mock(NewUserNotifier.class);
private ArgumentCaptor<NewUserHandler.Context> newUserHandler = ArgumentCaptor.forClass(NewUserHandler.Context.class);
- private Settings settings = new MapSettings();
private DbSession session = db.getSession();
private UserIndexer userIndexer = new UserIndexer(dbClient, es.client());
private OrganizationCreation organizationCreation = mock(OrganizationCreation.class);
private DefaultOrganizationProvider defaultOrganizationProvider = TestDefaultOrganizationProvider.from(db);
- private UserUpdater underTest = new UserUpdater(newUserNotifier, settings, dbClient, userIndexer, system2, defaultOrganizationProvider, organizationCreation);
+ private UserUpdater underTest = new UserUpdater(newUserNotifier, dbClient, userIndexer, system2, defaultOrganizationProvider, organizationCreation);
@Before
public void setUp() {
@@ -461,25 +458,9 @@ public class UserUpdaterTest {
}
@Test
- public void doest_not_fail_when_no_default_group() {
- settings.setProperty(CORE_DEFAULT_GROUP, (String) null);
-
- underTest.create(db.getSession(), NewUser.builder()
- .setLogin("user")
- .setName("User")
- .setEmail("user@mail.com")
- .setPassword("password")
- .setScmAccounts(newArrayList("u1", "u_1"))
- .build());
-
- assertThat(dbClient.userDao().selectByLogin(session, "user")).isNotNull();
- }
-
- @Test
public void fail_to_associate_default_group_when_default_group_does_not_exist() {
- settings.setProperty(CORE_DEFAULT_GROUP, "polop");
expectedException.expect(ServerException.class);
- expectedException.expectMessage("The default group 'polop' for new users does not exist. Please update the general security settings to fix this issue.");
+ expectedException.expectMessage("The default group 'sonar-users' for new users does not exist.");
underTest.create(db.getSession(), NewUser.builder()
.setLogin("user")
@@ -1099,10 +1080,7 @@ public class UserUpdaterTest {
}
private GroupDto createDefaultGroup() {
- settings.setProperty(CORE_DEFAULT_GROUP, DEFAULT_GROUP);
- GroupDto groupDto = GroupTesting.newGroupDto().setName(DEFAULT_GROUP).setOrganizationUuid(db.getDefaultOrganization().getUuid());
- db.users().insertGroup(groupDto);
- return groupDto;
+ return db.users().insertGroup(GroupTesting.newGroupDto().setName(DEFAULT_GROUP).setOrganizationUuid(db.getDefaultOrganization().getUuid()));
}
}
diff --git a/server/sonar-server/src/test/java/org/sonar/server/user/ws/ChangePasswordActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/user/ws/ChangePasswordActionTest.java
index 31c64297b61..a3a731b0402 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/user/ws/ChangePasswordActionTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/user/ws/ChangePasswordActionTest.java
@@ -26,7 +26,6 @@ import org.junit.rules.ExpectedException;
import org.sonar.api.config.MapSettings;
import org.sonar.api.utils.System2;
import org.sonar.db.DbTester;
-import org.sonar.db.user.GroupTesting;
import org.sonar.server.es.EsTester;
import org.sonar.server.exceptions.BadRequestException;
import org.sonar.server.exceptions.ForbiddenException;
@@ -56,8 +55,7 @@ public class ChangePasswordActionTest {
@Rule
public UserSessionRule userSessionRule = UserSessionRule.standalone().logIn();
- private UserUpdater userUpdater = new UserUpdater(mock(NewUserNotifier.class), new MapSettings(), db.getDbClient(),
- new UserIndexer(db.getDbClient(), esTester.client()),
+ private UserUpdater userUpdater = new UserUpdater(mock(NewUserNotifier.class), db.getDbClient(), new UserIndexer(db.getDbClient(), esTester.client()),
System2.INSTANCE,
TestDefaultOrganizationProvider.from(db),
mock(OrganizationCreation.class));
@@ -66,7 +64,7 @@ public class ChangePasswordActionTest {
@Before
public void setUp() {
- db.users().insertGroup(GroupTesting.newGroupDto().setName("sonar-users"));
+ db.users().insertGroup(db.getDefaultOrganization(), "sonar-users");
}
@Test
diff --git a/server/sonar-server/src/test/java/org/sonar/server/user/ws/CreateActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/user/ws/CreateActionTest.java
index 96d1de7c32f..b8fb9e76659 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/user/ws/CreateActionTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/user/ws/CreateActionTest.java
@@ -34,12 +34,10 @@ import org.sonar.api.utils.internal.AlwaysIncreasingSystem2;
import org.sonar.core.config.CorePropertyDefinitions;
import org.sonar.db.DbSession;
import org.sonar.db.DbTester;
-import org.sonar.db.organization.OrganizationDto;
import org.sonar.db.user.GroupDto;
import org.sonar.db.user.UserDto;
import org.sonar.server.es.EsTester;
import org.sonar.server.exceptions.ForbiddenException;
-import org.sonar.server.exceptions.ServerException;
import org.sonar.server.organization.DefaultOrganizationProvider;
import org.sonar.server.organization.OrganizationCreation;
import org.sonar.server.organization.TestDefaultOrganizationProvider;
@@ -68,7 +66,7 @@ import static org.sonar.db.user.UserTesting.newUserDto;
public class CreateActionTest {
private static final String DEFAULT_GROUP_NAME = "sonar-users";
- private Settings settings = new MapSettings().setProperty("sonar.defaultGroup", DEFAULT_GROUP_NAME);
+ private Settings settings = new MapSettings();
private System2 system2 = new AlwaysIncreasingSystem2();
@Rule
@@ -88,7 +86,7 @@ public class CreateActionTest {
private OrganizationCreation organizationCreation = mock(OrganizationCreation.class);
private WsActionTester tester = new WsActionTester(new CreateAction(
db.getDbClient(),
- new UserUpdater(mock(NewUserNotifier.class), settings, db.getDbClient(), userIndexer, system2, defaultOrganizationProvider,
+ new UserUpdater(mock(NewUserNotifier.class), db.getDbClient(), userIndexer, system2, defaultOrganizationProvider,
organizationCreation),
userSessionRule));
@@ -254,20 +252,6 @@ public class CreateActionTest {
}
@Test
- public void request_fails_with_ServerException_when_default_group_belongs_to_another_organization() throws Exception {
- OrganizationDto otherOrganization = db.organizations().insert();
- GroupDto group = db.users().insertGroup(otherOrganization);
- setDefaultGroupProperty(group);
- logInAsSystemAdministrator();
-
- expectedException.expect(ServerException.class);
- expectedException.expectMessage("The default group '" + group.getName() + "' for new users does not exist. " +
- "Please update the general security settings to fix this issue");
-
- executeRequest("bar");
- }
-
- @Test
public void fail_when_missing_login() throws Exception {
logInAsSystemAdministrator();
diff --git a/server/sonar-server/src/test/java/org/sonar/server/user/ws/UpdateActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/user/ws/UpdateActionTest.java
index 90bd9bd999c..feea92397b9 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/user/ws/UpdateActionTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/user/ws/UpdateActionTest.java
@@ -45,14 +45,13 @@ import org.sonar.server.ws.WsTester;
import static com.google.common.collect.Lists.newArrayList;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.mock;
-import static org.sonar.db.user.GroupTesting.newGroupDto;
import static org.sonar.db.user.UserTesting.newUserDto;
public class UpdateActionTest {
private static final OrganizationCreation ORGANIZATION_CREATION_NOT_USED_FOR_UPDATE = null;
- private final Settings settings = new MapSettings().setProperty("sonar.defaultGroup", "sonar-users");
+ private final Settings settings = new MapSettings();
private System2 system2 = new System2();
@@ -71,12 +70,10 @@ public class UpdateActionTest {
@Before
public void setUp() {
- dbClient.groupDao().insert(session, newGroupDto().setName("sonar-users"));
- session.commit();
-
+ dbTester.users().insertGroup(dbTester.getDefaultOrganization(), "sonar-users");
userIndexer = new UserIndexer(dbClient, esTester.client());
tester = new WsTester(new UsersWs(new UpdateAction(
- new UserUpdater(mock(NewUserNotifier.class), settings, dbClient, userIndexer, system2, defaultOrganizationProvider, ORGANIZATION_CREATION_NOT_USED_FOR_UPDATE),
+ new UserUpdater(mock(NewUserNotifier.class), dbClient, userIndexer, system2, defaultOrganizationProvider, ORGANIZATION_CREATION_NOT_USED_FOR_UPDATE),
userSessionRule,
new UserJsonWriter(userSessionRule), dbClient)));
}
diff --git a/server/sonar-server/src/test/java/org/sonar/server/usergroups/ws/DeleteActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/usergroups/ws/DeleteActionTest.java
index 51d6edf9dcd..922ab178cba 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/usergroups/ws/DeleteActionTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/usergroups/ws/DeleteActionTest.java
@@ -23,9 +23,6 @@ import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
-import org.sonar.api.CoreProperties;
-import org.sonar.api.config.MapSettings;
-import org.sonar.api.config.Settings;
import org.sonar.api.utils.internal.AlwaysIncreasingSystem2;
import org.sonar.api.web.UserRole;
import org.sonar.db.DbTester;
@@ -45,6 +42,7 @@ import org.sonar.server.ws.WsTester;
import static org.assertj.core.api.Assertions.assertThat;
import static org.sonar.core.permission.GlobalPermissions.SYSTEM_ADMIN;
import static org.sonar.db.permission.OrganizationPermission.ADMINISTER;
+import static org.sonar.server.user.UserUpdater.SONAR_USERS_GROUP_NAME;
import static org.sonar.server.usergroups.ws.GroupWsSupport.PARAM_GROUP_ID;
import static org.sonar.server.usergroups.ws.GroupWsSupport.PARAM_GROUP_NAME;
import static org.sonar.server.usergroups.ws.GroupWsSupport.PARAM_ORGANIZATION_KEY;
@@ -61,19 +59,11 @@ public class DeleteActionTest {
private ComponentDbTester componentTester = new ComponentDbTester(db);
private TestDefaultOrganizationProvider defaultOrganizationProvider = TestDefaultOrganizationProvider.from(db);
private GroupDto defaultGroup;
- private WsTester ws;
+ private WsTester ws = new WsTester(new UserGroupsWs(new DeleteAction(db.getDbClient(), userSession, newGroupWsSupport(), defaultOrganizationProvider)));
@Before
public void setUp() {
- defaultGroup = db.users().insertGroup(db.getDefaultOrganization(), CoreProperties.CORE_DEFAULT_GROUP_DEFAULT_VALUE);
- Settings settings = new MapSettings().setProperty(CoreProperties.CORE_DEFAULT_GROUP, CoreProperties.CORE_DEFAULT_GROUP_DEFAULT_VALUE);
-
- ws = new WsTester(new UserGroupsWs(
- new DeleteAction(
- db.getDbClient(),
- userSession,
- newGroupWsSupport(),
- settings, defaultOrganizationProvider)));
+ defaultGroup = db.users().insertGroup(db.getDefaultOrganization(), SONAR_USERS_GROUP_NAME);
}
@Test
diff --git a/server/sonar-server/src/test/java/org/sonar/server/usergroups/ws/UpdateActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/usergroups/ws/UpdateActionTest.java
index a1b1eca0b81..879a201c667 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/usergroups/ws/UpdateActionTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/usergroups/ws/UpdateActionTest.java
@@ -20,12 +20,10 @@
package org.sonar.server.usergroups.ws;
import org.apache.commons.lang.StringUtils;
-import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.sonar.api.utils.System2;
-import org.sonar.db.DbSession;
import org.sonar.db.DbTester;
import org.sonar.db.organization.OrganizationDto;
import org.sonar.db.user.GroupDto;
@@ -34,16 +32,9 @@ import org.sonar.server.exceptions.ForbiddenException;
import org.sonar.server.exceptions.NotFoundException;
import org.sonar.server.exceptions.ServerException;
import org.sonar.server.organization.TestDefaultOrganizationProvider;
-import org.sonar.server.platform.PersistentSettings;
import org.sonar.server.tester.UserSessionRule;
import org.sonar.server.ws.WsTester;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
import static org.sonar.db.permission.OrganizationPermission.ADMINISTER;
public class UpdateActionTest {
@@ -59,16 +50,7 @@ public class UpdateActionTest {
public ExpectedException expectedException = ExpectedException.none();
private TestDefaultOrganizationProvider defaultOrganizationProvider = TestDefaultOrganizationProvider.from(db);
- private PersistentSettings settings = mock(PersistentSettings.class);
- private WsTester ws = new WsTester(
- new UserGroupsWs(new UpdateAction(db.getDbClient(), userSession, new GroupWsSupport(db.getDbClient(), defaultOrganizationProvider), settings, defaultOrganizationProvider)));
-
- @Before
- public void setUp() throws Exception {
- GroupWsSupport groupSupport = new GroupWsSupport(db.getDbClient(), defaultOrganizationProvider);
- ws = new WsTester(new UserGroupsWs(new UpdateAction(db.getDbClient(), userSession, groupSupport, settings, defaultOrganizationProvider)));
- when(settings.getString(DEFAULT_GROUP_NAME_KEY)).thenReturn(DEFAULT_GROUP_NAME_VALUE);
- }
+ private WsTester ws = new WsTester(new UserGroupsWs(new UpdateAction(db.getDbClient(), userSession, new GroupWsSupport(db.getDbClient(), defaultOrganizationProvider))));
@Test
public void update_both_name_and_description() throws Exception {
@@ -133,38 +115,6 @@ public class UpdateActionTest {
.setParam("id", group.getId().toString())
.setParam("name", "new-name")
.execute();
-
- verify(settings).saveProperty(any(DbSession.class), eq(DEFAULT_GROUP_NAME_KEY), eq("new-name"));
- }
-
- @Test
- public void update_default_group_name_does_not_update_default_group_setting_when_null() throws Exception {
- when(settings.getString(DEFAULT_GROUP_NAME_KEY)).thenReturn(null);
- GroupDto group = db.users().insertGroup(db.getDefaultOrganization(), DEFAULT_GROUP_NAME_VALUE);
- loginAsAdminOnDefaultOrganization();
-
- newRequest()
- .setParam("id", group.getId().toString())
- .setParam("name", "new-name")
- .execute();
-
- verify(settings, never()).saveProperty(any(DbSession.class), eq(DEFAULT_GROUP_NAME_KEY), eq("new-name"));
- }
-
- @Test
- public void do_not_update_default_group_of_default_organization_if_updating_group_on_non_default_organization() throws Exception {
- OrganizationDto org = db.organizations().insert();
- when(settings.getString(DEFAULT_GROUP_NAME_KEY)).thenReturn(DEFAULT_GROUP_NAME_VALUE);
- GroupDto groupInDefaultOrg = db.users().insertGroup(db.getDefaultOrganization(), DEFAULT_GROUP_NAME_VALUE);
- GroupDto group = db.users().insertGroup(org, DEFAULT_GROUP_NAME_VALUE);
- loginAsAdmin(org);
-
- newRequest()
- .setParam("id", group.getId().toString())
- .setParam("name", "new-name")
- .execute();
-
- verify(settings, never()).saveProperty(any(DbSession.class), eq(DEFAULT_GROUP_NAME_KEY), eq("new-name"));
}
@Test
diff --git a/sonar-core/src/main/java/org/sonar/core/config/SecurityProperties.java b/sonar-core/src/main/java/org/sonar/core/config/SecurityProperties.java
index bdd72b397f9..27f4f178c5f 100644
--- a/sonar-core/src/main/java/org/sonar/core/config/SecurityProperties.java
+++ b/sonar-core/src/main/java/org/sonar/core/config/SecurityProperties.java
@@ -19,12 +19,13 @@
*/
package org.sonar.core.config;
-import com.google.common.collect.ImmutableList;
import java.util.List;
import org.sonar.api.CoreProperties;
import org.sonar.api.PropertyType;
import org.sonar.api.config.PropertyDefinition;
+import static java.util.Collections.singletonList;
+
class SecurityProperties {
private SecurityProperties() {
@@ -32,14 +33,7 @@ class SecurityProperties {
}
static List<PropertyDefinition> all() {
- return ImmutableList.of(
- PropertyDefinition.builder(CoreProperties.CORE_DEFAULT_GROUP)
- .defaultValue(CoreProperties.CORE_DEFAULT_GROUP_DEFAULT_VALUE)
- .name("Default user group")
- .description("Any new users will automatically join this group.")
- .category(CoreProperties.CATEGORY_SECURITY)
- .build(),
-
+ return singletonList(
PropertyDefinition.builder(CoreProperties.CORE_FORCE_AUTHENTICATION_PROPERTY)
.defaultValue(Boolean.toString(CoreProperties.CORE_FORCE_AUTHENTICATION_DEFAULT_VALUE))
.name("Force user authentication")
diff --git a/sonar-core/src/test/java/org/sonar/core/config/CorePropertyDefinitionsTest.java b/sonar-core/src/test/java/org/sonar/core/config/CorePropertyDefinitionsTest.java
index 50a3028672f..0d1e7f05b9f 100644
--- a/sonar-core/src/test/java/org/sonar/core/config/CorePropertyDefinitionsTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/config/CorePropertyDefinitionsTest.java
@@ -33,7 +33,7 @@ public class CorePropertyDefinitionsTest {
@Test
public void all() {
List<PropertyDefinition> defs = CorePropertyDefinitions.all();
- assertThat(defs).hasSize(58);
+ assertThat(defs).hasSize(57);
}
@Test
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/CoreProperties.java b/sonar-plugin-api/src/main/java/org/sonar/api/CoreProperties.java
index 54612177c24..f5753d6488b 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/CoreProperties.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/CoreProperties.java
@@ -191,8 +191,20 @@ public interface CoreProperties {
@Deprecated
String CORE_ALLOW_USERS_TO_SIGNUP_PROPERTY = "sonar.allowUsersToSignUp";
+ /**
+ * @deprecated since 6.4. The default group is hardcoded to 'sonar-users'
+ * @see <a href="https://jira.sonarsource.com/browse/SONAR-9014">SONAR-9014/a>
+ */
+ @Deprecated
String CORE_DEFAULT_GROUP = "sonar.defaultGroup";
+
+ /**
+ * @deprecated since 6.4. The default group is hardcoded to 'sonar-users'
+ * @see <a href="https://jira.sonarsource.com/browse/SONAR-9014">SONAR-9014/a>
+ */
+ @Deprecated
String CORE_DEFAULT_GROUP_DEFAULT_VALUE = "sonar-users";
+
boolean CORE_ALLOW_USERS_TO_SIGNUP_DEAULT_VALUE = false;
/**
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/server/authentication/UserIdentity.java b/sonar-plugin-api/src/main/java/org/sonar/api/server/authentication/UserIdentity.java
index 18b55dfc1a1..f26c4491b78 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/server/authentication/UserIdentity.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/server/authentication/UserIdentity.java
@@ -26,7 +26,6 @@ import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import javax.annotation.concurrent.Immutable;
-import org.sonar.api.CoreProperties;
import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkNotNull;
@@ -160,7 +159,7 @@ public final class UserIdentity {
* <ul>
* <li>When groups are not empty, group membership is synchronized when user logs in :
* <ul>
- * <li>User won't belong anymore to a group that is not in the list (even the default group defined in {@link CoreProperties#CORE_DEFAULT_GROUP})</li>
+ * <li>User won't belong anymore to a group that is not in the list (even the default group defined in 'sonar-users')</li>
* <li>User will belong only to groups that exist in SonarQube</li>
* <li>Groups that don't exist in SonarQube are silently ignored</li>
* </ul>