    @Test
    public void resetPassword() throws Exception {


        User userAdmin = getUserAdmin();

        Principal principal = mock(Principal.class);
        when(principal.getUser()).thenReturn(userAdmin);

        when(authenticationManager.getCurrentPrincipal()).thenReturn(principal);

        final String randomPassword = sut.generateRandomPassword(RANDOM, RANDOM, RANDOM, RANDOM, RANDOM);

        doNothing().when(authManagerLdapTemplate).modifyAttributes(any(DirContext.class), eq(user), any(ModificationItem[].class));

        sut.resetPassword(user, RANDOM, RANDOM, RANDOM, RANDOM, RANDOM);
        verify(authManagerLdapTemplate).changePassword(user, randomPassword, userAdmin);
        verify(authManagerLdapTemplate, times(2)).getTemplate(userAdmin);
        verify(authManagerLdapTemplate).getCallback(user, randomPassword);
        verify(authManagerLdapTemplate).getCallback(user);
        verify(authManagerLdapTemplate).changeLdapUserPassword(any(DirContext.class), eq(randomPassword), eq(user));
        verify(authManagerLdapTemplate).setLdapUserPasswordResetFlag(any(DirContext.class), eq(user));

    }