/**
* 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.portlet.documentlibrary.service.persistence;
import com.liferay.document.library.kernel.model.DLFileEntryMetadata;
import com.liferay.document.library.kernel.model.DLFileEntryType;
import com.liferay.document.library.kernel.service.DLFileEntryTypeLocalServiceUtil;
import com.liferay.document.library.kernel.service.persistence.DLFileEntryTypeFinderUtil;
import com.liferay.dynamic.data.mapping.kernel.DDMStructure;
import com.liferay.portal.kernel.dao.orm.QueryUtil;
import com.liferay.portal.kernel.model.Group;
import com.liferay.portal.kernel.model.RoleConstants;
import com.liferay.portal.kernel.model.User;
import com.liferay.portal.kernel.security.permission.PermissionChecker;
import com.liferay.portal.kernel.security.permission.PermissionCheckerFactoryUtil;
import com.liferay.portal.kernel.security.permission.PermissionThreadLocal;
import com.liferay.portal.kernel.service.ServiceContext;
import com.liferay.portal.kernel.test.rule.AggregateTestRule;
import com.liferay.portal.kernel.test.rule.DeleteAfterTestRun;
import com.liferay.portal.kernel.test.util.GroupTestUtil;
import com.liferay.portal.kernel.test.util.RandomTestUtil;
import com.liferay.portal.kernel.test.util.ServiceContextTestUtil;
import com.liferay.portal.kernel.test.util.UserTestUtil;
import com.liferay.portal.kernel.util.StringPool;
import com.liferay.portal.test.rule.LiferayIntegrationTestRule;
import com.liferay.portal.test.rule.TransactionalTestRule;
import com.liferay.portlet.dynamicdatamapping.util.test.DDMStructureTestUtil;
import java.util.List;
import org.junit.Assert;
import org.junit.Before;
import org.junit.ClassRule;
import org.junit.Rule;
import org.junit.Test;
/**
* @author Roberto Díaz
*/
public class DLFileEntryTypeFinderTest {
@ClassRule
@Rule
public static final AggregateTestRule aggregateTestRule =
new AggregateTestRule(
new LiferayIntegrationTestRule(), TransactionalTestRule.INSTANCE);
@Before
public void setUp() throws Exception {
_group = GroupTestUtil.addGroup();
_user = UserTestUtil.addUser();
}
@Test
public void testFilterCountByKeywords() throws Exception {
int initialFileEntryTypesCount =
DLFileEntryTypeFinderUtil.filterCountByKeywords(
_group.getCompanyId(), new long[] {_group.getGroupId()},
_DL_FILE_ENTRY_TYPE_NAME, true);
ServiceContext serviceContext =
ServiceContextTestUtil.getServiceContext(
_group.getGroupId(), _user.getUserId());
addFileEntryType(serviceContext);
Assert.assertEquals(
initialFileEntryTypesCount + 1,
DLFileEntryTypeFinderUtil.filterCountByKeywords(
_group.getCompanyId(), new long[] {_group.getGroupId()},
_DL_FILE_ENTRY_TYPE_NAME, true));
}
@Test
public void testFilterCountByKeywordsAndBlankKeywordsBasicType()
throws Exception {
Assert.assertEquals(
1,
DLFileEntryTypeFinderUtil.filterCountByKeywords(
_group.getCompanyId(), new long[] {_group.getGroupId()},
StringPool.BLANK, true));
}
@Test
public void testFilterCountByKeywordsAsPowerUser() throws Exception {
User user = UserTestUtil.addGroupUser(_group, RoleConstants.POWER_USER);
PermissionChecker permissionChecker =
PermissionCheckerFactoryUtil.create(user);
PermissionChecker originalPermissionChecker =
PermissionThreadLocal.getPermissionChecker();
PermissionThreadLocal.setPermissionChecker(permissionChecker);
try {
int initialFileEntryTypesCount =
DLFileEntryTypeFinderUtil.filterCountByKeywords(
_group.getCompanyId(), new long[] {_group.getGroupId()},
_DL_FILE_ENTRY_TYPE_NAME, true);
ServiceContext serviceContext =
ServiceContextTestUtil.getServiceContext(
_group.getGroupId(), _user.getUserId());
addFileEntryType(serviceContext);
Assert.assertEquals(
initialFileEntryTypesCount + 1,
DLFileEntryTypeFinderUtil.filterCountByKeywords(
_group.getCompanyId(), new long[] {_group.getGroupId()},
_DL_FILE_ENTRY_TYPE_NAME, true));
}
finally {
PermissionThreadLocal.setPermissionChecker(
originalPermissionChecker);
}
}
@Test
public void testFilterCountByKeywordsAsPowerUserWithoutViewPermission()
throws Exception {
User user = UserTestUtil.addGroupUser(_group, RoleConstants.POWER_USER);
PermissionChecker permissionChecker =
PermissionCheckerFactoryUtil.create(user);
PermissionChecker originalPermissionChecker =
PermissionThreadLocal.getPermissionChecker();
PermissionThreadLocal.setPermissionChecker(permissionChecker);
try {
int initialFileEntryTypesCount =
DLFileEntryTypeFinderUtil.filterCountByKeywords(
_group.getCompanyId(), new long[] {_group.getGroupId()},
_DL_FILE_ENTRY_TYPE_NAME, true);
ServiceContext serviceContext =
ServiceContextTestUtil.getServiceContext(
_group.getGroupId(), _user.getUserId());
serviceContext.setAddGroupPermissions(false);
serviceContext.setAddGuestPermissions(false);
addFileEntryType(serviceContext);
Assert.assertEquals(
initialFileEntryTypesCount,
DLFileEntryTypeFinderUtil.filterCountByKeywords(
_group.getCompanyId(), new long[] {_group.getGroupId()},
_DL_FILE_ENTRY_TYPE_NAME, true));
}
finally {
PermissionThreadLocal.setPermissionChecker(
originalPermissionChecker);
}
}
@Test
public void testFilterCountByKeywordsWithBlankKeywords() throws Exception {
int initialFileEntryTypesCount =
DLFileEntryTypeFinderUtil.filterCountByKeywords(
_group.getCompanyId(), new long[] {_group.getGroupId()},
StringPool.BLANK, true);
ServiceContext serviceContext =
ServiceContextTestUtil.getServiceContext(
_group.getGroupId(), _user.getUserId());
addFileEntryType(serviceContext);
Assert.assertEquals(
initialFileEntryTypesCount + 1,
DLFileEntryTypeFinderUtil.filterCountByKeywords(
_group.getCompanyId(), new long[] {_group.getGroupId()},
StringPool.BLANK, true));
}
@Test
public void testFilterCountByKeywordsWithBlankKeywordsExcludingBasicType()
throws Exception {
int initialFileEntryTypesCount =
DLFileEntryTypeFinderUtil.filterCountByKeywords(
_group.getCompanyId(), new long[] {_group.getGroupId()},
StringPool.BLANK, false);
ServiceContext serviceContext =
ServiceContextTestUtil.getServiceContext(
_group.getGroupId(), _user.getUserId());
addFileEntryType(serviceContext);
Assert.assertEquals(
initialFileEntryTypesCount + 1,
DLFileEntryTypeFinderUtil.filterCountByKeywords(
_group.getCompanyId(), new long[] {_group.getGroupId()},
StringPool.BLANK, false));
}
@Test
public void testFilterFindByKeywords() throws Exception {
ServiceContext serviceContext =
ServiceContextTestUtil.getServiceContext(
_group.getGroupId(), _user.getUserId());
DLFileEntryType fileEntryType = addFileEntryType(serviceContext);
List<DLFileEntryType> fileEntryTypes =
DLFileEntryTypeFinderUtil.filterFindByKeywords(
_group.getCompanyId(), new long[] {_group.getGroupId()},
_DL_FILE_ENTRY_TYPE_NAME, true, QueryUtil.ALL_POS,
QueryUtil.ALL_POS, null);
Assert.assertEquals(
fileEntryTypes.toString(), 1, fileEntryTypes.size());
Assert.assertTrue(fileEntryTypes.contains(fileEntryType));
}
@Test
public void testFilterFindByKeywordsAsPowerUser() throws Exception {
User user = UserTestUtil.addGroupUser(_group, RoleConstants.POWER_USER);
PermissionChecker permissionChecker =
PermissionCheckerFactoryUtil.create(user);
PermissionChecker originalPermissionChecker =
PermissionThreadLocal.getPermissionChecker();
PermissionThreadLocal.setPermissionChecker(permissionChecker);
try {
ServiceContext serviceContext =
ServiceContextTestUtil.getServiceContext(
_group.getGroupId(), _user.getUserId());
DLFileEntryType fileEntryType = addFileEntryType(serviceContext);
List<DLFileEntryType> fileEntryTypes =
DLFileEntryTypeFinderUtil.filterFindByKeywords(
_group.getCompanyId(), new long[] {_group.getGroupId()},
_DL_FILE_ENTRY_TYPE_NAME, true, QueryUtil.ALL_POS,
QueryUtil.ALL_POS, null);
Assert.assertEquals(
fileEntryTypes.toString(), 1, fileEntryTypes.size());
Assert.assertTrue(fileEntryTypes.contains(fileEntryType));
}
finally {
PermissionThreadLocal.setPermissionChecker(
originalPermissionChecker);
}
}
@Test
public void testFilterFindByKeywordsAsPowerUserWithoutViewPermission()
throws Exception {
User user = UserTestUtil.addGroupUser(_group, RoleConstants.POWER_USER);
PermissionChecker permissionChecker =
PermissionCheckerFactoryUtil.create(user);
PermissionChecker originalPermissionChecker =
PermissionThreadLocal.getPermissionChecker();
PermissionThreadLocal.setPermissionChecker(permissionChecker);
try {
ServiceContext serviceContext =
ServiceContextTestUtil.getServiceContext(
_group.getGroupId(), _user.getUserId());
serviceContext.setAddGroupPermissions(false);
serviceContext.setAddGuestPermissions(false);
DLFileEntryType fileEntryType = addFileEntryType(serviceContext);
List<DLFileEntryType> fileEntryTypes =
DLFileEntryTypeFinderUtil.filterFindByKeywords(
_group.getCompanyId(), new long[] {_group.getGroupId()},
_DL_FILE_ENTRY_TYPE_NAME, true, QueryUtil.ALL_POS,
QueryUtil.ALL_POS, null);
Assert.assertEquals(
fileEntryTypes.toString(), 0, fileEntryTypes.size());
Assert.assertFalse(fileEntryTypes.contains(fileEntryType));
}
finally {
PermissionThreadLocal.setPermissionChecker(
originalPermissionChecker);
}
}
@Test
public void testFilterFindByKeywordsWithBlankKeywords() throws Exception {
ServiceContext serviceContext =
ServiceContextTestUtil.getServiceContext(
_group.getGroupId(), _user.getUserId());
DLFileEntryType fileEntryType = addFileEntryType(serviceContext);
List<DLFileEntryType> fileEntryTypes =
DLFileEntryTypeFinderUtil.filterFindByKeywords(
_group.getCompanyId(), new long[] {_group.getGroupId()},
StringPool.BLANK, true, QueryUtil.ALL_POS, QueryUtil.ALL_POS,
null);
Assert.assertEquals(
fileEntryTypes.toString(), 2, fileEntryTypes.size());
Assert.assertTrue(fileEntryTypes.contains(fileEntryType));
DLFileEntryType basicFileEntryType =
DLFileEntryTypeLocalServiceUtil.getFileEntryType(
0, "BASIC-DOCUMENT");
Assert.assertTrue(fileEntryTypes.contains(basicFileEntryType));
}
@Test
public void testFilterFindByKeywordsWithBlankKeywordsBasicType()
throws Exception {
List<DLFileEntryType> fileEntryTypes =
DLFileEntryTypeFinderUtil.filterFindByKeywords(
_group.getCompanyId(), new long[] {_group.getGroupId()},
StringPool.BLANK, true, QueryUtil.ALL_POS, QueryUtil.ALL_POS,
null);
Assert.assertEquals(
fileEntryTypes.toString(), 1, fileEntryTypes.size());
DLFileEntryType basicFileEntryType =
DLFileEntryTypeLocalServiceUtil.getFileEntryType(
0, "BASIC-DOCUMENT");
Assert.assertTrue(fileEntryTypes.contains(basicFileEntryType));
}
@Test
public void testFilterFindByKeywordsWithBlankKeywordsExcludingBasicType()
throws Exception {
ServiceContext serviceContext =
ServiceContextTestUtil.getServiceContext(
_group.getGroupId(), _user.getUserId());
DLFileEntryType fileEntryType = addFileEntryType(serviceContext);
List<DLFileEntryType> fileEntryTypes =
DLFileEntryTypeFinderUtil.filterFindByKeywords(
_group.getCompanyId(), new long[] {_group.getGroupId()},
StringPool.BLANK, false, QueryUtil.ALL_POS, QueryUtil.ALL_POS,
null);
Assert.assertEquals(
fileEntryTypes.toString(), 1, fileEntryTypes.size());
Assert.assertTrue(fileEntryTypes.contains(fileEntryType));
}
protected DLFileEntryType addFileEntryType(ServiceContext serviceContext)
throws Exception {
DDMStructure ddmStructure = DDMStructureTestUtil.addStructure(
_group.getGroupId(), DLFileEntryMetadata.class.getName());
return DLFileEntryTypeLocalServiceUtil.addFileEntryType(
_user.getUserId(), _group.getGroupId(), _DL_FILE_ENTRY_TYPE_NAME,
RandomTestUtil.randomString(),
new long[] {ddmStructure.getStructureId()}, serviceContext);
}
private static final String _DL_FILE_ENTRY_TYPE_NAME =
"DLFileEntryTypeFinderTest";
@DeleteAfterTestRun
private Group _group;
@DeleteAfterTestRun
private User _user;
}