/* * * Copyright (C) 2007-2015 Licensed to the Comunes Association (CA) under * one or more contributor license agreements (see COPYRIGHT for details). * The CA licenses this file to you under the GNU Affero General Public * License version 3, (the "License"); you may not use this file except in * compliance with the License. This file is part of kune. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. * */ package cc.kune.core.server.manager.impl; import static org.junit.Assert.*; import org.junit.Test; import cc.kune.core.client.errors.AccessViolationException; import cc.kune.core.client.errors.AlreadyGroupMemberException; import cc.kune.core.client.errors.LastAdminInGroupException; import cc.kune.core.shared.domain.AdmissionType; import cc.kune.core.shared.domain.GroupListMode; import cc.kune.core.shared.dto.GroupType; import cc.kune.core.shared.dto.SocialNetworkRequestResult; import cc.kune.domain.ParticipationData; import cc.kune.domain.User; import com.google.inject.Inject; // TODO: Auto-generated Javadoc /** * The Class SocialNetworkManagerMoreTest. * * @author vjrj@ourproject.org (Vicente J. Ruiz Jurado) */ public class SocialNetworkManagerMoreTest extends AbstractSocialNetworkManagerTest { /** The social network manager. */ @Inject protected SocialNetworkManagerDefault socialNetworkManager; /** * Last admin unjoin group with collabs fails. * * @throws Exception * the exception */ @Test(expected = LastAdminInGroupException.class) public void lastAdminUnjoinGroupWithCollabsFails() throws Exception { socialNetworkManager.addAdmin(admin, group); socialNetworkManager.requestToJoin(user, group); socialNetworkManager.acceptJoinGroup(admin, userGroup, group); socialNetworkManager.unJoinGroup(admin.getUserGroup(), group); } /** * Last admin unjoin group without collabs orphaned. * * @throws Exception * the exception */ @Test public void lastAdminUnjoinGroupWithoutCollabsOrphaned() throws Exception { socialNetworkManager.addAdmin(admin, group); socialNetworkManager.unJoinGroup(admin.getUserGroup(), group); assertEquals(GroupType.ORPHANED_PROJECT, group.getGroupType()); assertEquals(0, group.getSocialNetwork().getAccessLists().getAdmins().getList().size()); assertEquals(0, group.getSocialNetwork().getAccessLists().getEditors().getList().size()); } /** * Not admin try delete member. * * @throws Exception * the exception */ @Test(expected = AccessViolationException.class) public void notAdminTryDeleteMember() throws Exception { socialNetworkManager.requestToJoin(user, group); socialNetworkManager.addAdmin(admin, group); socialNetworkManager.acceptJoinGroup(admin, userGroup, group); socialNetworkManager.deleteMember(otherUser, userGroup, group); } /** * Participation dont show self group. */ @Test public void participationDontShowSelfGroup() { group.getSocialNetwork().getAccessLists().getViewers().setMode(GroupListMode.EVERYONE); user.getUserGroup().getSocialNetwork().getAccessLists().getViewers().setMode(GroupListMode.EVERYONE); assertEquals(GroupListMode.EVERYONE, group.getSocialNetwork().getAccessLists().getViewers().getMode()); ParticipationData part = socialNetworkManager.findParticipation(User.UNKNOWN_USER, group); assertFalse(part.getGroupsIsAdmin().contains(group)); assertFalse(part.getGroupsIsCollab().contains(group)); socialNetworkManager.addAdmin(admin, group); part = socialNetworkManager.findParticipation(admin, group); assertFalse(part.getGroupsIsAdmin().contains(group)); assertFalse(part.getGroupsIsCollab().contains(group)); socialNetworkManager.addAdmin(user, user.getUserGroup()); part = socialNetworkManager.findParticipation(User.UNKNOWN_USER, user.getUserGroup()); assertFalse(part.getGroupsIsAdmin().contains(user.getUserGroup())); assertFalse(part.getGroupsIsCollab().contains(user.getUserGroup())); } /** * Request join a closed group deny. * * @throws Exception * the exception */ @Test public void requestJoinAClosedGroupDeny() throws Exception { group.setAdmissionType(AdmissionType.Closed); final SocialNetworkRequestResult result = socialNetworkManager.requestToJoin(user, group); assertEquals(result, SocialNetworkRequestResult.denied); } /** * Request join a moderated group add user group to pending. * * @throws Exception * the exception */ @Test public void requestJoinAModeratedGroupAddUserGroupToPending() throws Exception { group.setAdmissionType(AdmissionType.Moderated); final SocialNetworkRequestResult result = socialNetworkManager.requestToJoin(user, group); assertEquals(result, SocialNetworkRequestResult.moderated); assertTrue(group.getSocialNetwork().getPendingCollaborators().getList().contains(userGroup)); } /** * Request join a open group add user group to editors. * * @throws Exception * the exception */ @Test public void requestJoinAOpenGroupAddUserGroupToEditors() throws Exception { group.setAdmissionType(AdmissionType.Open); final SocialNetworkRequestResult result = socialNetworkManager.requestToJoin(user, group); assertEquals(result, SocialNetworkRequestResult.accepted); assertTrue(group.getSocialNetwork().getAccessLists().getEditors().getList().contains(userGroup)); assertEquals(group.getSocialNetwork().getAccessLists().getEditors().getMode(), GroupListMode.NORMAL); } /** * Request join a orphaned group add user group to admins. * * @throws Exception * the exception */ @Test public void requestJoinAOrphanedGroupAddUserGroupToAdmins() throws Exception { orphanedGroup.setAdmissionType(AdmissionType.Open); final SocialNetworkRequestResult result = socialNetworkManager.requestToJoin(user, orphanedGroup); assertEquals(result, SocialNetworkRequestResult.accepted); assertTrue(orphanedGroup.getSocialNetwork().getAccessLists().getAdmins().getList().contains( userGroup)); assertEquals(orphanedGroup.getSocialNetwork().getAccessLists().getAdmins().getMode(), GroupListMode.NORMAL); // FIXME Check change group type to PROJECT } /** * Request join twice a orphaned group add user group to admins. * * @throws Exception * the exception */ @Test(expected = AlreadyGroupMemberException.class) public void requestJoinTwiceAOrphanedGroupAddUserGroupToAdmins() throws Exception { orphanedGroup.setAdmissionType(AdmissionType.Open); final SocialNetworkRequestResult result = socialNetworkManager.requestToJoin(user, orphanedGroup); assertEquals(SocialNetworkRequestResult.accepted, result); socialNetworkManager.requestToJoin(user, orphanedGroup); } /** * Request to join twice dont duplicate pending. * * @throws Exception * the exception */ @Test public void requestToJoinTwiceDontDuplicatePending() throws Exception { group.setAdmissionType(AdmissionType.Moderated); socialNetworkManager.requestToJoin(user, group); socialNetworkManager.requestToJoin(user, group); assertEquals(group.getSocialNetwork().getPendingCollaborators().getList().size(), 1); } /** * Sets the admin anon member fails. * * @throws Exception * the exception */ @Test(expected = Exception.class) public void setAdminAnonMemberFails() throws Exception { socialNetworkManager.addAdmin(admin, group); socialNetworkManager.requestToJoin(user, group); socialNetworkManager.setAdminAsCollab(admin, userGroup, group); } /** * Sets the admin as collab. * * @throws Exception * the exception */ @Test public void setAdminAsCollab() throws Exception { socialNetworkManager.requestToJoin(user, group); socialNetworkManager.addAdmin(admin, group); socialNetworkManager.acceptJoinGroup(admin, userGroup, group); socialNetworkManager.setCollabAsAdmin(admin, userGroup, group); socialNetworkManager.setAdminAsCollab(admin, userGroup, group); assertFalse(group.getSocialNetwork().getPendingCollaborators().getList().contains(userGroup)); assertTrue(group.getSocialNetwork().getAccessLists().getEditors().getList().contains(userGroup)); assertFalse(group.getSocialNetwork().getAccessLists().getAdmins().getList().contains(userGroup)); assertEquals(group.getSocialNetwork().getAccessLists().getAdmins().getList().size(), 1); assertEquals(group.getSocialNetwork().getAccessLists().getAdmins().getMode(), GroupListMode.NORMAL); assertEquals(group.getSocialNetwork().getAccessLists().getEditors().getList().size(), 1); assertEquals(group.getSocialNetwork().getAccessLists().getEditors().getMode(), GroupListMode.NORMAL); assertEquals(group.getSocialNetwork().getPendingCollaborators().getList().size(), 0); } /** * Sets the admin as collab not admin fails. * * @throws Exception * the exception */ @Test(expected = AccessViolationException.class) public void setAdminAsCollabNotAdminFails() throws Exception { socialNetworkManager.requestToJoin(user, group); socialNetworkManager.addAdmin(admin, group); socialNetworkManager.acceptJoinGroup(admin, userGroup, group); socialNetworkManager.setCollabAsAdmin(otherUser, userGroup, group); } /** * Sets the admin not collab fails. * * @throws Exception * the exception */ @Test(expected = Exception.class) public void setAdminNotCollabFails() throws Exception { socialNetworkManager.addAdmin(admin, group); socialNetworkManager.requestToJoin(user, group); socialNetworkManager.setCollabAsAdmin(admin, userGroup, group); } /** * Sets the collab as admin. * * @throws Exception * the exception */ @Test public void setCollabAsAdmin() throws Exception { socialNetworkManager.requestToJoin(user, group); socialNetworkManager.addAdmin(admin, group); socialNetworkManager.acceptJoinGroup(admin, userGroup, group); socialNetworkManager.setCollabAsAdmin(admin, userGroup, group); assertFalse(group.getSocialNetwork().getPendingCollaborators().getList().contains(userGroup)); assertFalse(group.getSocialNetwork().getAccessLists().getEditors().getList().contains(userGroup)); assertTrue(group.getSocialNetwork().getAccessLists().getAdmins().getList().contains(userGroup)); assertEquals(group.getSocialNetwork().getAccessLists().getAdmins().getList().size(), 2); assertEquals(group.getSocialNetwork().getAccessLists().getAdmins().getMode(), GroupListMode.NORMAL); assertEquals(group.getSocialNetwork().getAccessLists().getEditors().getList().size(), 0); assertEquals(group.getSocialNetwork().getAccessLists().getEditors().getMode(), GroupListMode.NOBODY); assertEquals(group.getSocialNetwork().getPendingCollaborators().getList().size(), 0); } /** * Sets the collab as admin not admin fails. * * @throws Exception * the exception */ @Test(expected = AccessViolationException.class) public void setCollabAsAdminNotAdminFails() throws Exception { socialNetworkManager.requestToJoin(user, group); socialNetworkManager.addAdmin(admin, group); socialNetworkManager.acceptJoinGroup(admin, userGroup, group); socialNetworkManager.setCollabAsAdmin(otherUser, userGroup, group); } }