Merged in bugfix/disable_scmadmin (pull request #225)

Disable creation of scmadmin with system parameter
This commit is contained in:
Sebastian Sdorra
2019-04-03 08:34:57 +00:00
2 changed files with 26 additions and 1 deletions

View File

@@ -2,6 +2,8 @@ package sonia.scm.boot;
import com.google.common.annotations.VisibleForTesting;
import org.apache.shiro.authc.credential.PasswordService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import sonia.scm.plugin.Extension;
import sonia.scm.security.PermissionAssigner;
import sonia.scm.security.PermissionDescriptor;
@@ -18,6 +20,8 @@ import java.util.Collections;
@Extension
public class SetupContextListener implements ServletContextListener {
private static final Logger LOG = LoggerFactory.getLogger(SetupContextListener.class);
private final AdministrationContext administrationContext;
@Inject
@@ -27,7 +31,11 @@ public class SetupContextListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
administrationContext.runAsAdmin(SetupAction.class);
if (Boolean.getBoolean("sonia.scm.skipAdminCreation")) {
LOG.info("found skipAdminCreation flag; skipping creation of scmadmin");
} else {
administrationContext.runAsAdmin(SetupAction.class);
}
}
@Override

View File

@@ -9,6 +9,8 @@ import org.mockito.ArgumentCaptor;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import org.mockito.junit.jupiter.MockitoSettings;
import org.mockito.quality.Strictness;
import sonia.scm.security.PermissionAssigner;
import sonia.scm.security.PermissionDescriptor;
import sonia.scm.user.User;
@@ -62,6 +64,21 @@ class SetupContextListenerTest {
verifyAdminPermissionsAssigned();
}
@Test
@MockitoSettings(strictness = Strictness.LENIENT)
void shouldSkipAdminAccountCreationIfPropertyIsSet() {
System.setProperty("sonia.scm.skipAdminCreation", "true");
try {
setupContextListener.contextInitialized(null);
verify(userManager, never()).create(any());
verify(permissionAssigner, never()).setPermissionsForUser(anyString(), any(Collection.class));
} finally {
System.setProperty("sonia.scm.skipAdminCreation", "");
}
}
@Test
void shouldDoNothingOnSecondStart() {
List<User> users = Lists.newArrayList(UserTestData.createTrillian());