String password = "pass";
String alias = "alias";
String domain = "localhost";
String forward = "forward@somewhere";
JamesUsersJdbcRepository repos = (JamesUsersJdbcRepository) getUsersRepository();
repos.setEnableAliases(true);
repos.setEnableForwarding(true);
repos.addUser(username,password);
JamesUser user = (JamesUser)repos.getUserByName(username);
user.setAlias(alias);
repos.updateUser(user);
Collection<String> map = ((VirtualUserTable) repos).getMappings(username, domain);
assertNull("No mapping", map);
user.setAliasing(true);
repos.updateUser(user);
map = ((VirtualUserTable) repos).getMappings(username, domain);
assertEquals("One mapping", 1, map.size());
assertEquals("Alias found", map.iterator().next().toString(), alias + "@" + domain);
user.setForwardingDestination(new MailAddress(forward));
repos.updateUser(user);
map = ((VirtualUserTable) repos).getMappings(username, domain);
assertTrue("One mapping", map.size() == 1);
assertEquals("Alias found", map.iterator().next().toString(), alias + "@" + domain);
user.setForwarding(true);
repos.updateUser(user);
map = ((VirtualUserTable) repos).getMappings(username, domain);
Iterator<String> mappings = map.iterator();
assertTrue("Two mapping",map.size() == 2);
assertEquals("Alias found", mappings.next().toString(), alias + "@" + domain);
assertEquals("Forward found", mappings.next().toString(), forward);