001    /**
002     * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
003     *
004     * This library is free software; you can redistribute it and/or modify it under
005     * the terms of the GNU Lesser General Public License as published by the Free
006     * Software Foundation; either version 2.1 of the License, or (at your option)
007     * any later version.
008     *
009     * This library is distributed in the hope that it will be useful, but WITHOUT
010     * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
011     * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
012     * details.
013     */
014    
015    package com.liferay.portal.service.permission;
016    
017    import com.liferay.portal.model.Group;
018    import com.liferay.portal.model.ResourceConstants;
019    import com.liferay.portal.model.Role;
020    import com.liferay.portal.model.RoleConstants;
021    import com.liferay.portal.model.User;
022    import com.liferay.portal.security.permission.ActionKeys;
023    import com.liferay.portal.security.permission.PermissionChecker;
024    import com.liferay.portal.security.permission.PermissionThreadLocal;
025    import com.liferay.portal.service.ResourcePermissionLocalServiceUtil;
026    import com.liferay.portal.service.RoleLocalServiceUtil;
027    import com.liferay.portal.service.ServiceContext;
028    import com.liferay.portal.service.ServiceTestUtil;
029    import com.liferay.portal.test.DeleteAfterTestRun;
030    import com.liferay.portal.util.test.GroupTestUtil;
031    import com.liferay.portal.util.test.RoleTestUtil;
032    import com.liferay.portal.util.test.ServiceContextTestUtil;
033    import com.liferay.portal.util.test.TestPropsValues;
034    import com.liferay.portal.util.test.UserTestUtil;
035    
036    import org.junit.After;
037    import org.junit.Before;
038    
039    /**
040     * @author Shinn Lok
041     */
042    public abstract class BasePermissionTestCase {
043    
044            @Before
045            public void setUp() throws Exception {
046                    group = GroupTestUtil.addGroup();
047                    user = UserTestUtil.addUser();
048    
049                    serviceContext = ServiceContextTestUtil.getServiceContext(
050                            group.getGroupId());
051    
052                    doSetUp();
053    
054                    ServiceTestUtil.setUser(user);
055    
056                    permissionChecker = PermissionThreadLocal.getPermissionChecker();
057    
058                    addPortletModelViewPermission();
059            }
060    
061            @After
062            public void tearDown() throws Exception {
063                    ServiceTestUtil.setUser(TestPropsValues.getUser());
064    
065                    removePortletModelViewPermission();
066            }
067    
068            protected void addPortletModelViewPermission() throws Exception {
069                    RoleTestUtil.addResourcePermission(
070                            RoleConstants.GUEST, getResourceName(),
071                            ResourceConstants.SCOPE_GROUP, String.valueOf(group.getGroupId()),
072                            ActionKeys.VIEW);
073    
074                    Role role = RoleLocalServiceUtil.getRole(
075                            TestPropsValues.getCompanyId(), RoleConstants.GUEST);
076    
077                    ResourcePermissionLocalServiceUtil.setResourcePermissions(
078                            group.getCompanyId(), getResourceName(),
079                            ResourceConstants.SCOPE_INDIVIDUAL,
080                            String.valueOf(group.getGroupId()), role.getRoleId(),
081                            new String[] {ActionKeys.VIEW});
082            }
083    
084            protected abstract void doSetUp() throws Exception;
085    
086            protected abstract String getResourceName();
087    
088            protected void removePortletModelViewPermission() throws Exception {
089                    RoleTestUtil.removeResourcePermission(
090                            RoleConstants.GUEST, getResourceName(),
091                            ResourceConstants.SCOPE_GROUP, String.valueOf(group.getGroupId()),
092                            ActionKeys.VIEW);
093    
094                    RoleTestUtil.removeResourcePermission(
095                            RoleConstants.GUEST, getResourceName(),
096                            ResourceConstants.SCOPE_INDIVIDUAL,
097                            String.valueOf(group.getGroupId()), ActionKeys.VIEW);
098            }
099    
100            @DeleteAfterTestRun
101            protected Group group;
102    
103            protected PermissionChecker permissionChecker;
104            protected ServiceContext serviceContext;
105    
106            @DeleteAfterTestRun
107            protected User user;
108    
109    }