/* vim: set ts=2 et sw=2 cindent fo=qroca: */
package com.globant.katari.user.integration;
import org.junit.Test;
import org.junit.Before;
import static org.junit.Assert.assertThat;
import static org.hamcrest.CoreMatchers.*;
import org.acegisecurity.userdetails.UserDetails;
import com.globant.katari.hibernate.coreuser.domain.Role;
import com.globant.katari.hibernate.coreuser.domain.RoleRepository;
import com.globant.katari.user.SpringTestUtils;
import com.globant.katari.user.domain.User;
import com.globant.katari.user.domain.UserFilter;
import com.globant.katari.user.domain.UserRepository;
/* Tests the user details service implementation that gets the user information
* from the application domain model.
*/
public class DomainUserDetailsServiceTest {
private UserRepository repository;
@Before
public final void setUp() {
SpringTestUtils.beginTransaction();
repository = (UserRepository) SpringTestUtils.getBean(
"user.userRepository");
RoleRepository roleRepository = (RoleRepository) SpringTestUtils.getBean(
"coreuser.roleRepository");
Role adminRole = roleRepository.findRoleByName("ADMINISTRATOR");
if (adminRole == null) {
roleRepository.save(new Role("ADMINISTRATOR"));
adminRole = roleRepository.findRoleByName("ADMINISTRATOR");
}
while (repository.getUsers(new UserFilter()).size() != 0) {
for (User user : repository.getUsers(new UserFilter())) {
repository.remove(user);
}
}
// Add a user.
User user = new User("admin", "admin@none");
user.changePassword("admin");
user.addRole(adminRole);
repository.save(user);
}
/* Test the loadUserByUsername method. Passes a valid username.
*/
@Test
public final void testLoadUserByUsername() {
DomainUserDetailsService userDetailsService;
userDetailsService = new DomainUserDetailsService(repository);
UserDetails userDetails;
userDetails = userDetailsService.loadUserByUsername("admin");
assertThat(userDetails, is(DomainUserDetails.class));
assertThat(userDetails.getUsername(), is("admin"));
assertThat(userDetails.getPassword(), is("admin"));
assertThat(userDetails.getAuthorities().length, is(1));
}
}