JAMES-2070 LDAP users repository should survive restarts
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/67629712 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/67629712 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/67629712 Branch: refs/heads/master Commit: 67629712e3780a3dcaecd43882b4de6a879cf336 Parents: eca1bbf Author: benwa <btell...@linagora.com> Authored: Tue Jun 27 10:33:28 2017 +0700 Committer: benwa <btell...@linagora.com> Committed: Fri Jun 30 10:15:45 2017 +0700 ---------------------------------------------------------------------- .../util/retry/naming/RetryingContext.java | 4 +++- .../ldap/ReadOnlyUsersLDAPRepositoryTest.java | 22 ++++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/67629712/server/container/util/src/main/java/org/apache/james/util/retry/naming/RetryingContext.java ---------------------------------------------------------------------- diff --git a/server/container/util/src/main/java/org/apache/james/util/retry/naming/RetryingContext.java b/server/container/util/src/main/java/org/apache/james/util/retry/naming/RetryingContext.java index f355209..e67d366 100644 --- a/server/container/util/src/main/java/org/apache/james/util/retry/naming/RetryingContext.java +++ b/server/container/util/src/main/java/org/apache/james/util/retry/naming/RetryingContext.java @@ -30,6 +30,7 @@ import javax.naming.NameClassPair; import javax.naming.NameParser; import javax.naming.NamingEnumeration; import javax.naming.NamingException; +import javax.naming.NoInitialContextException; import javax.naming.ServiceUnavailableException; import org.apache.james.util.retry.api.ExceptionRetryingProxy; @@ -48,7 +49,8 @@ abstract public class RetryingContext implements Context, ExceptionRetryingProxy static public final Class<?>[] DEFAULT_EXCEPTION_CLASSES = new Class<?>[] { CommunicationException.class, - ServiceUnavailableException.class }; + ServiceUnavailableException.class, + NoInitialContextException.class }; private Context _delegate = null; private RetrySchedule _schedule = null; http://git-wip-us.apache.org/repos/asf/james-project/blob/67629712/server/data/data-ldap-integration-testing/src/test/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepositoryTest.java ---------------------------------------------------------------------- diff --git a/server/data/data-ldap-integration-testing/src/test/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepositoryTest.java b/server/data/data-ldap-integration-testing/src/test/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepositoryTest.java index 17b7ad8..cfc810d 100644 --- a/server/data/data-ldap-integration-testing/src/test/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepositoryTest.java +++ b/server/data/data-ldap-integration-testing/src/test/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepositoryTest.java @@ -46,6 +46,10 @@ public class ReadOnlyUsersLDAPRepositoryTest { @Before public void setup() throws Exception { + startLdapContainer(); + } + + private void startLdapContainer() { ldapContainer = LdapGenericContainer.builder() .domain(DOMAIN) .password(ADMIN_PASSWORD) @@ -121,6 +125,7 @@ public class ReadOnlyUsersLDAPRepositoryTest { startUsersRepository(ldapRepositoryConfiguration()); assertThat(ldapRepository.test(UNKNOWN, PASSWORD)).isFalse(); } + @Test public void knownUserShouldBeAbleToLogInWhenPasswordIsCorrectWithVirtualHosting() throws Exception { startUsersRepository(ldapRepositoryConfigurationWithVirtualHosting()); @@ -128,6 +133,23 @@ public class ReadOnlyUsersLDAPRepositoryTest { } @Test + public void testShouldStillWorksAfterRestartingLDAP() throws Exception { + startUsersRepository(ldapRepositoryConfigurationWithVirtualHosting()); + ldapRepository.test(JAMES_USER_MAIL, PASSWORD); + + ldapContainer.stop(); + 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); + } + startLdapContainer(); + + assertThat(ldapRepository.test(JAMES_USER_MAIL, PASSWORD)).isTrue(); + } + + + @Test public void knownUserShouldNotBeAbleToLogInWhenPasswordIsNotCorrectWithVirtualHosting() throws Exception { startUsersRepository(ldapRepositoryConfigurationWithVirtualHosting()); assertThat(ldapRepository.test(JAMES_USER, BAD_PASSWORD)).isFalse(); --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org