/* (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.auth;
import java.util.List;
import org.apache.wicket.extensions.markup.html.form.palette.component.Recorder;
import org.apache.wicket.util.tester.FormTester;
import org.geoserver.security.GeoServerAuthenticationProvider;
import org.geoserver.security.GeoServerSecurityFilterChain;
import org.geoserver.security.auth.UsernamePasswordAuthenticationProvider;
import org.geoserver.security.web.AbstractSecurityWicketTestSupport;
import org.junit.Before;
import org.junit.Test;
import static org.geoserver.security.GeoServerSecurityFilterChain.*;
import static org.junit.Assert.*;
public class AuthenticationPageTest extends AbstractSecurityWicketTestSupport {
AuthenticationPage page;
@Before
public void init() throws Exception {
deactivateRORoleService();
}
@Test
public void testSetProvider() throws Exception {
initializeForXML();
createUserPasswordAuthProvider("default2", "default");
activateRORoleService();
tester.startPage(page = new AuthenticationPage());
tester.assertComponent("form:providerChain:authProviderNames:recorder", Recorder.class);
List<String> selected =
(List<String>) (page.get("form:providerChain:authProviderNames")).getDefaultModelObject();
assertEquals(1, selected.size());
assertTrue(selected.contains("default"));
FormTester form = tester.newFormTester("form");
form.setValue("providerChain:authProviderNames:recorder", "default2");
form.submit("save");
tester.assertNoErrorMessage();
boolean authProvFound = false;
for (GeoServerAuthenticationProvider prov : getSecurityManager()
.getAuthenticationProviders()) {
if (UsernamePasswordAuthenticationProvider.class.isAssignableFrom(prov
.getClass())) {
if (((UsernamePasswordAuthenticationProvider) prov).getName()
.equals("default2")) {
authProvFound = true;
break;
}
}
}
assertTrue(authProvFound);
}
// protected void assignAuthProvider(String providerName) throws Exception {
// form.setValue("config.authProviderNames:recorder", providerName);
// // tester.executeAjaxEvent(formComponentId+":config.authProviderNames:recorder",
// // change);
// // newFormTester();
// }
//
protected boolean hasAuthProviderImpl(Class<?> aClass) {
for (Object o : getSecurityManager().getProviders()) {
if (o.getClass() == aClass)
return true;
}
return false;
}
}