/** * 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.search.test.internal.util; import com.liferay.asset.kernel.model.AssetTag; import com.liferay.asset.kernel.service.AssetTagLocalServiceUtil; import com.liferay.portal.kernel.model.Group; import com.liferay.portal.kernel.model.User; import com.liferay.portal.kernel.search.Document; import com.liferay.portal.kernel.search.Field; import com.liferay.portal.kernel.security.auth.PrincipalThreadLocal; import com.liferay.portal.kernel.security.permission.PermissionChecker; import com.liferay.portal.kernel.security.permission.PermissionThreadLocal; import com.liferay.portal.kernel.service.ServiceContext; import com.liferay.portal.kernel.test.util.GroupTestUtil; import com.liferay.portal.kernel.test.util.ServiceContextTestUtil; import com.liferay.portal.kernel.test.util.TestPropsValues; import com.liferay.portal.kernel.test.util.UserTestUtil; import com.liferay.portal.kernel.util.StringUtil; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; /** * @author André de Oliveira */ public class UserSearchFixture { public Group addGroup() throws Exception { Group group = GroupTestUtil.addGroup(); _groups.add(group); return group; } public User addUser(Group group, String... assetTagNames) throws Exception { User user1 = UserTestUtil.addUser(group.getGroupId()); _users.add(user1); ServiceContext serviceContext = getServiceContext(group); serviceContext.setAssetTagNames(assetTagNames); User user2 = UserTestUtil.updateUser(user1, serviceContext); List<AssetTag> assetTags = AssetTagLocalServiceUtil.getTags( user2.getModelClassName(), user2.getPrimaryKey()); _assetTags.addAll(assetTags); return user2; } public List<AssetTag> getAssetTags() { return _assetTags; } public List<Group> getGroups() { return _groups; } public List<User> getUsers() { return _users; } public void setUp() throws Exception { _permissionChecker = PermissionThreadLocal.getPermissionChecker(); PermissionThreadLocal.setPermissionChecker( new DummyPermissionChecker() { @Override public boolean hasPermission( Group group, String name, long primKey, String actionId) { return true; } @Override public boolean hasPermission( long groupId, String name, long primKey, String actionId) { return true; } }); _principal = PrincipalThreadLocal.getName(); PrincipalThreadLocal.setName(TestPropsValues.getUserId()); } public void tearDown() { PermissionThreadLocal.setPermissionChecker(_permissionChecker); PrincipalThreadLocal.setName(_principal); } public Map<String, String> toMap(List<Document> list) { Map<String, String> map = new HashMap<>(list.size()); for (Document document : list) { String[] values = document.getValues(Field.ASSET_TAG_NAMES); Arrays.sort(values); map.put(document.get("screenName"), StringUtil.merge(values)); } return map; } public Map<String, String> toMap(User user, String... tags) { return Collections.singletonMap( user.getScreenName(), toStringTags(tags)); } public String toStringTags(String[] tags) { List<String> list = new ArrayList<>(tags.length); for (String tag : tags) { list.add(StringUtil.toLowerCase(tag)); } Collections.sort(list); return StringUtil.merge(list); } protected static ServiceContext getServiceContext(Group group) throws Exception { return ServiceContextTestUtil.getServiceContext( group.getGroupId(), TestPropsValues.getUserId()); } private final List<AssetTag> _assetTags = new ArrayList<>(); private final List<Group> _groups = new ArrayList<>(); private PermissionChecker _permissionChecker; private String _principal; private final List<User> _users = new ArrayList<>(); }