package de.interseroh.report.controller; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.when; import java.util.ArrayList; import java.util.Collection; import java.util.List; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import de.interseroh.report.auth.Role; import de.interseroh.report.auth.RoleEntity; import de.interseroh.report.auth.UserRole; import de.interseroh.report.auth.UserRoleEntity; import de.interseroh.report.auth.UserService; import de.interseroh.report.services.SecurityHelper; import de.interseroh.report.services.SecurityService; /** * Created by hhopf on 26.09.15. */ @RunWith(MockitoJUnitRunner.class) public class SecurityControlTest { @Mock UserService userService; @InjectMocks private SecurityService securityControl = new SecurityService(); @Mock private SecurityHelper securityHelper; @Test public void testForLoop1() { UserRole userRole = getUserRole(); Collection<UserRole> roles = new ArrayList<>(); roles.add(userRole); when(securityHelper.getPrincipalName()).thenReturn("userName"); when(userService.findUserRolesByUserEmail(eq("userName"))) .thenReturn(roles); List<String> rolesResult = securityControl.getRoles(); assertEquals("1 role is in Array", 1, rolesResult.size()); } @Test public void testForLoop2() { Collection<UserRole> roles = getUserRoles(); when(securityHelper.getPrincipalName()).thenReturn("userName"); when(userService.findUserRolesByUserEmail(eq("userName"))) .thenReturn(roles); List<String> rolesResult = securityControl.getRoles(); assertEquals("2 role is in Array", 2, rolesResult.size()); } @Test public void testHasUserRoleValid() { Collection<UserRole> roles = getUserRoles(); roles.add(getUserRoleForCascade()); when(securityHelper.getPrincipalName()).thenReturn("userName"); when(userService.findUserRolesByUserEmail(eq("userName"))) .thenReturn(roles); boolean visible = securityControl .hasUserValidRole("cascade_parameters"); assertTrue(visible); } @Test public void testHasUserRoleValidWITHPräfixFalse() { Collection<UserRole> roles = getUserRolesWithEqualsPräfix(); roles.add(getUserRoleForCascade()); when(securityHelper.getPrincipalName()).thenReturn("userName"); when(userService.findUserRolesByUserEmail(eq("userName"))) .thenReturn(roles); boolean visible = securityControl .hasUserValidRole("CHART"); assertFalse(visible); } private UserRole getUserRole() { return createUserRole("ROLE_SALESINVOICE"); } private UserRole getUserRoleForCascade() { return createUserRole("ROLE_CASCADE_PARAMETERS"); } private Collection<UserRole> getUserRoles() { Collection<UserRole> userRoles = new ArrayList<>(); userRoles.add(createUserRole("ROLE_SALESINVOICE")); userRoles.add(createUserRole("ROLE_PRODUCTCATALOG")); return userRoles; } private Collection<UserRole> getUserRolesWithEqualsPräfix() { Collection<UserRole> userRoles = new ArrayList<>(); userRoles.add(createUserRole("ROLE_CHARTI")); userRoles.add(createUserRole("ROLE_CHARTDATE")); return userRoles; } private UserRole createUserRole(String roleName) { Role role = new RoleEntity(); role.setName(roleName); UserRole userRole = new UserRoleEntity(); userRole.setRole(role); return userRole; } }