/* (c) 2014 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; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import java.util.logging.Logger; import org.geoserver.security.validation.FilterConfigException; import org.geoserver.security.xml.XMLUserGroupService; import org.geoserver.test.GeoServerMockTestSupport; import org.geotools.util.logging.Logging; import org.junit.Before; import org.junit.Test; public class AuthenticationKeyFilterConfigValidatorTest extends GeoServerMockTestSupport { static protected Logger LOGGER = Logging.getLogger("org.geoserver.security"); AuthenticationKeyFilterConfigValidator validator; @Before public void setValidator() { validator=new AuthenticationKeyFilterConfigValidator(getSecurityManager()); } @Test public void testCasFilterConfigValidation() throws Exception{ AuthenticationKeyFilterConfig config = new AuthenticationKeyFilterConfig(); config.setClassName(GeoServerAuthenticationKeyFilter.class.getName()); config.setName("testAuthKey"); check(config); // validator.validateFilterConfig(config); } public void check(AuthenticationKeyFilterConfig config) throws Exception { boolean failed = false; try { validator.validateFilterConfig(config); } catch (FilterConfigException ex){ assertEquals(FilterConfigException.USER_GROUP_SERVICE_NEEDED,ex.getId()); assertEquals(0,ex.getArgs().length); LOGGER.info(ex.getMessage()); failed=true; } assertTrue(failed); config.setUserGroupServiceName("blabla"); failed = false; try { validator.validateFilterConfig(config); } catch (FilterConfigException ex){ assertEquals(FilterConfigException.UNKNOWN_USER_GROUP_SERVICE,ex.getId()); assertEquals(1,ex.getArgs().length); assertEquals("blabla",ex.getArgs()[0]); LOGGER.info(ex.getMessage()); failed=true; } assertTrue(failed); config.setUserGroupServiceName(XMLUserGroupService.DEFAULT_NAME); config.setAuthKeyParamName(null); failed = false; try { validator.validateFilterConfig(config); } catch (AuthenticationKeyFilterConfigException ex){ assertEquals(AuthenticationKeyFilterConfigException.AUTH_KEY_PARAM_NAME_REQUIRED,ex.getId()); assertEquals(0,ex.getArgs().length); LOGGER.info(ex.getMessage()); failed=true; } assertTrue(failed); config.setAuthKeyParamName("authkey"); failed = false; try { validator.validateFilterConfig(config); } catch (AuthenticationKeyFilterConfigException ex){ assertEquals(AuthenticationKeyFilterConfigException.AUTH_KEY_MAPPER_NAME_REQUIRED,ex.getId()); assertEquals(0,ex.getArgs().length); LOGGER.info(ex.getMessage()); failed=true; } assertTrue(failed); config.setAuthKeyMapperName("blabla"); failed = false; try { validator.validateFilterConfig(config); } catch (AuthenticationKeyFilterConfigException ex){ assertEquals(AuthenticationKeyFilterConfigException.AUTH_KEY_MAPPER_NOT_FOUND_$1,ex.getId()); assertEquals(1,ex.getArgs().length); assertEquals("blabla",ex.getArgs()[0]); LOGGER.info(ex.getMessage()); failed=true; } assertTrue(failed); // AuthenticationKeyMapper mapper= GeoServerExtensions.extensions(AuthenticationKeyMapper.class).get(0); // config.setAuthKeyMapperName(mapper.getBeanName()); // validator.validateFilterConfig(config); } }