Package fr.ippon.tatami.service

Source Code of fr.ippon.tatami.service.GroupServiceTest

package fr.ippon.tatami.service;

import fr.ippon.tatami.AbstractCassandraTatamiTest;
import fr.ippon.tatami.domain.Group;
import fr.ippon.tatami.domain.User;
import fr.ippon.tatami.security.AuthenticationService;
import fr.ippon.tatami.service.dto.UserGroupDTO;
import org.junit.Test;
import org.springframework.test.util.ReflectionTestUtils;

import javax.inject.Inject;
import java.util.Collection;

import static org.junit.Assert.*;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

public class GroupServiceTest extends AbstractCassandraTatamiTest {

    @Inject
    public UserService userService;

    @Inject
    public GroupService groupService;

    @Test
    public void createAndGetGroup() {
        mockAuthentication("uuser@ippon.fr");
        User user = userService.getUserByLogin("uuser@ippon.fr");
        String groupName = "Group name";
        String groupDescription = "Group description";
        boolean publicGroup = true;
        groupService.createGroup(groupName, groupDescription, publicGroup);
        Collection<Group> groups = groupService.getGroupsForUser(user);
        assertEquals(1, groups.size());

        String groupId = groups.iterator().next().getGroupId();

        Group group = groupService.getGroupById("ippon.fr", groupId);
        assertEquals(groupName, group.getName());
        assertEquals(groupDescription, group.getDescription());
        assertTrue(group.isPublicGroup());
        assertFalse(group.isArchivedGroup());
    }

    @Test
    public void createGroup() {
        mockAuthentication("jdubois@ippon.fr");

        User user = userService.getUserByLogin("jdubois@ippon.fr");
        assertEquals(0, groupService.getGroupsForUser(user).size());

        String groupName = "Group name";
        String groupDescription = "Group description";
        boolean publicGroup = true;
        groupService.createGroup(groupName, groupDescription, publicGroup);
        Collection<Group> groups = groupService.getGroupsForUser(user);
        assertEquals(1, groups.size());

        Group group = groups.iterator().next();
        assertEquals(groupName, group.getName());
        assertEquals(groupDescription, group.getDescription());
        assertTrue(group.isPublicGroup());
        assertFalse(group.isArchivedGroup());
    }

    @Test
    public void addAndRemoveGroupMember() {
        mockAuthentication("userWithStatus@ippon.fr");

        User user = userService.getUserByLogin("userWithStatus@ippon.fr");
        assertEquals(0, groupService.getGroupsForUser(user).size());

        String groupName = "Group name";
        String groupDescription = "Group description";
        boolean publicGroup = true;
        groupService.createGroup(groupName, groupDescription, publicGroup);
        Collection<Group> groups = groupService.getGroupsForUser(user);
        assertEquals(1, groups.size());
        Group group = groups.iterator().next();
        String groupId = group.getGroupId();

        User member = userService.getUserByLogin("userWhoPostStatus@ippon.fr");

        assertEquals(1, groupService.getGroupsForUser(user).size());
        assertEquals(0, groupService.getGroupsForUser(member).size());

        Collection<UserGroupDTO> members = groupService.getMembersForGroup(groupId, user.getLogin());
        assertEquals(1, members.size());

        groupService.addMemberToGroup(member, group);
        members = groupService.getMembersForGroup(groupId, user.getLogin());
        assertEquals(2, members.size());

        assertEquals(1, groupService.getGroupsForUser(user).size());
        assertEquals(1, groupService.getGroupsForUser(member).size());

        groupService.removeMemberFromGroup(member, group);
        members = groupService.getMembersForGroup(groupId, user.getLogin());
        assertEquals(1, members.size());

        assertEquals(1, groupService.getGroupsForUser(user).size());
        assertEquals(0, groupService.getGroupsForUser(member).size());

        // Clean up
        groupService.removeMemberFromGroup(user, group);
        assertEquals(0, groupService.getGroupsForUser(user).size());
    }

    private void mockAuthentication(String login) {
        User authenticateUser = constructAUser(login);
        AuthenticationService mockAuthenticationService = mock(AuthenticationService.class);
        when(mockAuthenticationService.getCurrentUser()).thenReturn(authenticateUser);
        ReflectionTestUtils.setField(groupService, "authenticationService", mockAuthenticationService);
        ReflectionTestUtils.setField(userService, "authenticationService", mockAuthenticationService);
    }
}
TOP

Related Classes of fr.ippon.tatami.service.GroupServiceTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.