package org.geoserver.web.security.user; import java.util.Locale; import org.springframework.security.core.userdetails.UserDetails; import org.apache.wicket.extensions.markup.html.form.palette.component.Recorder; import org.apache.wicket.util.tester.FormTester; import org.geoserver.security.impl.GeoserverUserDao; import org.geoserver.web.GeoServerWicketTestSupport; public class NewUserPageTest extends GeoServerWicketTestSupport { private GeoserverUserDao dao; @Override protected void setUpInternal() throws Exception { dao = GeoserverUserDao.get(); login(); tester.startPage(new NewUserPage()); } public void testRenders() { tester.assertRenderedPage(NewUserPage.class); } public void testFill() throws Exception { Locale.setDefault(Locale.ENGLISH); // make sure the recorder is where we think it is, it contains the palette selection tester.assertComponent("userForm:roles:roles:recorder", Recorder.class); // try to add a new user FormTester form = tester.newFormTester("userForm"); form.setValue("username", "user"); form.setValue("password", "pwd"); form.setValue("confirmPassword", "pwd"); // note: use a known role, there is no way to add a new role using wickettester support form.setValue("roles:roles:recorder", dao.getRoles().get(0)); form.submit("save"); tester.assertErrorMessages(new String[0]); tester.assertRenderedPage(UserPage.class); dao.reload(); UserDetails user = dao.loadUserByUsername("user"); assertEquals("pwd", user.getPassword()); assertEquals(1, user.getAuthorities().size()); } public void testPasswordsDontMatch() { Locale.setDefault(Locale.ENGLISH); FormTester form = tester.newFormTester("userForm"); form.setValue("username", "user"); form.setValue("password", "pwd1"); form.setValue("confirmPassword", "pwd2"); form.setValue("roles:roles:recorder", dao.getRoles().get(0)); form.submit("save"); tester.assertErrorMessages(new String[] {"'pwd1' from Password and 'pwd2' from Confirm password must be equal."}); tester.assertRenderedPage(NewUserPage.class); } }