package org.exist.storage; import org.exist.EXistException; import org.exist.TestUtils; import org.exist.security.PermissionDeniedException; import org.exist.security.SecurityManager; import org.exist.security.internal.aider.UserAider; import org.exist.util.Configuration; import org.exist.util.DatabaseConfigurationException; import org.junit.After; import org.junit.Test; import java.io.IOException; import java.util.List; import java.util.Map; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; /** * Tests for startup triggers. */ public class StartupTriggerTest { private final static String USER = "testuser1"; private final static String PASSWORD = "testpass"; /** * Check if startup trigger has access to security manager. */ @Test public void createUser() throws DatabaseConfigurationException, EXistException, IOException { final Configuration config = new Configuration(); final List<Configuration.StartupTriggerConfig> startupTriggers = (List<Configuration.StartupTriggerConfig>) config.getProperty(BrokerPool.PROPERTY_STARTUP_TRIGGERS); startupTriggers.add(new Configuration.StartupTriggerConfig(TestStartupTrigger.class.getName(), null)); BrokerPool.configure(1, 5, config); } @After public void tearDown() throws IOException, DatabaseConfigurationException { TestUtils.cleanupDB(); BrokerPool.stopAll(false); } public static class TestStartupTrigger implements StartupTrigger { public TestStartupTrigger() { super(); } @Override public void execute(final DBBroker sysBroker, final Map<String, List<? extends Object>> params) { final SecurityManager secman = sysBroker.getBrokerPool().getSecurityManager(); if (!secman.hasAccount(USER)) { final UserAider aider = new UserAider(USER); aider.setPassword(PASSWORD); try { secman.addAccount(sysBroker, aider); } catch (final PermissionDeniedException | EXistException e) { fail(e.getMessage()); } assertTrue(secman.hasAccount(USER)); try { secman.deleteAccount(USER); } catch (final PermissionDeniedException | EXistException e) { fail(e.getMessage()); } } } } }