diff --git a/scm-webapp/src/main/java/sonia/scm/boot/SetupContextListener.java b/scm-webapp/src/main/java/sonia/scm/boot/SetupContextListener.java index 2ed9307516..59002c2d08 100644 --- a/scm-webapp/src/main/java/sonia/scm/boot/SetupContextListener.java +++ b/scm-webapp/src/main/java/sonia/scm/boot/SetupContextListener.java @@ -31,11 +31,10 @@ public class SetupContextListener implements ServletContextListener { @Override public void contextInitialized(ServletContextEvent sce) { - String skipAdminCreation = System.getProperty("skipAdminCreation"); - if (skipAdminCreation == null || "false".equalsIgnoreCase(skipAdminCreation)) { - administrationContext.runAsAdmin(SetupAction.class); - } else { + if (Boolean.getBoolean("sonia.scm.skipAdminCreation")) { LOG.info("found skipAdminCreation flag; skipping creation of scmadmin"); + } else { + administrationContext.runAsAdmin(SetupAction.class); } } diff --git a/scm-webapp/src/test/java/sonia/scm/boot/SetupContextListenerTest.java b/scm-webapp/src/test/java/sonia/scm/boot/SetupContextListenerTest.java index 421dca5cb7..8912589480 100644 --- a/scm-webapp/src/test/java/sonia/scm/boot/SetupContextListenerTest.java +++ b/scm-webapp/src/test/java/sonia/scm/boot/SetupContextListenerTest.java @@ -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 users = Lists.newArrayList(UserTestData.createTrillian());