package org.sakaiproject.mailsender.logic.impl; import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertNotNull; import static org.mockito.Matchers.anyString; import static org.mockito.Matchers.eq; import static org.mockito.Matchers.isA; import static org.mockito.Mockito.when; import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Properties; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Answers; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.runners.MockitoJUnitRunner; import org.sakaiproject.authz.api.AuthzGroup; import org.sakaiproject.authz.api.AuthzGroupService; import org.sakaiproject.authz.api.Role; import org.sakaiproject.component.api.ServerConfigurationService; import org.sakaiproject.mailsender.logic.ExternalLogic; import org.sakaiproject.mailsender.model.EmailRole; import org.sakaiproject.site.api.Site; import org.sakaiproject.site.api.SiteService; import org.sakaiproject.tool.api.ToolManager; import org.sakaiproject.user.api.UserDirectoryService; @RunWith(MockitoJUnitRunner.class) public class ComposeLogicImplTest { static final String REALM_ID = "composeLogicTest"; @Mock SiteService siteService; @Mock Site site; @Mock AuthzGroupService authzGroupService; @Mock UserDirectoryService userDirectoryService; @Mock ExternalLogic externalLogic; @Mock(answer = Answers.RETURNS_DEEP_STUBS) ToolManager toolManager; @Mock AuthzGroup authzGroup; @Mock ServerConfigurationService serverConfigurationService; ComposeLogicImpl impl; @Before public void setUp() throws Exception { // setup roles HashSet<Role> roles = new HashSet<Role>(); Role firstRole = Mockito.mock(Role.class); when(firstRole.getId()).thenReturn("firstRole"); roles.add(firstRole); Role secondRole = Mockito.mock(Role.class); when(secondRole.getId()).thenReturn("Second Role"); roles.add(secondRole); when(authzGroup.getRoles()).thenReturn(roles); // setup server configuration service when(serverConfigurationService.getString(isA(String.class), eq(""))).thenReturn(""); // setup realm and authzgroup for realm when(externalLogic.getSiteRealmID()).thenReturn(REALM_ID); when(authzGroupService.getAuthzGroup(REALM_ID)).thenReturn(authzGroup); // setup the tool manager Properties props = new Properties(); when(toolManager.getCurrentPlacement().getPlacementConfig()).thenReturn(props); // setup site service when(siteService.getSite(anyString())).thenReturn(site); // setup site when(site.getGroups()).thenReturn(Collections.EMPTY_SET); // setup compose logic impl = new ComposeLogicImpl(); impl.setAuthzGroupService(authzGroupService); impl.setExternalLogic(externalLogic); impl.setSiteService(siteService); impl.setServerConfigurationService(serverConfigurationService); impl.setToolManager(toolManager); impl.setUserDirectoryService(userDirectoryService); } @Test public void ignoreOneRole() throws Exception { impl.setIgnoreRoles("firstRole"); List<EmailRole> roles = impl.getEmailRoles(); assertNotNull(roles); assertEquals(1, roles.size()); assertEquals("Second Role", roles.get(0).getRoleId()); impl.setIgnoreRoles("Second Role"); roles = impl.getEmailRoles(); assertNotNull(roles); assertEquals(1, roles.size()); assertEquals("firstRole", roles.get(0).getRoleId()); } @Test public void ignoreAllRoles() throws Exception { impl.setIgnoreRoles("firstRole, Second Role"); List<EmailRole> roles = impl.getEmailRoles(); assertNotNull(roles); assertEquals(0, roles.size()); } @Test public void emptyEmailGroups() throws Exception { List<EmailRole> groups = impl.getEmailGroups(); assertNotNull(groups); assertEquals(0, groups.size()); } @Test public void emptyEmailSections() throws Exception { List<EmailRole> groups = impl.getEmailSections(); assertNotNull(groups); assertEquals(0, groups.size()); } }