/* vim: set ts=2 et sw=2 cindent fo=qroca: */ package com.globant.katari.hibernate.coreuser.domain; import java.util.HashSet; import java.util.Set; import org.acegisecurity.context.SecurityContextHolder; import org.acegisecurity.providers.UsernamePasswordAuthenticationToken; import org.acegisecurity.userdetails.UserDetails; import org.apache.commons.lang.Validate; import org.easymock.EasyMock; import org.junit.Before; import org.junit.Test; import org.junit.After; import static org.junit.Assert.assertThat; import static org.junit.Assert.fail; import static org.hamcrest.CoreMatchers.*; import com.globant.katari.hibernate.SpringTestUtils; /** * RoleSecurityUtils Test Case. * @author gerardo.bercovich */ public class RoleSecurityUtilsTest { /** * This is the implementation of the repository of the role. */ private RoleRepository roleRepository = null; @Before public void setUp() throws Exception { roleRepository = (RoleRepository) SpringTestUtils.get().getBean( "coreuser.roleRepository"); String roleName = "ADMINISTRATOR"; Set<Role> roles = new HashSet<Role>(); roleRepository.save(new Role(roleName)); roles.add(roleRepository.findRoleByName(roleName)); RoleDetails roleDetailsMock = EasyMock.createMock(RoleDetails.class); EasyMock.expect(roleDetailsMock.getUserRoles()).andReturn(roles).times(2); EasyMock.replay(roleDetailsMock); UsernamePasswordAuthenticationToken authentication; authentication = new UsernamePasswordAuthenticationToken( roleDetailsMock, "admin"); SecurityContextHolder.getContext().setAuthentication(authentication); } @Test public void testGetCurrentUserRoles() { final Set<Role> currentUserRoles = RoleSecurityUtils.getCurrentUserRoles(); assertThat(currentUserRoles.size(), is(1)); assertThat(currentUserRoles.iterator().next().getName(), is("ADMINISTRATOR")); } @Test public void test_Exception_Wrong_userDetails() throws Exception { UserDetails userDetails = EasyMock.createMock(UserDetails.class); EasyMock.replay(userDetails); UsernamePasswordAuthenticationToken authentication; authentication = new UsernamePasswordAuthenticationToken(userDetails, "admin"); SecurityContextHolder.getContext().setAuthentication(authentication); try { RoleSecurityUtils.getCurrentUserRoles(); fail("The principal object type must be RoleUserDetail"); } catch (Exception e) { } } }