/**
* 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.resources.list.query.ResourceListQueryImpl;
import org.opencastproject.security.api.User;
import org.opencastproject.security.api.UserDirectoryService;
import org.opencastproject.security.impl.jpa.JpaUser;
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 UsersListProviderTest {
private UserDirectoryService userDirectoryService;
private UsersListProvider usersListProvider;
private ArrayList<User> users;
private User user1;
private User user2;
private User user3;
private User user4;
@Before
public void setUp() throws Exception {
users = new ArrayList<User>();
user1 = new JpaUser("user1", "pass", null, "user1", "email1", "provider1", true);
user2 = new JpaUser("user2", "pass", null, "user2", "email1", "provider1", true);
user3 = new JpaUser("user3", "pass", null, "user3", "email1", "provider1", true);
user4 = new JpaUser("user4", "pass", null, "user1", "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;
}
};
usersListProvider = new UsersListProvider();
usersListProvider.setUserDirectoryService(userDirectoryService);
}
@Test
public void testListNames() {
Assert.assertTrue(Arrays.equals(UsersListProvider.NAMES, usersListProvider.getListNames()));
}
@Test
public void testListSimple() throws ListProviderException {
Map<String, String> list = usersListProvider.getList(UsersListProvider.NAME, null, null);
Assert.assertTrue(list.containsKey(user1.getName()));
Assert.assertTrue(list.containsKey(user2.getName()));
Assert.assertTrue(list.containsKey(user3.getName()));
Assert.assertEquals(3, list.size());
list = usersListProvider.getList(UsersListProvider.USERNAME, null, null);
Assert.assertTrue(list.containsKey(user1.getUsername()));
Assert.assertTrue(list.containsKey(user2.getUsername()));
Assert.assertTrue(list.containsKey(user3.getUsername()));
Assert.assertTrue(list.containsKey(user4.getUsername()));
Assert.assertEquals(4, list.size());
list = usersListProvider.getList(UsersListProvider.EMAIL, null, null);
Assert.assertTrue(list.containsKey(user1.getEmail()));
Assert.assertTrue(list.containsKey(user4.getEmail()));
Assert.assertEquals(2, list.size());
list = usersListProvider.getList(UsersListProvider.USERDIRECTORY, null, null);
Assert.assertTrue(list.containsKey(user1.getProvider()));
Assert.assertEquals(1, list.size());
}
@Test
public void testListQuery() {
ResourceListQueryImpl query = new ResourceListQueryImpl();
query.setLimit(0);
query.setOffset(0);
Assert.assertEquals(4, usersListProvider.getList(UsersListProvider.USERNAME, query, null).size());
query.setOffset(3);
Assert.assertEquals(1, usersListProvider.getList(UsersListProvider.USERNAME, query, null).size());
query.setOffset(0);
query.setLimit(1);
Assert.assertEquals(1, usersListProvider.getList(UsersListProvider.USERNAME, query, null).size());
}
}