/**
* Copyright (c) 2000-present Liferay, Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1 of the License, or (at your option)
* any later version.
*
* This library 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 Lesser General Public License for more
* details.
*/
package com.liferay.portal.security.membershippolicy;
import com.liferay.expando.kernel.service.ExpandoTableLocalServiceUtil;
import com.liferay.portal.kernel.model.User;
import com.liferay.portal.kernel.model.UserGroup;
import com.liferay.portal.kernel.model.UserGroupRole;
import com.liferay.portal.kernel.security.membershippolicy.MembershipPolicyException;
import com.liferay.portal.kernel.service.UserGroupServiceUtil;
import com.liferay.portal.kernel.service.UserLocalServiceUtil;
import com.liferay.portal.kernel.service.UserServiceUtil;
import com.liferay.portal.kernel.test.rule.AggregateTestRule;
import com.liferay.portal.kernel.test.util.ServiceContextTestUtil;
import com.liferay.portal.kernel.test.util.TestPropsValues;
import com.liferay.portal.kernel.util.ArrayUtil;
import com.liferay.portal.security.membershippolicy.util.test.MembershipPolicyTestUtil;
import com.liferay.portal.test.rule.LiferayIntegrationTestRule;
import java.util.Collections;
import java.util.List;
import org.junit.After;
import org.junit.Assert;
import org.junit.ClassRule;
import org.junit.Rule;
import org.junit.Test;
/**
* @author Roberto Díaz
*/
public class UserGroupMembershipPolicyMembershipsTest
extends BaseUserGroupMembershipPolicyTestCase {
@ClassRule
@Rule
public static final AggregateTestRule aggregateTestRule =
new LiferayIntegrationTestRule();
@After
@Override
public void tearDown() throws Exception {
super.tearDown();
ExpandoTableLocalServiceUtil.deleteTables(
TestPropsValues.getCompanyId(), UserGroup.class.getName());
}
@Test(expected = MembershipPolicyException.class)
public void testAddUserToForbiddenUserGroup() throws Exception {
MembershipPolicyTestUtil.addUser(
null, null, null, addForbiddenUserGroups());
}
@Test
public void testAddUserToRequiredUserGroups() throws Exception {
long[] requiredUserGroupIds = addRequiredUserGroups();
int initialUserGroupUsersCount =
UserLocalServiceUtil.getUserGroupUsersCount(
requiredUserGroupIds[0]);
MembershipPolicyTestUtil.addUser(
null, null, null, new long[] {requiredUserGroupIds[0]});
Assert.assertEquals(
initialUserGroupUsersCount + 1,
UserLocalServiceUtil.getUserGroupUsersCount(
requiredUserGroupIds[0]));
}
@Test(expected = MembershipPolicyException.class)
public void testAssignUsersToForbiddenUserGroup() throws Exception {
long[] forbiddenUserGroupIds = addForbiddenUserGroups();
UserServiceUtil.addUserGroupUsers(forbiddenUserGroupIds[0], addUsers());
}
@Test
public void testAssignUsersToRequiredUserGroup() throws Exception {
long[] requiredUserGroupIds = addRequiredUserGroups();
int initialUserGroupUsersCount =
UserLocalServiceUtil.getUserGroupUsersCount(
requiredUserGroupIds[0]);
UserServiceUtil.addUserGroupUsers(requiredUserGroupIds[0], addUsers());
Assert.assertEquals(
initialUserGroupUsersCount + 2,
UserLocalServiceUtil.getUserGroupUsersCount(
requiredUserGroupIds[0]));
Assert.assertTrue(isPropagateMembership());
}
@Test(expected = MembershipPolicyException.class)
public void testAssignUserToForbiddenUserGroups() throws Exception {
long[] userIds = addUsers();
User user = UserLocalServiceUtil.getUser(userIds[0]);
MembershipPolicyTestUtil.updateUser(
user, null, null, null, addForbiddenUserGroups(),
Collections.<UserGroupRole>emptyList());
}
@Test
public void testAssignUserToRequiredUserGroups() throws Exception {
long[] userIds = addUsers();
long[] requiredUserGroupIds = addRequiredUserGroups();
int initialUserGroupUsersCount =
UserLocalServiceUtil.getUserGroupUsersCount(
requiredUserGroupIds[0]);
User user = UserLocalServiceUtil.getUser(userIds[0]);
MembershipPolicyTestUtil.updateUser(
user, null, null, null, new long[] {requiredUserGroupIds[0]},
Collections.<UserGroupRole>emptyList());
Assert.assertEquals(
initialUserGroupUsersCount + 1,
UserLocalServiceUtil.getUserGroupUsersCount(
requiredUserGroupIds[0]));
Assert.assertTrue(isPropagateMembership());
}
@Test
public void testPropagateWhenAddingUserToRequiredUserGroups()
throws Exception {
MembershipPolicyTestUtil.addUser(
null, null, null, addRequiredUserGroups());
Assert.assertTrue(isPropagateMembership());
}
@Test
public void testPropagateWhenAssigningUsersToRequiredUserGroup()
throws Exception {
long[] requiredUserGroupIds = addRequiredUserGroups();
UserServiceUtil.addUserGroupUsers(requiredUserGroupIds[0], addUsers());
Assert.assertTrue(isPropagateMembership());
}
@Test
public void testPropagateWhenAssigningUserToRequiredUserGroups()
throws Exception {
long[] userIds = addUsers();
User user = UserLocalServiceUtil.getUser(userIds[0]);
MembershipPolicyTestUtil.updateUser(
user, null, null, null, addRequiredUserGroups(),
Collections.<UserGroupRole>emptyList());
Assert.assertTrue(isPropagateMembership());
}
@Test
public void testUnassignUserFromRequiredUserGroups() throws Exception {
long[] userIds = addUsers();
long[] standardUserGroupIds = addStandardUserGroups();
long[] requiredUserGroupIds = addRequiredUserGroups();
User user = UserLocalServiceUtil.getUser(userIds[0]);
List<UserGroup> userGroups = user.getUserGroups();
Assert.assertEquals(userGroups.toString(), 0, userGroups.size());
long[] userUserGroupIds = ArrayUtil.append(
standardUserGroupIds, requiredUserGroupIds);
MembershipPolicyTestUtil.updateUser(
user, null, null, null, userUserGroupIds,
Collections.<UserGroupRole>emptyList());
userGroups = user.getUserGroups();
Assert.assertEquals(
userGroups.toString(), userUserGroupIds.length, userGroups.size());
MembershipPolicyTestUtil.updateUser(
user, null, null, null, requiredUserGroupIds,
Collections.<UserGroupRole>emptyList());
userGroups = user.getUserGroups();
Assert.assertEquals(
userGroups.toString(), requiredUserGroupIds.length,
userGroups.size());
}
@Test
public void testUnassignUserFromUserGroups() throws Exception {
long[] userIds = addUsers();
long[] standardUserGroupIds = addStandardUserGroups();
long[] requiredUserGroupIds = addRequiredUserGroups();
User user = UserLocalServiceUtil.getUser(userIds[0]);
List<UserGroup> userGroups = user.getUserGroups();
Assert.assertEquals(userGroups.toString(), 0, userGroups.size());
long[] userUserGroupIds = ArrayUtil.append(
standardUserGroupIds, requiredUserGroupIds);
MembershipPolicyTestUtil.updateUser(
user, null, null, null, userUserGroupIds,
Collections.<UserGroupRole>emptyList());
userGroups = user.getUserGroups();
Assert.assertEquals(
userGroups.toString(), userUserGroupIds.length, userGroups.size());
MembershipPolicyTestUtil.updateUser(
user, null, null, null, standardUserGroupIds,
Collections.<UserGroupRole>emptyList());
userGroups = user.getUserGroups();
Assert.assertEquals(
userGroups.toString(), userUserGroupIds.length, userGroups.size());
}
@Test(expected = MembershipPolicyException.class)
public void testUnassignUsersFromRequiredUserGroup() throws Exception {
long[] requiredUserGroupIds = addRequiredUserGroups();
User user = MembershipPolicyTestUtil.addUser(
null, null, null, requiredUserGroupIds);
UserServiceUtil.unsetUserGroupUsers(
requiredUserGroupIds[0], new long[] {user.getUserId()});
}
@Test
public void testUnassignUsersFromUserGroup() throws Exception {
long[] standardUserGroupIds = addStandardUserGroups();
User user = MembershipPolicyTestUtil.addUser(
null, null, null, standardUserGroupIds);
int initialUserUserGroupCount =
UserLocalServiceUtil.getUserGroupUsersCount(
standardUserGroupIds[0]);
UserServiceUtil.unsetUserGroupUsers(
standardUserGroupIds[0], new long[] {user.getUserId()});
Assert.assertEquals(
initialUserUserGroupCount - 1,
UserLocalServiceUtil.getUserGroupUsersCount(
standardUserGroupIds[0]));
Assert.assertTrue(isPropagateMembership());
}
@Test
public void testVerifyWhenAddingUserGroup() throws Exception {
MembershipPolicyTestUtil.addUserGroup();
Assert.assertTrue(isVerify());
}
@Test
public void testVerifyWhenUpdatingUserGroup() throws Exception {
UserGroup userGroup = MembershipPolicyTestUtil.addUserGroup();
UserGroupServiceUtil.updateUserGroup(
userGroup.getUserGroupId(), userGroup.getName(),
userGroup.getDescription(),
ServiceContextTestUtil.getServiceContext());
Assert.assertTrue(isVerify());
}
}