You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2018/12/03 01:57:49 UTC

[4/5] james-project git commit: JAMES-2615 Group test for ReadOnlyUsersLDAPRepositoryTest

JAMES-2615 Group test for ReadOnlyUsersLDAPRepositoryTest


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/9cffabc8
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/9cffabc8
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/9cffabc8

Branch: refs/heads/master
Commit: 9cffabc83c1818571f57e9f45f6a209d583a3d5b
Parents: 077f51c
Author: datph <dp...@linagora.com>
Authored: Fri Nov 30 12:10:23 2018 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Mon Dec 3 08:55:53 2018 +0700

----------------------------------------------------------------------
 .../ldap/ReadOnlyUsersLDAPRepositoryTest.java   | 274 +++++++++----------
 1 file changed, 135 insertions(+), 139 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/9cffabc8/server/data/data-ldap/src/test/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepositoryTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-ldap/src/test/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepositoryTest.java b/server/data/data-ldap/src/test/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepositoryTest.java
index 39626ad..b217ae1 100644
--- a/server/data/data-ldap/src/test/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepositoryTest.java
+++ b/server/data/data-ldap/src/test/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepositoryTest.java
@@ -24,6 +24,7 @@ import static org.apache.james.user.ldap.DockerLdapSingleton.DOMAIN;
 import static org.apache.james.user.ldap.DockerLdapSingleton.JAMES_USER;
 import static org.apache.james.user.ldap.DockerLdapSingleton.PASSWORD;
 import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
 import static org.mockito.Mockito.mock;
 
 import org.apache.commons.configuration.ConversionException;
@@ -31,11 +32,9 @@ import org.apache.commons.configuration.HierarchicalConfiguration;
 import org.apache.commons.configuration.plist.PropertyListConfiguration;
 import org.apache.james.core.MailAddress;
 import org.apache.james.domainlist.api.DomainList;
-import org.junit.Before;
-import org.junit.ClassRule;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -46,74 +45,156 @@ public class ReadOnlyUsersLDAPRepositoryTest {
     private static final String UNKNOWN = "unknown";
     private static final String BAD_PASSWORD = "badpassword";
 
-    @Rule
-    public ExpectedException expectedException = ExpectedException.none();
-
-    @ClassRule
-    public static LdapGenericContainer ldapContainer = LdapGenericContainer.builder()
-        .domain(DOMAIN)
-        .password(ADMIN_PASSWORD)
-        .build();
-
-    private ReadOnlyUsersLDAPRepository ldapRepository;
     private DomainList domainList;
 
-    @Before
-    public void setUp() {
+    @BeforeEach
+    void setUp() {
         domainList = mock(DomainList.class);
     }
 
-    private void startUsersRepository(HierarchicalConfiguration ldapRepositoryConfiguration) throws Exception {
-        ldapRepository = new ReadOnlyUsersLDAPRepository(domainList);
-        ldapRepository.configure(ldapRepositoryConfiguration);
-        ldapRepository.init();
-    }
+    @Nested
+    class SupportVirtualHosting {
 
-    @Test
-    public void supportVirtualHostingShouldReturnFalseByDefault() throws Exception {
-        ReadOnlyUsersLDAPRepository usersLDAPRepository = new ReadOnlyUsersLDAPRepository(domainList);
-        usersLDAPRepository.configure(ldapRepositoryConfiguration());
+        @Test
+        public void supportVirtualHostingShouldReturnFalseByDefault() throws Exception {
+            ReadOnlyUsersLDAPRepository usersLDAPRepository = new ReadOnlyUsersLDAPRepository(domainList);
+            usersLDAPRepository.configure(ldapRepositoryConfiguration());
 
-        assertThat(usersLDAPRepository.supportVirtualHosting()).isFalse();
-    }
+            assertThat(usersLDAPRepository.supportVirtualHosting()).isFalse();
+        }
 
-    @Test
-    public void supportVirtualHostingShouldReturnTrueWhenReportedInConfig() throws Exception {
-        HierarchicalConfiguration configuration = ldapRepositoryConfiguration();
-        configuration.addProperty(ReadOnlyUsersLDAPRepository.SUPPORTS_VIRTUAL_HOSTING, "true");
+        @Test
+        public void supportVirtualHostingShouldReturnTrueWhenReportedInConfig() throws Exception {
+            HierarchicalConfiguration configuration = ldapRepositoryConfiguration();
+            configuration.addProperty(ReadOnlyUsersLDAPRepository.SUPPORTS_VIRTUAL_HOSTING, "true");
 
-        ReadOnlyUsersLDAPRepository usersLDAPRepository = new ReadOnlyUsersLDAPRepository(domainList);
-        usersLDAPRepository.configure(configuration);
+            ReadOnlyUsersLDAPRepository usersLDAPRepository = new ReadOnlyUsersLDAPRepository(domainList);
+            usersLDAPRepository.configure(configuration);
 
-        assertThat(usersLDAPRepository.supportVirtualHosting()).isTrue();
-    }
+            assertThat(usersLDAPRepository.supportVirtualHosting()).isTrue();
+        }
+
+        @Test
+        public void supportVirtualHostingShouldReturnFalseWhenReportedInConfig() throws Exception {
+            HierarchicalConfiguration configuration = ldapRepositoryConfiguration();
+            configuration.addProperty(ReadOnlyUsersLDAPRepository.SUPPORTS_VIRTUAL_HOSTING, "false");
+
+            ReadOnlyUsersLDAPRepository usersLDAPRepository = new ReadOnlyUsersLDAPRepository(domainList);
+            usersLDAPRepository.configure(configuration);
 
-    @Test
-    public void supportVirtualHostingShouldReturnFalseWhenReportedInConfig() throws Exception {
-        HierarchicalConfiguration configuration = ldapRepositoryConfiguration();
-        configuration.addProperty(ReadOnlyUsersLDAPRepository.SUPPORTS_VIRTUAL_HOSTING, "false");
+            assertThat(usersLDAPRepository.supportVirtualHosting()).isFalse();
+        }
+
+        @Test
+        public void configureShouldThrowOnNonBooleanValueForSupportsVirtualHosting() throws Exception {
+            HierarchicalConfiguration configuration = ldapRepositoryConfiguration();
+            configuration.addProperty(ReadOnlyUsersLDAPRepository.SUPPORTS_VIRTUAL_HOSTING, "bad");
 
-        ReadOnlyUsersLDAPRepository usersLDAPRepository = new ReadOnlyUsersLDAPRepository(domainList);
-        usersLDAPRepository.configure(configuration);
+            ReadOnlyUsersLDAPRepository usersLDAPRepository = new ReadOnlyUsersLDAPRepository(domainList);
 
-        assertThat(usersLDAPRepository.supportVirtualHosting()).isFalse();
+            assertThatThrownBy(()-> usersLDAPRepository.configure(configuration))
+                .isInstanceOf(ConversionException.class);
+        }
     }
 
-    @Test
-    public void configureShouldThrowOnNonBooleanValueForSupportsVirtualHosting() throws Exception {
-        HierarchicalConfiguration configuration = ldapRepositoryConfiguration();
-        configuration.addProperty(ReadOnlyUsersLDAPRepository.SUPPORTS_VIRTUAL_HOSTING, "bad");
+    @Nested
+    class TestUser {
 
-        ReadOnlyUsersLDAPRepository usersLDAPRepository = new ReadOnlyUsersLDAPRepository(domainList);
+        @Test
+        public void knownUserShouldBeAbleToLogInWhenPasswordIsCorrect() throws Exception {
+            ReadOnlyUsersLDAPRepository ldapRepository = startUsersRepository(ldapRepositoryConfiguration());
+            assertThat(ldapRepository.test(JAMES_USER, PASSWORD)).isTrue();
+        }
 
-        expectedException.expect(ConversionException.class);
+        @Test
+        public void knownUserShouldNotBeAbleToLogInWhenPasswordIsNotCorrect() throws Exception {
+            ReadOnlyUsersLDAPRepository ldapRepository = startUsersRepository(ldapRepositoryConfiguration());
+            assertThat(ldapRepository.test(JAMES_USER, BAD_PASSWORD)).isFalse();
+        }
+
+        @Test
+        public void unknownUserShouldNotBeAbleToLogIn() throws Exception {
+            ReadOnlyUsersLDAPRepository ldapRepository = startUsersRepository(ldapRepositoryConfiguration());
+            assertThat(ldapRepository.test(UNKNOWN, BAD_PASSWORD)).isFalse();
+        }
+
+        @Test
+        public void unknownUserShouldNotBeAbleToLogInWhenPasswordIsCorrect() throws Exception {
+            ReadOnlyUsersLDAPRepository ldapRepository = startUsersRepository(ldapRepositoryConfiguration());
+            assertThat(ldapRepository.test(UNKNOWN, PASSWORD)).isFalse();
+        }
 
-        usersLDAPRepository.configure(configuration);
+        @Test
+        public void knownUserShouldBeAbleToLogInWhenPasswordIsCorrectWithVirtualHosting() throws Exception {
+            ReadOnlyUsersLDAPRepository ldapRepository = startUsersRepository(ldapRepositoryConfigurationWithVirtualHosting());
+            assertThat(ldapRepository.test(JAMES_USER_MAIL, PASSWORD)).isTrue();
+        }
+
+        @Test
+        public void testShouldStillWorksAfterRestartingLDAP() throws Exception {
+            ReadOnlyUsersLDAPRepository ldapRepository = startUsersRepository(ldapRepositoryConfigurationWithVirtualHosting());
+            ldapRepository.test(JAMES_USER_MAIL, PASSWORD);
+
+            DockerLdapSingleton.ldapContainer.pause();
+            try {
+                ldapRepository.test(JAMES_USER_MAIL, PASSWORD);
+            } catch (Exception e) {
+                LOGGER.info("This exception is expected as we shut down the LDAP and forced its use", e);
+            }
+            DockerLdapSingleton.ldapContainer.unpause();
+
+            assertThat(ldapRepository.test(JAMES_USER_MAIL, PASSWORD)).isTrue();
+        }
+
+        @Test
+        public void knownUserShouldNotBeAbleToLogInWhenPasswordIsNotCorrectWithVirtualHosting() throws Exception {
+            ReadOnlyUsersLDAPRepository ldapRepository = startUsersRepository(ldapRepositoryConfigurationWithVirtualHosting());
+            assertThat(ldapRepository.test(JAMES_USER, BAD_PASSWORD)).isFalse();
+        }
+
+        @Test
+        public void unknownUserShouldNotBeAbleToLogInWithVirtualHosting() throws Exception {
+            ReadOnlyUsersLDAPRepository ldapRepository = startUsersRepository(ldapRepositoryConfigurationWithVirtualHosting());
+            assertThat(ldapRepository.test(UNKNOWN, BAD_PASSWORD)).isFalse();
+        }
+
+        @Test
+        public void unknownUserShouldNotBeAbleToLogInWhenPasswordIsCorrectWithVirtualHosting() throws Exception {
+            ReadOnlyUsersLDAPRepository ldapRepository = startUsersRepository(ldapRepositoryConfigurationWithVirtualHosting());
+            assertThat(ldapRepository.test(UNKNOWN, PASSWORD)).isFalse();
+        }
+
+        @Test
+        public void specialCharacterInUserInputShouldBeSanitized() throws Exception {
+            String patternMatchingMultipleUsers = "j*";
+
+            ReadOnlyUsersLDAPRepository ldapRepository = startUsersRepository(ldapRepositoryConfigurationWithVirtualHosting());
+            assertThat(ldapRepository.test(patternMatchingMultipleUsers, PASSWORD)).isFalse();
+        }
+
+        @Test
+        public void containsWithGetUserShouldBeTrue() throws Exception {
+            ReadOnlyUsersLDAPRepository ldapRepository = startUsersRepository(ldapRepositoryConfiguration());
+            assertThat(ldapRepository.contains(ldapRepository.getUser(new MailAddress(JAMES_USER_MAIL)))).isTrue();
+        }
+
+        @Test
+        public void containsWithGetUserShouldBeTrueWithVirtualHosting() throws Exception {
+            ReadOnlyUsersLDAPRepository ldapRepository = startUsersRepository(ldapRepositoryConfigurationWithVirtualHosting());
+            assertThat(ldapRepository.contains(ldapRepository.getUser(new MailAddress(JAMES_USER_MAIL)))).isTrue();
+        }
+
+        private ReadOnlyUsersLDAPRepository startUsersRepository(HierarchicalConfiguration ldapRepositoryConfiguration) throws Exception {
+            ReadOnlyUsersLDAPRepository ldapRepository = new ReadOnlyUsersLDAPRepository(domainList);
+            ldapRepository.configure(ldapRepositoryConfiguration);
+            ldapRepository.init();
+            return ldapRepository;
+        }
     }
 
-    private HierarchicalConfiguration ldapRepositoryConfiguration() {
+    private static HierarchicalConfiguration ldapRepositoryConfiguration() {
         PropertyListConfiguration configuration = new PropertyListConfiguration();
-        configuration.addProperty("[@ldapHost]", ldapContainer.getLdapHost());
+        configuration.addProperty("[@ldapHost]", DockerLdapSingleton.ldapContainer.getLdapHost());
         configuration.addProperty("[@principal]", "cn=admin\\,dc=james\\,dc=org");
         configuration.addProperty("[@credentials]", ADMIN_PASSWORD);
         configuration.addProperty("[@userBase]", "ou=People\\,dc=james\\,dc=org");
@@ -126,9 +207,9 @@ public class ReadOnlyUsersLDAPRepositoryTest {
         return configuration;
     }
 
-    private HierarchicalConfiguration ldapRepositoryConfigurationWithVirtualHosting() {
+    private static HierarchicalConfiguration ldapRepositoryConfigurationWithVirtualHosting() {
         PropertyListConfiguration configuration = new PropertyListConfiguration();
-        configuration.addProperty("[@ldapHost]", ldapContainer.getLdapHost());
+        configuration.addProperty("[@ldapHost]", DockerLdapSingleton.ldapContainer.getLdapHost());
         configuration.addProperty("[@principal]", "cn=admin\\,dc=james\\,dc=org");
         configuration.addProperty("[@credentials]", ADMIN_PASSWORD);
         configuration.addProperty("[@userBase]", "ou=People\\,dc=james\\,dc=org");
@@ -141,89 +222,4 @@ public class ReadOnlyUsersLDAPRepositoryTest {
         configuration.addProperty("supportsVirtualHosting", true);
         return configuration;
     }
-
-    @Test
-    public void knownUserShouldBeAbleToLogInWhenPasswordIsCorrect() throws Exception {
-        startUsersRepository(ldapRepositoryConfiguration());
-        assertThat(ldapRepository.test(JAMES_USER, PASSWORD)).isTrue();
-    }
-
-    @Test
-    public void knownUserShouldNotBeAbleToLogInWhenPasswordIsNotCorrect() throws Exception {
-        startUsersRepository(ldapRepositoryConfiguration());
-        assertThat(ldapRepository.test(JAMES_USER, BAD_PASSWORD)).isFalse();
-    }
-
-    @Test
-    public void unknownUserShouldNotBeAbleToLogIn() throws Exception {
-        startUsersRepository(ldapRepositoryConfiguration());
-        assertThat(ldapRepository.test(UNKNOWN, BAD_PASSWORD)).isFalse();
-    }
-
-    @Test
-    public void unknownUserShouldNotBeAbleToLogInWhenPasswordIsCorrect() throws Exception {
-        startUsersRepository(ldapRepositoryConfiguration());
-        assertThat(ldapRepository.test(UNKNOWN, PASSWORD)).isFalse();
-    }
-
-    @Test
-    public void knownUserShouldBeAbleToLogInWhenPasswordIsCorrectWithVirtualHosting() throws Exception {
-        startUsersRepository(ldapRepositoryConfigurationWithVirtualHosting());
-        assertThat(ldapRepository.test(JAMES_USER_MAIL, PASSWORD)).isTrue();
-    }
-
-    @Test
-    public void testShouldStillWorksAfterRestartingLDAP() throws Exception {
-        startUsersRepository(ldapRepositoryConfigurationWithVirtualHosting());
-        ldapRepository.test(JAMES_USER_MAIL, PASSWORD);
-
-        ldapContainer.pause();
-        try {
-            ldapRepository.test(JAMES_USER_MAIL, PASSWORD);
-        } catch (Exception e) {
-            LOGGER.info("This exception is expected as we shut down the LDAP and forced its use", e);
-        }
-        ldapContainer.unpause();
-
-        assertThat(ldapRepository.test(JAMES_USER_MAIL, PASSWORD)).isTrue();
-    }
-
-
-    @Test
-    public void knownUserShouldNotBeAbleToLogInWhenPasswordIsNotCorrectWithVirtualHosting() throws Exception {
-        startUsersRepository(ldapRepositoryConfigurationWithVirtualHosting());
-        assertThat(ldapRepository.test(JAMES_USER, BAD_PASSWORD)).isFalse();
-    }
-
-    @Test
-    public void unknownUserShouldNotBeAbleToLogInWithVirtualHosting() throws Exception {
-        startUsersRepository(ldapRepositoryConfigurationWithVirtualHosting());
-        assertThat(ldapRepository.test(UNKNOWN, BAD_PASSWORD)).isFalse();
-    }
-
-    @Test
-    public void unknownUserShouldNotBeAbleToLogInWhenPasswordIsCorrectWithVirtualHosting() throws Exception {
-        startUsersRepository(ldapRepositoryConfigurationWithVirtualHosting());
-        assertThat(ldapRepository.test(UNKNOWN, PASSWORD)).isFalse();
-    }
-
-    @Test
-    public void containsWithGetUserShouldBeTrue() throws Exception {
-        startUsersRepository(ldapRepositoryConfiguration());
-        assertThat(ldapRepository.contains(ldapRepository.getUser(new MailAddress(JAMES_USER_MAIL)))).isTrue();
-    }
-
-    @Test
-    public void containsWithGetUserShouldBeTrueWithVirtualHosting() throws Exception {
-        startUsersRepository(ldapRepositoryConfigurationWithVirtualHosting());
-        assertThat(ldapRepository.contains(ldapRepository.getUser(new MailAddress(JAMES_USER_MAIL)))).isTrue();
-    }
-
-    @Test
-    public void specialCharacterInUserInputShouldBeSanitized() throws Exception {
-        String patternMatchingMultipleUsers = "j*";
-
-        startUsersRepository(ldapRepositoryConfigurationWithVirtualHosting());
-        assertThat(ldapRepository.test(patternMatchingMultipleUsers, PASSWORD)).isFalse();
-    }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org