public void loginAndCreateLdapUser()
{
final String userBase = "ou=pf-mock-test-users";
final LdapUserDao ldapUserDao = mock(LdapUserDao.class);
loginHandler.ldapConfig = new LdapConfig().setUserBase(userBase);
loginHandler.ldapUserDao = ldapUserDao;
loginHandler.ldapOrganizationalUnitDao = mock(LdapOrganizationalUnitDao.class);
loginHandler.initialize();
Login.getInstance().setLoginHandler(loginHandler);
logon(TEST_ADMIN_USER);
final PFUserDO user = new PFUserDO().setUsername("kai").setFirstname("Kai").setLastname("Reinhard");
userService.createEncryptedPassword(user, "successful");
userService.save(user);
Assert.assertEquals(LoginResultStatus.SUCCESS, loginHandler.checkLogin("kai", "successful").getLoginResultStatus());
final ArgumentCaptor<LdapUser> argumentCaptor = ArgumentCaptor.forClass(LdapUser.class);
verify(ldapUserDao).createOrUpdate(Mockito.anyString(), argumentCaptor.capture());
final LdapUser createdLdapUser = argumentCaptor.getValue();
Assert.assertEquals("kai", createdLdapUser.getUid());
Assert.assertEquals("Kai", createdLdapUser.getGivenName());
Assert.assertEquals("Reinhard", createdLdapUser.getSurname());
logoff();
}