/* (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.web.passwd;
import static org.junit.Assert.*;
import org.apache.wicket.util.tester.FormTester;
import org.geoserver.security.web.AbstractSecurityWicketTestSupport;
import org.geoserver.web.GeoServerWicketTestSupport;
import org.junit.Before;
import org.junit.Test;
public class MasterPasswordChangePanelTest extends AbstractSecurityWicketTestSupport {
FormTester ft;
@Before
public void setUp() throws Exception {
tester.startPage(new MasterPasswordChangePage());
tester.assertRenderedPage(MasterPasswordChangePage.class);
ft = tester.newFormTester("form");
}
@Test
public void testRequiredFields() throws Exception {
ft.submit();
tester.assertErrorMessages(new String[]{"Field 'Current password' is required.",
"Field 'New password' is required.", "Field 'Confirmation' is required." });
}
@Test
public void testBadCurrentPassword() throws Exception {
ft.setValue("currentPassword", "foo");
ft.setValue("newPassword", "bar");
ft.setValue("newPasswordConfirm", "bar");
ft.submit("save");
assertTrue(testErrorMessagesWithRegExp(".*Current master password invalid.*"));
}
@Test
public void testPasswordViolatesPolicy() throws Exception {
String mpw = getMasterPassword();
System.out.println("testPasswordViolatesPolicy: "+mpw);
ft.setValue("currentPassword", mpw);
ft.setValue("newPassword", "bar");
ft.setValue("newPasswordConfirm", "bar");
ft.submit("save");
assertTrue(testErrorMessagesWithRegExp(".*PasswordPolicyException.*"));
}
@Test
public void testPasswordChange() throws Exception {
String mpw = getMasterPassword();
System.out.println("testPasswordChange: "+mpw);
ft.setValue("currentPassword", mpw);
ft.setValue("newPassword", "Foobar2012");
ft.setValue("newPasswordConfirm", "Foobar2012");
ft.submit("save");
tester.assertNoErrorMessage();
assertTrue(getSecurityManager().checkMasterPassword("Foobar2012"));
}
}