/* * * 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.access; import static org.junit.Assert.*; import org.junit.Before; import org.junit.Test; import cc.kune.core.server.TestDomainHelper; import cc.kune.core.server.testhelper.ctx.DomainContext; import cc.kune.core.shared.domain.GroupListMode; import cc.kune.core.shared.domain.utils.AccessRights; import cc.kune.domain.AccessLists; import cc.kune.domain.Group; import cc.kune.domain.SocialNetwork; // TODO: Auto-generated Javadoc /** * The Class AccessRightsServiceTest. * * @author vjrj@ourproject.org (Vicente J. Ruiz Jurado) */ public class AccessRightsServiceTest { /** The access rights manager. */ private AccessRightsServiceDefault accessRightsManager; /** The group1. */ private Group group1; /** The group2. */ private Group group2; /** The group3. */ private Group group3; /** * Access rights should be transitive. */ @Test public void accessRightsShouldBeTransitive() { final DomainContext ctx = new DomainContext(); ctx.createUsers("user1", "user2", "user3"); ctx.inSocialNetworkOf("user1").addAsCollaborator("user2"); ctx.inSocialNetworkOf("user2").addAsCollaborator("user3"); final AccessRights rights = accessRightsManager.get(ctx.getUser("user3"), ctx.getDefaultAccessListOf("user1")); assertTrue(rights.isEditable()); } /** * Admin rights gives edit and view rights. */ @Test public void adminRightsGivesEditAndViewRights() { final DomainContext ctx = new DomainContext(); ctx.createUsers("user1", "user2"); ctx.inSocialNetworkOf("user1").addAsAdministrator("user2"); final AccessRights rights = accessRightsManager.get(ctx.getUser("user2"), ctx.getDefaultAccessListOf("user1")); assertTrue(rights.isAdministrable()); assertTrue(rights.isEditable()); assertTrue(rights.isVisible()); } /** * Check user access rights admins and edit and view false. */ @Test public void checkUserAccessRightsAdminsAndEditAndViewFalse() { final SocialNetwork socialNetwork = TestDomainHelper.createSocialNetwork(group2, group2, group2, group3); final SocialNetwork socialNetwork2 = TestDomainHelper.createSocialNetwork(group1, group1, group1, group1); group1.setSocialNetwork(socialNetwork); group2.setSocialNetwork(socialNetwork2); final AccessLists accessLists = TestDomainHelper.createAccessLists(group1, group1, group2); final AccessRights response = accessRightsManager.get(group3, accessLists); assertFalse(response.isAdministrable()); assertFalse(response.isEditable()); assertFalse(response.isVisible()); } /** * Check user access rights admins and edit false. */ @Test public void checkUserAccessRightsAdminsAndEditFalse() { final SocialNetwork socialNetwork = TestDomainHelper.createSocialNetwork(group2, group2, group2, group3); final SocialNetwork socialNetwork2 = TestDomainHelper.createSocialNetwork(group1, group1, group3, group1); group1.setSocialNetwork(socialNetwork); group2.setSocialNetwork(socialNetwork2); final AccessLists accessLists = TestDomainHelper.createAccessLists(group1, group1, group2); final AccessRights response = accessRightsManager.get(group3, accessLists); assertFalse(response.isAdministrable()); assertFalse(response.isEditable()); assertTrue(response.isVisible()); } /** * Check user access rights admins false. */ @Test public void checkUserAccessRightsAdminsFalse() { final SocialNetwork socialNetwork = TestDomainHelper.createSocialNetwork(group2, group2, group2, group3); final SocialNetwork socialNetwork2 = TestDomainHelper.createSocialNetwork(group1, group3, group3, group1); group1.setSocialNetwork(socialNetwork); group2.setSocialNetwork(socialNetwork2); final AccessLists accessLists = TestDomainHelper.createAccessLists(group1, group1, group2); final AccessRights response = accessRightsManager.get(group3, accessLists); assertFalse(response.isAdministrable()); assertTrue(response.isEditable()); assertTrue(response.isVisible()); } /** * Check user access rights in sn. */ @Test public void checkUserAccessRightsInSN() { final SocialNetwork socialNetwork = TestDomainHelper.createSocialNetwork(group2, group2, group2, group3); final SocialNetwork socialNetwork2 = TestDomainHelper.createSocialNetwork(group3, group3, group3, group1); group1.setSocialNetwork(socialNetwork); group2.setSocialNetwork(socialNetwork2); final AccessLists accessLists = TestDomainHelper.createAccessLists(group3, group1, group2); AccessRights response = accessRightsManager.get(group3, accessLists); assertTrue(response.isAdministrable()); assertTrue(response.isEditable()); assertTrue(response.isVisible()); AccessRights responseGroup1 = accessRightsManager.get(group1, accessLists); assertFalse(responseGroup1.isAdministrable()); assertTrue(responseGroup1.isEditable()); assertTrue(responseGroup1.isVisible()); AccessRights responseGroup2 = accessRightsManager.get(group2, accessLists); assertFalse(responseGroup2.isAdministrable()); // Editable because group2 joins grupo1, and group 1 has edit perms assertTrue(responseGroup2.isEditable()); assertTrue(responseGroup2.isVisible()); final AccessLists accessLists2 = TestDomainHelper.createAccessLists(group2, group3, null); response = accessRightsManager.get(group3, accessLists2); assertTrue(response.isAdministrable()); assertTrue(response.isEditable()); assertTrue(response.isVisible()); responseGroup1 = accessRightsManager.get(group1, accessLists2); assertFalse(responseGroup1.isAdministrable()); assertFalse(responseGroup1.isEditable()); assertFalse(responseGroup1.isVisible()); responseGroup2 = accessRightsManager.get(group2, accessLists2); assertTrue(responseGroup2.isAdministrable()); // Editable because group2 joins grupo1, and group 1 has edit perms assertTrue(responseGroup2.isEditable()); assertTrue(responseGroup2.isVisible()); } /** * Check user access rights view null equal to false. */ @Test public void checkUserAccessRightsViewNullEqualToFalse() { final AccessLists accessLists = TestDomainHelper.createAccessLists(group1, group1, null); final AccessRights response = accessRightsManager.get(group3, accessLists); assertFalse(response.isVisible()); } /** * Check user access rights view null equal to true. */ @Test public void checkUserAccessRightsViewNullEqualToTrue() { final AccessLists accessLists = TestDomainHelper.createAccessLists(group1, group1, null); accessLists.getViewers().setMode(GroupListMode.EVERYONE); final AccessRights response = accessRightsManager.get(group3, accessLists); assertTrue(response.isVisible()); } /** * Inits the. */ @Before public void init() { accessRightsManager = new AccessRightsServiceDefault(); group1 = TestDomainHelper.createGroup(1); group2 = TestDomainHelper.createGroup(2); group3 = TestDomainHelper.createGroup(3); } }