/*
* Copyright 2001-2008 Geert Bevin (gbevin[remove] at uwyn dot com)
* Licensed under the Apache License, Version 2.0 (the "License")
* $Id: TestMemoryUsers.java 3918 2008-04-14 17:35:35Z gbevin $
*/
package com.uwyn.rife.authentication.credentialsmanagers;
import com.uwyn.rife.authentication.credentials.RoleUser;
import com.uwyn.rife.authentication.credentialsmanagers.exceptions.DuplicateLoginException;
import com.uwyn.rife.authentication.credentialsmanagers.exceptions.DuplicateRoleException;
import com.uwyn.rife.authentication.credentialsmanagers.exceptions.DuplicateUserIdException;
import com.uwyn.rife.authentication.exceptions.CredentialsManagerException;
import com.uwyn.rife.config.RifeConfig;
import com.uwyn.rife.resources.ResourceFinderClasspath;
import com.uwyn.rife.tools.ExceptionUtils;
import com.uwyn.rife.tools.StringEncryptor;
import java.io.File;
import java.util.ArrayList;
import junit.framework.TestCase;
public class TestMemoryUsers extends TestCase
{
public TestMemoryUsers(String name)
{
super(name);
}
public void testInstantiation()
{
MemoryUsers users = null;
users = new MemoryUsers();
assertNotNull(users);
}
public void testNoInitialUsers()
{
MemoryUsers users = new MemoryUsers();
assertEquals(0, users.countUsers());
}
public void testAddRoles()
{
MemoryUsers users = new MemoryUsers();
try
{
users
.addRole("role1")
.addRole("role2")
.addRole("role3");
try
{
users.addRole("role2");
fail();
}
catch (DuplicateRoleException e)
{
assertEquals("role2", e.getRole());
}
assertEquals(3, users.countRoles());
assertTrue(users.containsRole("role1"));
assertTrue(users.containsRole("role2"));
assertTrue(users.containsRole("role3"));
assertTrue(!users.containsRole("role4"));
}
catch (CredentialsManagerException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
}
public void testAddUsers()
{
MemoryUsers users = new MemoryUsers();
try
{
users
.addRole("role1")
.addRole("role2")
.addRole("role3");
RoleUserAttributes user1_attributes = new RoleUserAttributes("thepassword");
users.addUser("login1", user1_attributes);
assertEquals(0, user1_attributes.getUserId());
RoleUserAttributes user2_attributes = new RoleUserAttributes("thepassword2", new String[] {"role1", "role2"});
users.addUser("login2", user2_attributes);
assertEquals(1, user2_attributes.getUserId());
RoleUserAttributes user3_attributes = new RoleUserAttributes(174, "thepassword3", new String[] {"role1", "role2", "role3"});
users.addUser("login3", user3_attributes);
assertEquals(174, user3_attributes.getUserId());
RoleUserAttributes user4_attributes = new RoleUserAttributes("thepassword4", new String[] {"role2", "role3"});
users.addUser("login4", user4_attributes);
assertEquals(2, user4_attributes.getUserId());
try
{
RoleUserAttributes user5_attributes = new RoleUserAttributes("thepassword5", new String[] {"role1"});
users.addUser("login1", user5_attributes);
fail();
}
catch (DuplicateLoginException e)
{
assertEquals(e.getLogin(), "login1");
}
assertEquals(4, users.countUsers());
assertTrue(users.containsUser("login1"));
assertTrue(users.containsUser("login2"));
assertTrue(users.containsUser("login3"));
assertTrue(users.containsUser("login4"));
assertTrue(!users.containsUser("login5"));
assertEquals(3, users.countRoles());
assertTrue(users.containsRole("role1"));
assertTrue(users.containsRole("role2"));
assertTrue(users.containsRole("role3"));
assertTrue(!users.containsRole("role4"));
assertEquals(users.getUserId("login1"), user1_attributes.getUserId());
assertEquals(users.getUserId("login2"), user2_attributes.getUserId());
assertEquals(users.getUserId("login3"), user3_attributes.getUserId());
assertEquals(users.getUserId("login4"), user4_attributes.getUserId());
assertEquals(users.getLogin(user1_attributes.getUserId()), "login1");
assertEquals(users.getLogin(user2_attributes.getUserId()), "login2");
assertEquals(users.getLogin(user3_attributes.getUserId()), "login3");
assertEquals(users.getLogin(user4_attributes.getUserId()), "login4");
}
catch (CredentialsManagerException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
}
public void testUpdateUsers()
{
MemoryUsers users = new MemoryUsers();
try
{
users
.addRole("role1")
.addRole("role2")
.addRole("role3");
RoleUserAttributes user1_attributes = new RoleUserAttributes("thepassword");
RoleUserAttributes user2_attributes = new RoleUserAttributes("thepassword2", new String[] {"role1", "role2"});
RoleUserAttributes user3_attributes = new RoleUserAttributes(174, "thepassword3", new String[] {"role1", "role2", "role3"});
RoleUserAttributes user4_attributes = new RoleUserAttributes("thepassword4", new String[] {"role2", "role3"});
users
.addUser("login1", user1_attributes)
.addUser("login2", user2_attributes)
.addUser("login3", user3_attributes)
.addUser("login4", user4_attributes);
RoleUserAttributes user1_attributes_new = new RoleUserAttributes(4, "thepassword_new", new String[] {"role1", "role2"});
RoleUserAttributes user2_attributes_new = new RoleUserAttributes(3, new String[] {"role2"});
RoleUserAttributes user3_attributes_new = new RoleUserAttributes(2, new String[] {"role1"});
RoleUserAttributes user4_attributes_new = new RoleUserAttributes(1, "thepassword_new4");
assertTrue(users.updateUser("login1", user1_attributes_new));
assertTrue(users.updateUser("login2", user2_attributes_new));
assertTrue(users.updateUser("login3", user3_attributes_new));
assertTrue(users.updateUser("login4", user4_attributes_new));
assertEquals(4, users.countUsers());
assertTrue(users.containsUser("login1"));
assertTrue(users.containsUser("login2"));
assertTrue(users.containsUser("login3"));
assertTrue(users.containsUser("login4"));
assertTrue(!users.containsUser("login5"));
assertEquals(users.getAttributes("login1").getPassword(), user1_attributes_new.getPassword());
assertEquals(users.getAttributes("login1").getUserId(), user1_attributes.getUserId());
assertEquals(users.getAttributes("login1").getRoles().size(), user1_attributes_new.getRoles().size());
assertTrue(users.getAttributes("login1").getRoles().contains("role1"));
assertTrue(users.getAttributes("login1").getRoles().contains("role2"));
assertEquals(users.getAttributes("login2").getPassword(), user2_attributes.getPassword());
assertEquals(users.getAttributes("login2").getUserId(), user2_attributes.getUserId());
assertEquals(users.getAttributes("login2").getRoles().size(), user2_attributes_new.getRoles().size());
assertTrue(users.getAttributes("login2").getRoles().contains("role2"));
assertEquals(users.getAttributes("login3").getPassword(), user3_attributes.getPassword());
assertEquals(users.getAttributes("login3").getUserId(), user3_attributes.getUserId());
assertEquals(users.getAttributes("login3").getRoles().size(), user3_attributes_new.getRoles().size());
assertTrue(users.getAttributes("login3").getRoles().contains("role1"));
assertEquals(users.getAttributes("login4").getPassword(), user4_attributes_new.getPassword());
assertEquals(users.getAttributes("login4").getUserId(), user4_attributes.getUserId());
assertEquals(0, users.getAttributes("login4").getRoles().size());
assertEquals(2, users.countRoles());
assertTrue(users.containsRole("role1"));
assertTrue(users.containsRole("role2"));
assertTrue(!users.containsRole("role3"));
}
catch (CredentialsManagerException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
}
public void testListRoles()
{
MemoryUsers users = new MemoryUsers();
try
{
users
.addRole("role1")
.addRole("role2")
.addRole("role3");
RoleUserAttributes user1_attributes = new RoleUserAttributes("thepassword");
RoleUserAttributes user2_attributes = new RoleUserAttributes("thepassword2", new String[] {"role1", "role2"});
RoleUserAttributes user3_attributes = new RoleUserAttributes(174, "thepassword3", new String[] {"role1", "role2", "role3"});
RoleUserAttributes user4_attributes = new RoleUserAttributes("thepassword4", new String[] {"role2", "role3"});
users
.addUser("login1", user1_attributes)
.addUser("login2", user2_attributes)
.addUser("login3", user3_attributes)
.addUser("login4", user4_attributes);
ListMemoryRoles listroles = null;
listroles = new ListMemoryRoles();
assertTrue(users.listRoles(listroles));
assertEquals(3, listroles.getRoles().size());
assertTrue(listroles.getRoles().contains("role1"));
assertTrue(listroles.getRoles().contains("role2"));
assertTrue(listroles.getRoles().contains("role3"));
users.removeUser("login4");
listroles = new ListMemoryRoles();
assertTrue(users.listRoles(listroles));
assertEquals(3, listroles.getRoles().size());
assertTrue(listroles.getRoles().contains("role1"));
assertTrue(listroles.getRoles().contains("role2"));
assertTrue(listroles.getRoles().contains("role3"));
users.removeUser("login3");
listroles = new ListMemoryRoles();
assertTrue(users.listRoles(listroles));
assertEquals(2, listroles.getRoles().size());
assertTrue(listroles.getRoles().contains("role1"));
assertTrue(listroles.getRoles().contains("role2"));
}
catch (CredentialsManagerException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
}
public void testListUsers()
{
MemoryUsers users = new MemoryUsers();
try
{
users
.addRole("role1")
.addRole("role2")
.addRole("role3");
RoleUserAttributes user1_attributes = new RoleUserAttributes("thepassword");
RoleUserAttributes user2_attributes = new RoleUserAttributes("thepassword2", new String[] {"role1", "role2"});
RoleUserAttributes user3_attributes = new RoleUserAttributes(174, "thepassword3", new String[] {"role1", "role2", "role3"});
RoleUserAttributes user4_attributes = new RoleUserAttributes("thepassword4", new String[] {"role2", "role3"});
users
.addUser("login1", user1_attributes)
.addUser("login2", user2_attributes)
.addUser("login3", user3_attributes)
.addUser("login4", user4_attributes);
ListMemoryUsers listusers = new ListMemoryUsers();
assertTrue(users.listUsers(listusers));
assertEquals(4, listusers.getUsers().size());
assertTrue(listusers.getUsers().contains("0,login1,thepassword"));
assertTrue(listusers.getUsers().contains("1,login2,thepassword2"));
assertTrue(listusers.getUsers().contains("174,login3,thepassword3"));
assertTrue(listusers.getUsers().contains("2,login4,thepassword4"));
}
catch (CredentialsManagerException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
}
public void testListUsersRanged()
{
MemoryUsers users = new MemoryUsers();
try
{
users
.addRole("role1")
.addRole("role2")
.addRole("role3");
RoleUserAttributes user1_attributes = new RoleUserAttributes("thepassword");
RoleUserAttributes user2_attributes = new RoleUserAttributes("thepassword2", new String[] {"role1", "role2"});
RoleUserAttributes user3_attributes = new RoleUserAttributes(174, "thepassword3", new String[] {"role1", "role2", "role3"});
RoleUserAttributes user4_attributes = new RoleUserAttributes("thepassword4", new String[] {"role2", "role3"});
users
.addUser("login1", user1_attributes)
.addUser("login2", user2_attributes)
.addUser("login3", user3_attributes)
.addUser("login4", user4_attributes);
ListMemoryUsers listusers = null;
listusers = new ListMemoryUsers();
assertTrue(users.listUsers(listusers, 2, 1));
assertEquals(2, listusers.getUsers().size());
assertTrue(listusers.getUsers().contains("1,login2,thepassword2"));
assertTrue(listusers.getUsers().contains("174,login3,thepassword3"));
listusers = new ListMemoryUsers();
assertTrue(users.listUsers(listusers, 3, 0));
assertEquals(3, listusers.getUsers().size());
assertTrue(listusers.getUsers().contains("0,login1,thepassword"));
assertTrue(listusers.getUsers().contains("1,login2,thepassword2"));
assertTrue(listusers.getUsers().contains("174,login3,thepassword3"));
listusers = new ListMemoryUsers();
assertFalse(users.listUsers(listusers, 0, 3));
assertEquals(0, listusers.getUsers().size());
listusers = new ListMemoryUsers();
assertTrue(users.listUsers(listusers, 2, 3));
assertEquals(1, listusers.getUsers().size());
assertTrue(listusers.getUsers().contains("2,login4,thepassword4"));
}
catch (CredentialsManagerException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
}
class ListMemoryRoles implements ListRoles
{
private ArrayList<String> mRoles = new ArrayList<String>();
public ArrayList<String> getRoles()
{
return mRoles;
}
public boolean foundRole(String name)
{
mRoles.add(name);
return true;
}
}
class ListMemoryUsers implements ListUsers
{
private ArrayList<String> mUsers = new ArrayList<String>();
public ArrayList<String> getUsers()
{
return mUsers;
}
public boolean foundUser(long userId, String login, String password)
{
mUsers.add(userId+","+login+","+password);
return true;
}
}
public void testGetUserAttributes()
{
MemoryUsers users = new MemoryUsers();
try
{
users
.addRole("role1")
.addRole("role2")
.addRole("role3");
RoleUserAttributes user1_attributes = new RoleUserAttributes("thepassword");
RoleUserAttributes user2_attributes = new RoleUserAttributes("thepassword2", new String[] {"role1", "role2"});
RoleUserAttributes user3_attributes = new RoleUserAttributes(174, "thepassword3", new String[] {"role1", "role2", "role3"});
RoleUserAttributes user4_attributes = new RoleUserAttributes("thepassword4", new String[] {"role2", "role3"});
users
.addUser("login1", user1_attributes)
.addUser("login2", user2_attributes)
.addUser("login3", user3_attributes)
.addUser("login4", user4_attributes);
RoleUserAttributes attributes1 = users.getAttributes("login1");
RoleUserAttributes attributes2 = users.getAttributes("login2");
RoleUserAttributes attributes3 = users.getAttributes("login3");
RoleUserAttributes attributes4 = users.getAttributes("login4");
assertEquals(attributes1.getUserId(), 0);
assertEquals(0, attributes1.getRoles().size());
assertEquals(attributes1.getPassword(), "thepassword");
assertEquals(attributes2.getUserId(), 1);
assertEquals(attributes2.getRoles().size(), 2);
assertTrue(attributes2.getRoles().contains("role1"));
assertTrue(attributes2.getRoles().contains("role2"));
assertEquals(attributes2.getPassword(), "thepassword2");
assertEquals(attributes3.getUserId(), 174);
assertEquals(attributes3.getRoles().size(), 3);
assertTrue(attributes3.getRoles().contains("role1"));
assertTrue(attributes3.getRoles().contains("role2"));
assertTrue(attributes3.getRoles().contains("role3"));
assertEquals(attributes3.getPassword(), "thepassword3");
assertEquals(attributes4.getUserId(), 2);
assertEquals(attributes4.getRoles().size(), 2);
assertTrue(attributes4.getRoles().contains("role2"));
assertTrue(attributes4.getRoles().contains("role3"));
assertEquals(attributes4.getPassword(), "thepassword4");
}
catch (CredentialsManagerException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
}
public void testUserIdSpecification()
{
MemoryUsers users = new MemoryUsers();
try
{
users
.addUser("login1", new RoleUserAttributes(0, "thepassword"))
.addUser("login2", new RoleUserAttributes("thepassword"));
try
{
users.addUser("login3", new RoleUserAttributes(1, "thepassword"));
fail();
}
catch (DuplicateUserIdException e)
{
assertTrue(true);
}
users
.addUser("login4", new RoleUserAttributes(2, "thepassword"))
.addUser("login5", new RoleUserAttributes("thepassword"))
.addUser("login6", new RoleUserAttributes(847, "thepassword"));
assertTrue(users.containsUser("login1"));
assertTrue(users.containsUser("login2"));
assertTrue(!users.containsUser("login3"));
assertTrue(users.containsUser("login4"));
assertTrue(users.containsUser("login5"));
assertTrue(users.containsUser("login6"));
assertEquals("login1", users.getLogin(0));
assertEquals("login2", users.getLogin(1));
assertEquals("login4", users.getLogin(2));
assertEquals("login5", users.getLogin(3));
assertEquals("login6", users.getLogin(847));
}
catch (CredentialsManagerException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
}
public void testValidUsers()
{
MemoryUsers users = new MemoryUsers();
users.setPasswordEncryptor(StringEncryptor.SHA);
try
{
users
.addRole("role1")
.addRole("role2")
.addRole("role3");
RoleUserAttributes user1_attributes = new RoleUserAttributes("thepassword");
users.addUser("login1", user1_attributes);
RoleUserAttributes user2_attributes = new RoleUserAttributes("SHA:iTeooS7tJ7m1mdRrbUacq/pr1uM=", new String[] {"role1", "role2"});
users.addUser("login2", user2_attributes);
RoleUserAttributes user3_attributes = new RoleUserAttributes("thepassword3", new String[] {"role1", "role2", "role3"});
users.addUser("login3", user3_attributes);
RoleUserAttributes user4_attributes = new RoleUserAttributes(174, "thepassword4", new String[] {"role2", "role3"});
users.addUser("login4", user4_attributes);
assertTrue(-1 == users.verifyCredentials(new RoleUser("login", "thepassword")));
assertTrue(0 == users.verifyCredentials(new RoleUser("login1", "thepassword")));
assertTrue(-1 == users.verifyCredentials(new RoleUser("login1", "thepassword2")));
assertTrue(-1 == users.verifyCredentials(new RoleUser("login1", "thepassword", "role1")));
assertTrue(1 == users.verifyCredentials(new RoleUser("login2", "thepassword2")));
assertTrue(-1 == users.verifyCredentials(new RoleUser("login2", "thepassword3")));
assertTrue(1 == users.verifyCredentials(new RoleUser("login2", "thepassword2", "role1")));
assertTrue(1 == users.verifyCredentials(new RoleUser("login2", "thepassword2", "role2")));
assertTrue(-1 == users.verifyCredentials(new RoleUser("login2", "thepassword2", "role3")));
assertTrue(2 == users.verifyCredentials(new RoleUser("login3", "thepassword3")));
assertTrue(-1 == users.verifyCredentials(new RoleUser("login3", "thepassword4")));
assertTrue(2 == users.verifyCredentials(new RoleUser("login3", "thepassword3", "role1")));
assertTrue(2 == users.verifyCredentials(new RoleUser("login3", "thepassword3", "role2")));
assertTrue(2 == users.verifyCredentials(new RoleUser("login3", "thepassword3", "role3")));
assertTrue(-1 == users.verifyCredentials(new RoleUser("login3", "thepassword3", "role4")));
assertTrue(174 == users.verifyCredentials(new RoleUser("login4", "thepassword4")));
assertTrue(-1 == users.verifyCredentials(new RoleUser("login4", "thepassword")));
assertTrue(-1 == users.verifyCredentials(new RoleUser("login4", "thepassword4", "role1")));
assertTrue(174 == users.verifyCredentials(new RoleUser("login4", "thepassword4", "role2")));
assertTrue(174 == users.verifyCredentials(new RoleUser("login4", "thepassword4", "role3")));
}
catch (CredentialsManagerException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
}
public void testUsersInRole()
{
MemoryUsers users = new MemoryUsers();
users.setPasswordEncryptor(StringEncryptor.MD5);
try
{
users
.addRole("role1")
.addRole("role2")
.addRole("role3");
RoleUserAttributes user1_attributes = new RoleUserAttributes("thepassword");
users.addUser("login1", user1_attributes);
RoleUserAttributes user2_attributes = new RoleUserAttributes("thepassword2", new String[] {"role1", "role2"});
users.addUser("login2", user2_attributes);
RoleUserAttributes user3_attributes = new RoleUserAttributes("thepassword3", new String[] {"role1", "role2", "role3"});
users.addUser("login3", user3_attributes);
RoleUserAttributes user4_attributes = new RoleUserAttributes(174, "thepassword4", new String[] {"role2", "role3"});
users.addUser("login4", user4_attributes);
assertTrue(!users.isUserInRole(user1_attributes.getUserId(), "role1"));
assertTrue(users.isUserInRole(user2_attributes.getUserId(), "role1"));
assertTrue(users.isUserInRole(user3_attributes.getUserId(), "role1"));
assertTrue(!users.isUserInRole(user4_attributes.getUserId(), "role1"));
assertTrue(!users.isUserInRole(user1_attributes.getUserId(), "role2"));
assertTrue(users.isUserInRole(user2_attributes.getUserId(), "role2"));
assertTrue(users.isUserInRole(user3_attributes.getUserId(), "role2"));
assertTrue(users.isUserInRole(user4_attributes.getUserId(), "role2"));
assertTrue(!users.isUserInRole(user1_attributes.getUserId(), "role3"));
assertTrue(!users.isUserInRole(user2_attributes.getUserId(), "role3"));
assertTrue(users.isUserInRole(user3_attributes.getUserId(), "role3"));
assertTrue(users.isUserInRole(user4_attributes.getUserId(), "role3"));
}
catch (CredentialsManagerException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
}
public void testListUsersInRole()
{
MemoryUsers users = new MemoryUsers();
try
{
users
.addRole("role1")
.addRole("role2")
.addRole("role3");
ListMemoryUsers listusers = new ListMemoryUsers();
RoleUserAttributes user1_attributes = new RoleUserAttributes("thepassword");
RoleUserAttributes user2_attributes = new RoleUserAttributes("thepassword2", new String[] {"role1", "role2"});
RoleUserAttributes user3_attributes = new RoleUserAttributes(174, "thepassword3", new String[] {"role1", "role2", "role3"});
RoleUserAttributes user4_attributes = new RoleUserAttributes("thepassword4", new String[] {"role2", "role3"});
users
.addUser("login1", user1_attributes)
.addUser("login2", user2_attributes)
.addUser("login3", user3_attributes)
.addUser("login4", user4_attributes);
assertFalse(users.listUsersInRole(null, "role1"));
assertFalse(users.listUsersInRole(listusers, null));
assertFalse(users.listUsersInRole(listusers, ""));
assertTrue(users.listUsersInRole(listusers, "role1"));
assertEquals(2, listusers.getUsers().size());
assertFalse(listusers.getUsers().contains("0,login1,thepassword"));
assertTrue(listusers.getUsers().contains("1,login2,thepassword2"));
assertTrue(listusers.getUsers().contains("174,login3,thepassword3"));
assertFalse(listusers.getUsers().contains("2,login4,thepassword4"));
listusers = new ListMemoryUsers();
assertTrue(users.listUsersInRole(listusers, "role2"));
assertEquals(3, listusers.getUsers().size());
assertFalse(listusers.getUsers().contains("0,login1,thepassword"));
assertTrue(listusers.getUsers().contains("1,login2,thepassword2"));
assertTrue(listusers.getUsers().contains("174,login3,thepassword3"));
assertTrue(listusers.getUsers().contains("2,login4,thepassword4"));
listusers = new ListMemoryUsers();
assertTrue(users.listUsersInRole(listusers, "role3"));
assertEquals(2, listusers.getUsers().size());
assertFalse(listusers.getUsers().contains("0,login1,thepassword"));
assertFalse(listusers.getUsers().contains("1,login2,thepassword2"));
assertTrue(listusers.getUsers().contains("174,login3,thepassword3"));
assertTrue(listusers.getUsers().contains("2,login4,thepassword4"));
listusers = new ListMemoryUsers();
assertFalse(users.listUsersInRole(listusers, "role4"));
assertEquals(0, listusers.getUsers().size());
assertFalse(listusers.getUsers().contains("0,login1,thepassword"));
assertFalse(listusers.getUsers().contains("1,login2,thepassword2"));
assertFalse(listusers.getUsers().contains("174,login3,thepassword3"));
assertFalse(listusers.getUsers().contains("2,login4,thepassword4"));
}
catch (CredentialsManagerException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
}
public void testRemoveUsersByLogin()
{
MemoryUsers users = new MemoryUsers();
try
{
users
.addRole("role1")
.addRole("role2")
.addRole("role3")
.addUser("login1", new RoleUserAttributes("thepassword"))
.addUser("login2", new RoleUserAttributes("thepassword2", new String[] {"role1", "role2"}))
.addUser("login3", new RoleUserAttributes("thepassword3", new String[] {"role1", "role2", "role3"}))
.addUser("login4", new RoleUserAttributes(174, "thepassword4", new String[] {"role2", "role3"}));
assertEquals(4, users.countUsers());
assertTrue(!users.removeUser("login5"));
assertEquals(4, users.countUsers());
assertTrue(users.removeUser("login4"));
assertEquals(3, users.countUsers());
assertTrue(users.removeUser("login1"));
assertEquals(2, users.countUsers());
assertTrue(users.removeUser("login2"));
assertEquals(1, users.countUsers());
assertTrue(users.removeUser("login3"));
assertEquals(0, users.countUsers());
}
catch (CredentialsManagerException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
}
public void testRemoveUsersByUserId()
{
MemoryUsers users = new MemoryUsers();
try
{
users
.addRole("role1")
.addRole("role2")
.addRole("role3")
.addUser("login1", new RoleUserAttributes(1, "thepassword"))
.addUser("login2", new RoleUserAttributes(23, "thepassword2", new String[] {"role1", "role2"}))
.addUser("login3", new RoleUserAttributes(14, "thepassword3", new String[] {"role1", "role2", "role3"}))
.addUser("login4", new RoleUserAttributes(174, "thepassword4", new String[] {"role2", "role3"}));
assertEquals(4, users.countUsers());
assertTrue(!users.removeUser(5));
assertEquals(4, users.countUsers());
assertTrue(users.removeUser(174));
assertEquals(3, users.countUsers());
assertTrue(users.removeUser(1));
assertEquals(2, users.countUsers());
assertTrue(users.removeUser(23));
assertEquals(1, users.countUsers());
assertTrue(users.removeUser(14));
assertEquals(0, users.countUsers());
}
catch (CredentialsManagerException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
}
public void testRemoveRole()
{
MemoryUsers users = new MemoryUsers();
try
{
users
.addRole("role1")
.addRole("role2")
.addRole("role3")
.addUser("login1", new RoleUserAttributes(1, "thepassword"))
.addUser("login2", new RoleUserAttributes(23, "thepassword2", new String[] {"role1", "role2"}))
.addUser("login3", new RoleUserAttributes(14, "thepassword3", new String[] {"role1", "role2", "role3"}))
.addUser("login4", new RoleUserAttributes(174, "thepassword4", new String[] {"role2", "role3"}));
assertEquals(3, users.countRoles());
assertTrue(!users.removeRole("role4"));
assertEquals(3, users.countRoles());
assertTrue(users.removeRole("role3"));
assertEquals(2, users.countRoles());
RoleUserAttributes attributes = users.getAttributes("login3");
assertTrue(attributes.getRoles().contains("role1"));
assertTrue(attributes.getRoles().contains("role2"));
assertTrue(!attributes.getRoles().contains("role3"));
assertTrue(users.removeRole("role2"));
attributes = users.getAttributes("login4");
assertEquals(attributes.getRoles().size(), 0);
attributes = users.getAttributes("login2");
assertTrue(attributes.getRoles().contains("role1"));
}
catch (CredentialsManagerException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
}
public void testClearUsers()
{
MemoryUsers users = new MemoryUsers();
try
{
users
.addRole("role1")
.addRole("role2")
.addRole("role3")
.addUser("login1", new RoleUserAttributes("thepassword"))
.addUser("login2", new RoleUserAttributes("thepassword2", new String[] {"role1", "role2"}))
.addUser("login3", new RoleUserAttributes("thepassword3", new String[] {"role1", "role2", "role3"}))
.addUser("login4", new RoleUserAttributes(174, "thepassword4", new String[] {"role2", "role3"}));
assertEquals(4, users.countUsers());
users.clearUsers();
assertEquals(0, users.countUsers());
}
catch (CredentialsManagerException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
}
public void testVerifyCredentials()
{
MemoryUsers users = new MemoryUsers();
users.setPasswordEncryptor(StringEncryptor.OBF);
try
{
users
.addRole("role1")
.addRole("role2")
.addRole("role3");
RoleUserAttributes user1_attributes = new RoleUserAttributes("thepassword");
users.addUser("login1", user1_attributes);
RoleUserAttributes user2_attributes = new RoleUserAttributes("thepassword2", new String[] {"role1", "role2"});
users.addUser("login2", user2_attributes);
RoleUserAttributes user3_attributes = new RoleUserAttributes("thepassword3", new String[] {"role1", "role2", "role3"});
users.addUser("login3", user3_attributes);
RoleUser user = new RoleUser();
user.setLogin("login2");
user.setPassword("thepassword2");
user.setRole("role2");
assertEquals(user2_attributes.getUserId(), users.verifyCredentials(user));
user.setRole(null);
assertEquals(user2_attributes.getUserId(), users.verifyCredentials(user));
user.setRole("role3");
assertEquals(-1, users.verifyCredentials(user));
}
catch (CredentialsManagerException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
}
public void testToXml()
{
MemoryUsers users = new MemoryUsers();
try
{
users
.addRole("role1")
.addRole("role2")
.addRole("role3")
.addUser("login1", new RoleUserAttributes("thepassword"))
.addUser("login2", new RoleUserAttributes("thepassword2", new String[] {"role1", "role2"}))
.addUser("login3", new RoleUserAttributes("thepassword3", new String[] {"role1", "role2", "role3"}))
.addUser("login4", new RoleUserAttributes(64, "thepassword4"))
.addUser("login5", new RoleUserAttributes(9, "thepassword5", new String[] {"role1", "role2"}));
assertEquals("<credentials>\n"+
"\t<user login=\"login1\">\n"+
"\t\t<password>thepassword</password>\n"+
"\t</user>\n"+
"\t<user login=\"login2\">\n"+
"\t\t<password>thepassword2</password>\n"+
"\t\t<role>role1</role>\n"+
"\t\t<role>role2</role>\n"+
"\t</user>\n"+
"\t<user login=\"login3\">\n"+
"\t\t<password>thepassword3</password>\n"+
"\t\t<role>role1</role>\n"+
"\t\t<role>role2</role>\n"+
"\t\t<role>role3</role>\n"+
"\t</user>\n"+
"\t<user login=\"login4\" userid=\"64\">\n"+
"\t\t<password>thepassword4</password>\n"+
"\t</user>\n"+
"\t<user login=\"login5\" userid=\"9\">\n"+
"\t\t<password>thepassword5</password>\n"+
"\t\t<role>role1</role>\n"+
"\t\t<role>role2</role>\n"+
"\t</user>\n"+
"</credentials>\n", users.toXml());
}
catch (CredentialsManagerException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
}
public void testEncryptedToXml()
{
MemoryUsers users = new MemoryUsers();
users.setPasswordEncryptor(StringEncryptor.SHA);
try
{
users
.addRole("role1")
.addRole("role2")
.addRole("role3")
.addUser("login1", new RoleUserAttributes("thepassword"))
.addUser("login2", new RoleUserAttributes("thepassword2", new String[] {"role1", "role2"}))
.addUser("login3", new RoleUserAttributes("thepassword3", new String[] {"role1", "role2", "role3"}))
.addUser("login4", new RoleUserAttributes(64, "thepassword4"))
.addUser("login5", new RoleUserAttributes(9, "thepassword5", new String[] {"role1", "role2"}));
assertEquals("<credentials>\n"+
"\t<user login=\"login1\">\n"+
"\t\t<password>SHA:gquHbROHv6/kbMHIou8HTq5Qyx0=</password>\n"+
"\t</user>\n"+
"\t<user login=\"login2\">\n"+
"\t\t<password>SHA:iTeooS7tJ7m1mdRrbUacq/pr1uM=</password>\n"+
"\t\t<role>role1</role>\n"+
"\t\t<role>role2</role>\n"+
"\t</user>\n"+
"\t<user login=\"login3\">\n"+
"\t\t<password>SHA:nyGLrpBEibAyX2s8mZSR97HwhpQ=</password>\n"+
"\t\t<role>role1</role>\n"+
"\t\t<role>role2</role>\n"+
"\t\t<role>role3</role>\n"+
"\t</user>\n"+
"\t<user login=\"login4\" userid=\"64\">\n"+
"\t\t<password>SHA:md3fSecksLrBRiH+oNDUs1Rik88=</password>\n"+
"\t</user>\n"+
"\t<user login=\"login5\" userid=\"9\">\n"+
"\t\t<password>SHA:z6BF3VuavxQPTCgIKhiAwdiz5Z0=</password>\n"+
"\t\t<role>role1</role>\n"+
"\t\t<role>role2</role>\n"+
"\t</user>\n"+
"</credentials>\n", users.toXml());
}
catch (CredentialsManagerException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
}
public void testStoreXml()
{
MemoryUsers users = new MemoryUsers();
try
{
users
.addRole("role1")
.addRole("role2")
.addRole("role3");
RoleUserAttributes user1_attributes = new RoleUserAttributes("thepassword");
RoleUserAttributes user2_attributes = new RoleUserAttributes("thepassword2", new String[] {"role1", "role2"});
RoleUserAttributes user3_attributes = new RoleUserAttributes("thepassword3", new String[] {"role1", "role2", "role3"});
RoleUserAttributes user4_attributes = new RoleUserAttributes(64, "thepassword4");
RoleUserAttributes user5_attributes = new RoleUserAttributes(9, "thepassword5", new String[] {"role1", "role2"});
users
.addUser("login1", user1_attributes)
.addUser("login2", user2_attributes)
.addUser("login3", user3_attributes)
.addUser("login4", user4_attributes)
.addUser("login5", user5_attributes);
String xml_filename = "memoryusers_storexml_test.xml";
String xml_path = RifeConfig.Global.getTempPath()+File.separator+xml_filename;
File xml_file = new File(xml_path);
users.storeToXml(xml_file);
MemoryUsers users_stored = new MemoryUsers(xml_filename, ResourceFinderClasspath.getInstance());
assertEquals(5, users_stored.countUsers());
assertTrue(users_stored.containsUser("login1"));
assertTrue(users_stored.containsUser("login2"));
assertTrue(users_stored.containsUser("login3"));
assertTrue(users_stored.containsUser("login4"));
assertTrue(users_stored.containsUser("login5"));
assertTrue(!users_stored.containsUser("login6"));
assertEquals(3, users_stored.countRoles());
assertTrue(users_stored.containsRole("role1"));
assertTrue(users_stored.containsRole("role2"));
assertTrue(users_stored.containsRole("role3"));
assertTrue(!users_stored.containsRole("role4"));
assertEquals(users_stored.getUserId("login1"), user1_attributes.getUserId());
assertEquals(users_stored.getUserId("login2"), user2_attributes.getUserId());
assertEquals(users_stored.getUserId("login3"), user3_attributes.getUserId());
assertEquals(users_stored.getUserId("login4"), user4_attributes.getUserId());
assertEquals(users_stored.getUserId("login5"), user5_attributes.getUserId());
assertEquals(users_stored.getLogin(user1_attributes.getUserId()), "login1");
assertEquals(users_stored.getLogin(user2_attributes.getUserId()), "login2");
assertEquals(users_stored.getLogin(user3_attributes.getUserId()), "login3");
assertEquals(users_stored.getLogin(user4_attributes.getUserId()), "login4");
assertEquals(users_stored.getLogin(user5_attributes.getUserId()), "login5");
RoleUserAttributes user1_attributes_new = users_stored.getAttributes("login1");
RoleUserAttributes user2_attributes_new = users_stored.getAttributes("login2");
RoleUserAttributes user3_attributes_new = users_stored.getAttributes("login3");
RoleUserAttributes user4_attributes_new = users_stored.getAttributes("login4");
RoleUserAttributes user5_attributes_new = users_stored.getAttributes("login5");
assertFalse(user1_attributes == user1_attributes_new);
assertFalse(user2_attributes == user2_attributes_new);
assertFalse(user3_attributes == user3_attributes_new);
assertFalse(user4_attributes == user4_attributes_new);
assertFalse(user5_attributes == user5_attributes_new);
assertEquals(user1_attributes, user1_attributes_new);
assertEquals(user2_attributes, user2_attributes_new);
assertEquals(user3_attributes, user3_attributes_new);
assertEquals(user4_attributes, user4_attributes_new);
assertEquals(user5_attributes, user5_attributes_new);
RoleUserAttributes user6_attributes = new RoleUserAttributes(90, "thepassword6", new String[] {"role2"});
users_stored.addUser("login6", user6_attributes);
users_stored.storeToXml();
MemoryUsers users_stored2 = new MemoryUsers(xml_filename, ResourceFinderClasspath.getInstance());
assertEquals(6, users_stored2.countUsers());
assertTrue(users_stored2.containsUser("login6"));
assertEquals(3, users_stored2.countRoles());
assertEquals(users_stored2.getUserId("login6"), user6_attributes.getUserId());
assertEquals(users_stored2.getLogin(user6_attributes.getUserId()), "login6");
RoleUserAttributes user6_attributes_new = users_stored2.getAttributes("login6");
assertFalse(user6_attributes == user6_attributes_new);
assertEquals(user6_attributes, user6_attributes_new);
xml_file.delete();
}
catch (CredentialsManagerException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
}
public void testListUserRoles()
{
MemoryUsers users = new MemoryUsers();
try
{
users
.addRole("role1")
.addRole("role2")
.addRole("role3");
RoleUserAttributes user1_attributes = new RoleUserAttributes(49, "thepassword");
users.addUser("login1", user1_attributes);
RoleUserAttributes user2_attributes = new RoleUserAttributes(322, "thepassword2", new String[] {"role1", "role2"});
users.addUser("login2", user2_attributes);
RoleUserAttributes user3_attributes = new RoleUserAttributes(2, "thepassword3", new String[] {"role1", "role2", "role3"});
users.addUser("login3", user3_attributes);
ListMemoryRoles listroles = new ListMemoryRoles();
assertFalse(users.listUserRoles("login1", listroles));
assertTrue(users.listUserRoles("login2", listroles));
assertEquals(listroles.getRoles().size(), 2);
assertTrue(listroles.getRoles().contains("role1"));
assertTrue(listroles.getRoles().contains("role2"));
listroles = new ListMemoryRoles();
assertTrue(users.listUserRoles("login3", listroles));
assertEquals(listroles.getRoles().size(), 3);
assertTrue(listroles.getRoles().contains("role1"));
assertTrue(listroles.getRoles().contains("role2"));
assertTrue(listroles.getRoles().contains("role3"));
}
catch (CredentialsManagerException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
}
}