package net.rrm.ehour.ui.userprefs.panel; import net.rrm.ehour.exception.ObjectNotFoundException; import net.rrm.ehour.ui.common.BaseSpringWebAppTester; import net.rrm.ehour.user.service.UserService; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.util.tester.FormTester; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; import org.springframework.security.authentication.BadCredentialsException; import static org.mockito.Mockito.doThrow; public class ChangePasswordPanelTest extends BaseSpringWebAppTester { @Before public void setup() { MockitoAnnotations.initMocks(this); getMockContext().putBean("userService", userService); } @Test public void shouldRender() throws ObjectNotFoundException { startPanel(); tester.assertNoErrorMessage(); tester.assertComponent(FORM_PATH, Form.class); } @Test public void shouldHaltWithInvalidCredentials() throws ObjectNotFoundException { doThrow(new BadCredentialsException("Failed")).when(userService).changePassword("thies", "b", "a"); startPanel(); FormTester formTester = tester.newFormTester(FORM_PATH); formTester.setValue("password", "a"); formTester.setValue("confirmPassword", "a"); formTester.setValue("currentPassword", "b"); tester.executeAjaxEvent(FORM_PATH + ":submitButton", "onclick"); tester.assertErrorMessages("currentPassword.user.invalidCurrentPassword"); tester.assertComponent(FORM_PATH, Form.class); } @Test public void shouldChangePassword() throws ObjectNotFoundException { startPanel(); FormTester formTester = tester.newFormTester(FORM_PATH); formTester.setValue("password", "a"); formTester.setValue("confirmPassword", "a"); formTester.setValue("currentPassword", "b"); tester.executeAjaxEvent(FORM_PATH + ":submitButton", "onclick"); tester.assertNoErrorMessage(); tester.assertComponent(FORM_PATH, Form.class); Mockito.verify(userService).changePassword("thies", "b", "a"); } public void startPanel() throws ObjectNotFoundException { tester.startComponentInPage(new ChangePasswordPanel("id", new ChangePasswordBackingBean())); } @Mock private UserService userService; private static String FORM_PATH = "id:border:border_body:changePasswordForm"; }