/* (c) 2014 - 2016 Open Source Geospatial Foundation - all rights reserved * (c) 2001 - 2013 OpenPlans * This code is licensed under the GPL 2.0 license, available at the root * application directory. */ package org.geoserver.security.web.passwd; import static org.junit.Assert.*; import java.net.URL; import java.util.Set; import org.apache.wicket.Component; import org.geoserver.security.config.PasswordPolicyConfig; import org.geoserver.security.password.MasterPasswordProviderConfig; import org.geoserver.security.password.URLMasterPasswordProvider; import org.geoserver.security.password.URLMasterPasswordProviderConfig; import org.geoserver.security.validation.PasswordValidatorImpl; import org.geoserver.security.web.AbstractSecurityNamedServicePanelTest; import org.geoserver.security.web.AbstractSecurityPage; import org.geoserver.security.web.SecurityNamedServiceEditPage; import org.geoserver.security.web.SecurityNamedServiceNewPage; import org.junit.Before; import org.junit.Test; public class MasterPasswordProviderPanelTest extends AbstractSecurityNamedServicePanelTest { @Before public void clearSecurityStuff() throws Exception { Set<String> mpProviders = getSecurityManager().listMasterPasswordProviders(); if (mpProviders.contains("default2")) { MasterPasswordProviderConfig default2 = getSecurityManager().loadMasterPassswordProviderConfig("default2"); getSecurityManager().removeMasterPasswordProvder(default2); } } @Override protected AbstractSecurityPage getBasePage() { return new PasswordPage(); } @Override protected String getBasePanelId() { return "form:masterPasswordProviders"; } @Override protected Integer getTabIndex() { // TODO Auto-generated method stub return null; } @Override protected Class<? extends Component> getNamedServicesClass() { return MasterPasswordProvidersPanel.class; } @Override protected String getDetailsFormComponentId() { // TODO Auto-generated method stub return null; } @Test public void testAddModify() throws Exception{ initializeForXML(); activatePanel(); assertEquals(1, countItems()); assertNotNull(getSecurityNamedServiceConfig("default")); assertNull(getSecurityNamedServiceConfig("xxxxxxxx")); // Test simple add clickAddNew(); tester.assertRenderedPage(SecurityNamedServiceNewPage.class); //detailsPage = (PasswordPolicyPage) tester.getLastRenderedPage(); setSecurityConfigClassName(URLMasterPasswordProviderPanelInfo.class); newFormTester(); setSecurityConfigName("default2"); clickCancel(); tester.assertRenderedPage(basePage.getClass()); assertEquals(1, countItems()); assertNotNull(getSecurityNamedServiceConfig("default")); assertNull(getSecurityNamedServiceConfig("default2")); clickAddNew(); setSecurityConfigClassName(URLMasterPasswordProviderPanelInfo.class); newFormTester(); setSecurityConfigName("default2"); formTester.setValue("panel:content:uRL", "file:passwd"); clickSave(); tester.assertRenderedPage(basePage.getClass()); assertEquals(2, countItems()); assertNotNull(getSecurityNamedServiceConfig("default")); assertNotNull(getSecurityNamedServiceConfig("default2")); // test add with name clash clickAddNew(); setSecurityConfigClassName(URLMasterPasswordProviderPanelInfo.class); newFormTester(); setSecurityConfigName("default2"); formTester.setValue("panel:content:uRL", "file:passwd"); clickSave(); // should not work tester.assertRenderedPage(SecurityNamedServiceNewPage.class); testErrorMessagesWithRegExp(".*default2.*"); clickCancel(); tester.assertRenderedPage(basePage.getClass()); // end test add with name clash // start test modify clickNamedServiceConfig("default2"); tester.assertRenderedPage(SecurityNamedServiceEditPage.class); tester.debugComponentTrees(); newFormTester("panel:panel:form"); formTester.setValue("panel:uRL", "file:passwd2"); clickCancel(); tester.assertRenderedPage(basePage.getClass()); URLMasterPasswordProviderConfig config = (URLMasterPasswordProviderConfig) getSecurityNamedServiceConfig("default2"); assertEquals(new URL("file:passwd"),config.getURL()); clickNamedServiceConfig("default2"); newFormTester("panel:panel:form"); formTester.setValue("panel:uRL", "file:passwd2"); clickSave(); tester.assertRenderedPage(basePage.getClass()); config = (URLMasterPasswordProviderConfig) getSecurityNamedServiceConfig("default2"); assertEquals(new URL("file:passwd2"),config.getURL()); } @Test public void testRemove() throws Exception { initializeForXML(); URLMasterPasswordProviderConfig config = new URLMasterPasswordProviderConfig(); config.setName("default2"); config.setClassName(URLMasterPasswordProvider.class.getCanonicalName()); config.setURL(new URL("file:passwd")); getSecurityManager().saveMasterPasswordProviderConfig(config); activatePanel(); assertEquals(2, countItems()); doRemove(null, "default2"); assertNull(getSecurityManager().loadMasterPassswordProviderConfig("default2")); assertEquals(1, countItems()); } }