/** * Licensed to The Apereo Foundation under one or more contributor license * agreements. See the NOTICE file distributed with this work for additional * information regarding copyright ownership. * * * The Apereo Foundation licenses this file to you under the Educational * Community License, Version 2.0 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of the License * at: * * http://opensource.org/licenses/ecl2.txt * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. * */ package org.opencastproject.index.service.resources.list.provider; import org.opencastproject.index.service.exception.ListProviderException; import org.opencastproject.index.service.impl.index.AbstractSearchIndex; import org.opencastproject.index.service.resources.list.query.ResourceListQueryImpl; import org.opencastproject.security.api.SecurityService; import org.opencastproject.security.api.User; import org.opencastproject.security.api.UserDirectoryService; import org.opencastproject.security.impl.jpa.JpaOrganization; import org.opencastproject.security.impl.jpa.JpaUser; import org.opencastproject.util.data.Option; import org.easymock.EasyMock; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import java.util.List; import java.util.Map; public class ContributorsListProviderTest { private static final String ORG_ID = "org-id"; private AbstractSearchIndex searchIndex; private UserDirectoryService userDirectoryService; private ContributorsListProvider contributorsListProvider; private SecurityService securityService; private ArrayList<User> users; private User user1; private User user2; private User user3; private User user4; private JpaOrganization organization; @Before public void setUp() throws Exception { String expectedFormat = "{\"organization\":\"mh_default\",\"username\":\"akm220\",\"presentation\":\"Adam McKenzie\"}"; organization = new JpaOrganization(ORG_ID, "name", null, null, null, null); users = new ArrayList<User>(); user1 = new JpaUser("user1", "pass", organization, "User 1", "email1", "provider1", true); user2 = new JpaUser("user2", "pass", organization, "User 2", "email1", "provider1", true); user3 = new JpaUser("user3", "pass", organization, null, "email1", "provider1", true); user4 = new JpaUser("user4", "pass", organization, "User 1", "email3", "provider1", true); users.add(user1); users.add(user2); users.add(user3); users.add(user4); userDirectoryService = new UserDirectoryService() { private Iterator<User> iterator; @Override public User loadUser(String userName) { return null; } @Override public Iterator<User> getUsers() { return null; } @Override public Iterator<User> findUsers(String query, int offset, int limit) { iterator = users.iterator(); List<User> filteredList = new ArrayList<User>(); int i = 0; while ((filteredList.size() < limit || limit == 0) && iterator.hasNext()) { User item = iterator.next(); if (i++ >= offset) { filteredList.add(item); } } return filteredList.iterator(); } @Override public long countUsers() { return users.size(); } @Override public void invalidate(String userName) { return; } }; List<String> contributors = new ArrayList<String>(); contributors.add("User 1"); contributors.add("User 5"); searchIndex = EasyMock.createNiceMock(AbstractSearchIndex.class); EasyMock.expect(searchIndex.getTermsForField(EasyMock.anyString(), EasyMock.anyObject(Option.class))) .andReturn(contributors).anyTimes(); contributorsListProvider = new ContributorsListProvider(); contributorsListProvider.setUserDirectoryService(userDirectoryService); contributorsListProvider.setIndex(searchIndex); EasyMock.replay(searchIndex); } @Test public void testListNames() { Assert.assertTrue(Arrays.equals(ContributorsListProvider.NAMES, contributorsListProvider.getListNames())); } @Test public void testUsernamesList() { Map<String, String> list = contributorsListProvider.getList(ContributorsListProvider.NAMES_TO_USERNAMES, null, null); Assert.assertTrue(list.containsKey(user1.getUsername())); Assert.assertTrue(list.containsKey(user2.getUsername())); Assert.assertTrue(list.containsKey(user3.getUsername())); Assert.assertTrue(list.containsValue(user1.getName())); Assert.assertTrue(list.containsValue(user2.getName())); Assert.assertTrue(list.containsValue(user3.getUsername())); Assert.assertTrue(list.containsKey("User 5")); Assert.assertTrue(list.containsValue("User 5")); Assert.assertEquals(5, list.size()); } @Test public void testListSimple() throws ListProviderException { Map<String, String> list = contributorsListProvider.getList(ContributorsListProvider.DEFAULT, null, null); Assert.assertTrue(list.containsKey(user1.getName())); Assert.assertTrue(list.containsKey(user2.getName())); Assert.assertTrue(list.containsValue(user1.getName())); Assert.assertTrue(list.containsValue(user2.getName())); Assert.assertTrue(list.containsKey("User 5")); Assert.assertTrue(list.containsValue("User 5")); Assert.assertEquals(3, list.size()); } @Test public void testListQuery() { ResourceListQueryImpl query = new ResourceListQueryImpl(); query.setLimit(0); query.setOffset(0); Assert.assertEquals(5, contributorsListProvider.getList(ContributorsListProvider.NAMES_TO_USERNAMES, query, null).size()); query.setOffset(3); Assert.assertEquals(2, contributorsListProvider.getList(ContributorsListProvider.NAMES_TO_USERNAMES, query, null).size()); query.setOffset(0); query.setLimit(1); Assert.assertEquals(1, contributorsListProvider.getList(ContributorsListProvider.NAMES_TO_USERNAMES, query, null).size()); } }