Author: matthieu Date: Wed Nov 4 16:37:29 2015 New Revision: 1712585 URL: http://svn.apache.org/viewvc?rev=1712585&view=rev Log: JAMES-1636 take supportVirtualHosting into account in UserRepository testsuite
Added: james/project/trunk/server/data/data-library/src/test/java/org/apache/james/domainlist/api/ james/project/trunk/server/data/data-library/src/test/java/org/apache/james/domainlist/api/mock/ james/project/trunk/server/data/data-library/src/test/java/org/apache/james/domainlist/api/mock/SimpleDomainList.java Removed: james/project/trunk/server/data/data-api/src/test/ Modified: james/project/trunk/server/data/data-cassandra/src/test/java/org/apache/james/user/cassandra/CassandraUsersRepositoryTest.java james/project/trunk/server/data/data-file/src/test/java/org/apache/james/user/file/UsersFileRepositoryTest.java james/project/trunk/server/data/data-hbase/src/test/java/org/apache/james/user/hbase/HBaseUsersRepositoryTest.java james/project/trunk/server/data/data-jcr/src/test/java/org/apache/james/user/jcr/JcrUserRepositoryTest.java james/project/trunk/server/data/data-jdbc/src/test/java/org/apache/james/user/jdbc/DefaultUsersJdbcRepositoryTest.java james/project/trunk/server/data/data-jdbc/src/test/java/org/apache/james/user/jdbc/JamesUsersJdbcRepositoryTest.java james/project/trunk/server/data/data-jpa/src/test/java/org/apache/james/user/jpa/JpaUsersRepositoryTest.java james/project/trunk/server/data/data-library/src/test/java/org/apache/james/user/lib/AbstractUsersRepositoryTest.java Modified: james/project/trunk/server/data/data-cassandra/src/test/java/org/apache/james/user/cassandra/CassandraUsersRepositoryTest.java URL: http://svn.apache.org/viewvc/james/project/trunk/server/data/data-cassandra/src/test/java/org/apache/james/user/cassandra/CassandraUsersRepositoryTest.java?rev=1712585&r1=1712584&r2=1712585&view=diff ============================================================================== --- james/project/trunk/server/data/data-cassandra/src/test/java/org/apache/james/user/cassandra/CassandraUsersRepositoryTest.java (original) +++ james/project/trunk/server/data/data-cassandra/src/test/java/org/apache/james/user/cassandra/CassandraUsersRepositoryTest.java Wed Nov 4 16:37:29 2015 @@ -20,7 +20,7 @@ package org.apache.james.user.cassandra; import org.apache.james.backends.cassandra.CassandraCluster; -import org.apache.james.user.api.UsersRepository; +import org.apache.james.user.lib.AbstractUsersRepository; import org.apache.james.user.lib.AbstractUsersRepositoryTest; import org.junit.After; @@ -34,7 +34,7 @@ public class CassandraUsersRepositoryTes } @Override - protected UsersRepository getUsersRepository() throws Exception { + protected AbstractUsersRepository getUsersRepository() throws Exception { cassandra = CassandraCluster.create(new CassandraUsersRepositoryModule()); CassandraUsersRepository cassandraUsersRepository = new CassandraUsersRepository(); cassandraUsersRepository.setSession(cassandra.getConf()); Modified: james/project/trunk/server/data/data-file/src/test/java/org/apache/james/user/file/UsersFileRepositoryTest.java URL: http://svn.apache.org/viewvc/james/project/trunk/server/data/data-file/src/test/java/org/apache/james/user/file/UsersFileRepositoryTest.java?rev=1712585&r1=1712584&r2=1712585&view=diff ============================================================================== --- james/project/trunk/server/data/data-file/src/test/java/org/apache/james/user/file/UsersFileRepositoryTest.java (original) +++ james/project/trunk/server/data/data-file/src/test/java/org/apache/james/user/file/UsersFileRepositoryTest.java Wed Nov 4 16:37:29 2015 @@ -30,8 +30,8 @@ import org.apache.commons.configuration. import org.apache.commons.io.FileUtils; import org.apache.james.filesystem.api.FileSystem; import org.apache.james.lifecycle.api.LifecycleUtil; -import org.apache.james.user.api.UsersRepository; import org.apache.james.user.api.UsersRepositoryException; +import org.apache.james.user.lib.AbstractUsersRepository; import org.apache.james.user.lib.AbstractUsersRepositoryTest; import org.junit.After; import org.junit.Before; @@ -68,7 +68,7 @@ public class UsersFileRepositoryTest ext * @throws Exception */ @Override - protected UsersRepository getUsersRepository() throws Exception { + protected AbstractUsersRepository getUsersRepository() throws Exception { FileSystem fs = new FileSystem() { @Override Modified: james/project/trunk/server/data/data-hbase/src/test/java/org/apache/james/user/hbase/HBaseUsersRepositoryTest.java URL: http://svn.apache.org/viewvc/james/project/trunk/server/data/data-hbase/src/test/java/org/apache/james/user/hbase/HBaseUsersRepositoryTest.java?rev=1712585&r1=1712584&r2=1712585&view=diff ============================================================================== --- james/project/trunk/server/data/data-hbase/src/test/java/org/apache/james/user/hbase/HBaseUsersRepositoryTest.java (original) +++ james/project/trunk/server/data/data-hbase/src/test/java/org/apache/james/user/hbase/HBaseUsersRepositoryTest.java Wed Nov 4 16:37:29 2015 @@ -20,13 +20,13 @@ package org.apache.james.user.hbase; import java.io.IOException; import java.util.Iterator; + import org.apache.commons.configuration.DefaultConfigurationBuilder; import org.apache.james.mailbox.hbase.HBaseClusterSingleton; import org.apache.james.system.hbase.TablePool; -import org.apache.james.user.api.UsersRepository; import org.apache.james.user.api.UsersRepositoryException; +import org.apache.james.user.lib.AbstractUsersRepository; import org.apache.james.user.lib.AbstractUsersRepositoryTest; -import org.junit.After; import org.junit.Before; import org.junit.BeforeClass; import org.slf4j.LoggerFactory; @@ -73,7 +73,7 @@ public class HBaseUsersRepositoryTest ex * @see org.apache.james.user.lib.AbstractUsersRepositoryTest#getUsersRepository() */ @Override - protected UsersRepository getUsersRepository() throws Exception { + protected AbstractUsersRepository getUsersRepository() throws Exception { HBaseUsersRepository userRepository = new HBaseUsersRepository(); userRepository.setLog(LoggerFactory.getLogger("MockLog")); userRepository.configure(new DefaultConfigurationBuilder()); Modified: james/project/trunk/server/data/data-jcr/src/test/java/org/apache/james/user/jcr/JcrUserRepositoryTest.java URL: http://svn.apache.org/viewvc/james/project/trunk/server/data/data-jcr/src/test/java/org/apache/james/user/jcr/JcrUserRepositoryTest.java?rev=1712585&r1=1712584&r2=1712585&view=diff ============================================================================== --- james/project/trunk/server/data/data-jcr/src/test/java/org/apache/james/user/jcr/JcrUserRepositoryTest.java (original) +++ james/project/trunk/server/data/data-jcr/src/test/java/org/apache/james/user/jcr/JcrUserRepositoryTest.java Wed Nov 4 16:37:29 2015 @@ -25,7 +25,7 @@ import org.apache.commons.configuration. import org.apache.commons.io.FileUtils; import org.apache.jackrabbit.core.RepositoryImpl; import org.apache.jackrabbit.core.config.RepositoryConfig; -import org.apache.james.user.api.UsersRepository; +import org.apache.james.user.lib.AbstractUsersRepository; import org.apache.james.user.lib.AbstractUsersRepositoryTest; import org.junit.After; import org.junit.Before; @@ -40,7 +40,7 @@ public class JcrUserRepositoryTest exten private RepositoryImpl repository; @Override - protected UsersRepository getUsersRepository() throws Exception { + protected AbstractUsersRepository getUsersRepository() throws Exception { JCRUsersRepository repos = new JCRUsersRepository(); repos.setRepository(repository); DefaultConfigurationBuilder config = new DefaultConfigurationBuilder(); Modified: james/project/trunk/server/data/data-jdbc/src/test/java/org/apache/james/user/jdbc/DefaultUsersJdbcRepositoryTest.java URL: http://svn.apache.org/viewvc/james/project/trunk/server/data/data-jdbc/src/test/java/org/apache/james/user/jdbc/DefaultUsersJdbcRepositoryTest.java?rev=1712585&r1=1712584&r2=1712585&view=diff ============================================================================== --- james/project/trunk/server/data/data-jdbc/src/test/java/org/apache/james/user/jdbc/DefaultUsersJdbcRepositoryTest.java (original) +++ james/project/trunk/server/data/data-jdbc/src/test/java/org/apache/james/user/jdbc/DefaultUsersJdbcRepositoryTest.java Wed Nov 4 16:37:29 2015 @@ -28,8 +28,8 @@ import org.apache.commons.dbcp.BasicData import org.apache.derby.jdbc.EmbeddedDriver; import org.apache.james.filesystem.api.mock.MockFileSystem; import org.apache.james.lifecycle.api.LifecycleUtil; -import org.apache.james.user.api.UsersRepository; import org.apache.james.user.api.UsersRepositoryException; +import org.apache.james.user.lib.AbstractUsersRepository; import org.slf4j.LoggerFactory; /** @@ -44,7 +44,7 @@ public class DefaultUsersJdbcRepositoryT * @throws Exception */ @Override - protected UsersRepository getUsersRepository() throws Exception { + protected AbstractUsersRepository getUsersRepository() throws Exception { DefaultUsersJdbcRepository res = new DefaultUsersJdbcRepository(); String tableString = "defusers"; configureAbstractJdbcUsersRepository(res, tableString); Modified: james/project/trunk/server/data/data-jdbc/src/test/java/org/apache/james/user/jdbc/JamesUsersJdbcRepositoryTest.java URL: http://svn.apache.org/viewvc/james/project/trunk/server/data/data-jdbc/src/test/java/org/apache/james/user/jdbc/JamesUsersJdbcRepositoryTest.java?rev=1712585&r1=1712584&r2=1712585&view=diff ============================================================================== --- james/project/trunk/server/data/data-jdbc/src/test/java/org/apache/james/user/jdbc/JamesUsersJdbcRepositoryTest.java (original) +++ james/project/trunk/server/data/data-jdbc/src/test/java/org/apache/james/user/jdbc/JamesUsersJdbcRepositoryTest.java Wed Nov 4 16:37:29 2015 @@ -19,18 +19,19 @@ package org.apache.james.user.jdbc; +import java.util.Iterator; + +import javax.sql.DataSource; + import org.apache.commons.configuration.DefaultConfigurationBuilder; import org.apache.commons.dbcp.BasicDataSource; import org.apache.derby.jdbc.EmbeddedDriver; import org.apache.james.filesystem.api.mock.MockFileSystem; import org.apache.james.lifecycle.api.LifecycleUtil; -import org.apache.james.user.api.UsersRepository; import org.apache.james.user.api.UsersRepositoryException; +import org.apache.james.user.lib.AbstractUsersRepository; import org.slf4j.LoggerFactory; -import javax.sql.DataSource; -import java.util.Iterator; - /** * Test basic behaviors of UsersFileRepository */ @@ -43,7 +44,7 @@ public class JamesUsersJdbcRepositoryTes * @throws Exception */ @Override - protected UsersRepository getUsersRepository() throws Exception { + protected AbstractUsersRepository getUsersRepository() throws Exception { JamesUsersJdbcRepository res = new JamesUsersJdbcRepository(); String tableString = "jamesusers"; configureAbstractJdbcUsersRepository(res, tableString); Modified: james/project/trunk/server/data/data-jpa/src/test/java/org/apache/james/user/jpa/JpaUsersRepositoryTest.java URL: http://svn.apache.org/viewvc/james/project/trunk/server/data/data-jpa/src/test/java/org/apache/james/user/jpa/JpaUsersRepositoryTest.java?rev=1712585&r1=1712584&r2=1712585&view=diff ============================================================================== --- james/project/trunk/server/data/data-jpa/src/test/java/org/apache/james/user/jpa/JpaUsersRepositoryTest.java (original) +++ james/project/trunk/server/data/data-jpa/src/test/java/org/apache/james/user/jpa/JpaUsersRepositoryTest.java Wed Nov 4 16:37:29 2015 @@ -19,9 +19,10 @@ package org.apache.james.user.jpa; import java.util.HashMap; + import org.apache.commons.configuration.DefaultConfigurationBuilder; -import org.apache.james.user.api.UsersRepository; import org.apache.james.user.jpa.model.JPAUser; +import org.apache.james.user.lib.AbstractUsersRepository; import org.apache.james.user.lib.AbstractUsersRepositoryTest; import org.apache.openjpa.persistence.OpenJPAEntityManager; import org.apache.openjpa.persistence.OpenJPAEntityManagerFactory; @@ -76,7 +77,7 @@ public class JpaUsersRepositoryTest exte } @Override - protected UsersRepository getUsersRepository() throws Exception { + protected AbstractUsersRepository getUsersRepository() throws Exception { factory = OpenJPAPersistence.getEntityManagerFactory(properties); JPAUsersRepository repos = new JPAUsersRepository(); repos.setLog(LoggerFactory.getLogger("JPA")); Added: james/project/trunk/server/data/data-library/src/test/java/org/apache/james/domainlist/api/mock/SimpleDomainList.java URL: http://svn.apache.org/viewvc/james/project/trunk/server/data/data-library/src/test/java/org/apache/james/domainlist/api/mock/SimpleDomainList.java?rev=1712585&view=auto ============================================================================== --- james/project/trunk/server/data/data-library/src/test/java/org/apache/james/domainlist/api/mock/SimpleDomainList.java (added) +++ james/project/trunk/server/data/data-library/src/test/java/org/apache/james/domainlist/api/mock/SimpleDomainList.java Wed Nov 4 16:37:29 2015 @@ -0,0 +1,63 @@ +/**************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one * + * or more contributor license agreements. See the NOTICE file * + * distributed with this work for additional information * + * regarding copyright ownership. The ASF licenses this file * + * to you under the Apache 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://www.apache.org/licenses/LICENSE-2.0 * + * * + * 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.apache.james.domainlist.api.mock; + +import java.util.LinkedList; +import java.util.List; + +import org.apache.james.domainlist.api.DomainList; +import org.apache.james.domainlist.api.DomainListException; + +/** + * Simplest implementation for ManageableDomainList + */ +public class SimpleDomainList implements DomainList { + + private final List<String> domains = new LinkedList<String>(); + + @Override + public boolean containsDomain(String domain) throws DomainListException { + return domains.contains(domain); + } + + @Override + public String[] getDomains() throws DomainListException { + return domains.toArray(new String[domains.size()]); + } + + @Override + public void addDomain(String domain) throws DomainListException { + if (domains.contains(domain)) { + throw new DomainListException("Domain " + domain + " already exist"); + } + domains.add(domain); + } + + @Override + public void removeDomain(String domain) throws DomainListException { + if (!domains.remove(domain)) { + throw new DomainListException("Domain " + domain + " does not exist"); + } + } + + @Override + public String getDefaultDomain() { + return "localhost"; + } +} \ No newline at end of file Modified: james/project/trunk/server/data/data-library/src/test/java/org/apache/james/user/lib/AbstractUsersRepositoryTest.java URL: http://svn.apache.org/viewvc/james/project/trunk/server/data/data-library/src/test/java/org/apache/james/user/lib/AbstractUsersRepositoryTest.java?rev=1712585&r1=1712584&r2=1712585&view=diff ============================================================================== --- james/project/trunk/server/data/data-library/src/test/java/org/apache/james/user/lib/AbstractUsersRepositoryTest.java (original) +++ james/project/trunk/server/data/data-library/src/test/java/org/apache/james/user/lib/AbstractUsersRepositoryTest.java Wed Nov 4 16:37:29 2015 @@ -18,27 +18,36 @@ ****************************************************************/ package org.apache.james.user.lib; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + import java.util.ArrayList; import java.util.Iterator; -import junit.framework.Assert; + +import org.apache.james.domainlist.api.mock.SimpleDomainList; import org.apache.james.lifecycle.api.LifecycleUtil; -import org.apache.james.user.api.UsersRepository; import org.apache.james.user.api.UsersRepositoryException; import org.apache.james.user.api.model.User; import org.junit.After; -import static org.junit.Assert.*; import org.junit.Before; import org.junit.Test; +import junit.framework.Assert; + /** * Test basic behaviors of UsersFileRepository */ public abstract class AbstractUsersRepositoryTest { + private static final String DOMAIN = "domain"; /** * Users repository */ - protected UsersRepository usersRepository; + protected AbstractUsersRepository usersRepository; /** * Create the repository to be tested. @@ -46,14 +55,24 @@ public abstract class AbstractUsersRepos * @return the user repository * @throws Exception */ - protected abstract UsersRepository getUsersRepository() throws Exception; + protected abstract AbstractUsersRepository getUsersRepository() throws Exception; + private String user1; + private String user2; + private String user3; + /** * @see junit.framework.TestCase#setUp() */ @Before public void setUp() throws Exception { this.usersRepository = getUsersRepository(); + SimpleDomainList domainList = new SimpleDomainList(); + domainList.addDomain(DOMAIN); + usersRepository.setDomainList(domainList); + user1 = login("username"); + user2 = login("username2"); + user3 = login("username3"); } /** @@ -64,6 +83,14 @@ public abstract class AbstractUsersRepos disposeUsersRepository(); } + private String login(String login) throws UsersRepositoryException { + if (usersRepository.supportVirtualHosting()) { + return login + '@' + DOMAIN; + } else { + return login; + } + } + @Test public void testUsersRepositoryEmpty() throws UsersRepositoryException { assertEquals("users repository not empty", 0, usersRepository.countUsers()); @@ -72,44 +99,44 @@ public abstract class AbstractUsersRepos @Test public void testAddUserOnce() throws UsersRepositoryException { - usersRepository.addUser("username", "password"); + usersRepository.addUser(user1, "password"); try { - usersRepository.addUser("username", "password2"); + usersRepository.addUser(user1, "password2"); fail("User added twice!"); } catch (UsersRepositoryException e) { // UsersRepositoryException must be thrown by implementation. } try { - usersRepository.addUser("username2", "password2"); - assertTrue(usersRepository.contains("username2")); - usersRepository.addUser("username3", "password3"); - assertTrue(usersRepository.contains("username3")); + usersRepository.addUser(user2, "password2"); + assertTrue(usersRepository.contains(user2)); + usersRepository.addUser(user3, "password3"); + assertTrue(usersRepository.contains(user3)); } catch (UnsupportedOperationException e) { } } @Test public void testUserAddedIsFound() throws UsersRepositoryException { - usersRepository.addUser("username", "password"); - User user = usersRepository.getUserByName("username"); + usersRepository.addUser(user1, "password"); + User user = usersRepository.getUserByName(user1); assertNotNull(user); - assertEquals("username does not match", user.getUserName(), "username"); - assertTrue("user not contained in the repository", usersRepository.contains("username")); + assertEquals("username does not match", user.getUserName(), user1); + assertTrue("user not contained in the repository", usersRepository.contains(user1)); User u = usersRepository.getUserByName("uSERNAMe"); assertNull("found the user searching for a different case!", u); // String realname = usersRepository.getRealName("uSERNAMe"); // assertNull("name is not null", realname); - // assertEquals("name is different", "username", realname); + // assertEquals("name is different", user1, realname); } @Test public void testUserListing() throws UsersRepositoryException { ArrayList<String> keys = new ArrayList<String>(3); - keys.add("username1"); - keys.add("username2"); - keys.add("username3"); + keys.add(user1); + keys.add(user2); + keys.add(user3); for (String username : keys) { usersRepository.addUser(username, username); } @@ -133,9 +160,9 @@ public abstract class AbstractUsersRepos @Test public void testUpperCaseSameUser() throws UsersRepositoryException { - usersRepository.addUser("myUsername", "password"); + usersRepository.addUser(login("myUsername"), "password"); try { - usersRepository.addUser("MyUsername", "password"); + usersRepository.addUser(login("MyUsername"), "password"); Assert.fail("We should not be able to insert same users, even with different cases"); } catch (UsersRepositoryException e) { Assert.assertTrue("The exception message must contain the username value but was=" + e.getMessage(), e. @@ -145,48 +172,47 @@ public abstract class AbstractUsersRepos @Test public void testUserPassword() throws UsersRepositoryException { - usersRepository.addUser("username", "password"); - assertEquals("didn't accept the correct password ", usersRepository.test("username", "password"), + usersRepository.addUser(user1, "password"); + assertEquals("didn't accept the correct password ", usersRepository.test(user1, "password"), getPasswordsEnabled()); - assertFalse("accepted the wrong password #1", usersRepository.test("username", "password2")); + assertFalse("accepted the wrong password #1", usersRepository.test(user1, "password2")); assertFalse("accepted the wrong password #2", usersRepository.test("username2", "password")); - assertFalse("accepted the wrong password #3", usersRepository.test("username", "Password")); - assertFalse("accepted the wrong password #4", usersRepository.test("username", "passwords")); + assertFalse("accepted the wrong password #3", usersRepository.test(user1, "Password")); + assertFalse("accepted the wrong password #4", usersRepository.test(user1, "passwords")); assertFalse("accepted the wrong password #5", usersRepository.test("userName", "password")); } @Test public void testUserAddRemoveCycle() throws UsersRepositoryException { - assertFalse("accepted login when no user existed", usersRepository.test("username", "password")); + assertFalse("accepted login when no user existed", usersRepository.test(user1, "password")); try { - usersRepository.removeUser("username"); + usersRepository.removeUser(user1); // UsersFileRepository accept this call for every argument // fail("removing an unknown user didn't fail!"); } catch (UsersRepositoryException e) { // Do nothing, we should come here if test works. } - usersRepository.addUser("username", "password"); - assertEquals("didn't accept the correct password", usersRepository.test("username", "password"), - getPasswordsEnabled()); - User user = usersRepository.getUserByName("username"); + usersRepository.addUser(user1, "password"); + assertEquals("didn't accept the correct password", getPasswordsEnabled(), usersRepository.test(user1, "password")); + User user = usersRepository.getUserByName(user1); user.setPassword("newpass"); try { usersRepository.updateUser(user); - assertEquals("new password accepted", usersRepository.test("username", "newpass"), getPasswordsEnabled()); - assertFalse("old password rejected", usersRepository.test("username", "password")); + assertEquals("new password accepted", getPasswordsEnabled(), usersRepository.test(user1, "newpass")); + assertFalse("old password rejected", usersRepository.test(user1, "password")); } catch (UnsupportedOperationException e) { // if updating users is not allowed check that this is a repository // without password checking assertFalse(getPasswordsEnabled()); } try { - usersRepository.removeUser("username"); + usersRepository.removeUser(user1); } catch (Exception e) { e.printStackTrace(); fail("removing the user failed!"); } - assertFalse("user not existing", usersRepository.contains("username")); - assertFalse("new password rejected", usersRepository.test("username", "newpass")); + assertFalse("user not existing", usersRepository.contains(user1)); + assertFalse("new password rejected", usersRepository.test(user1, "newpass")); try { usersRepository.updateUser(user); fail(); --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org