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 ad...@apache.org on 2017/02/14 12:05:56 UTC
[11/12] james-project git commit: JAMES-1940 Fix Virtual hosting
support of LDAP users repository
JAMES-1940 Fix Virtual hosting support of LDAP users repository
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/df96d1af
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/df96d1af
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/df96d1af
Branch: refs/heads/master
Commit: df96d1afc87c6a325f4b0f2b2814d1d6a07b3a28
Parents: 42b574d
Author: Antoine Duprat <ad...@linagora.com>
Authored: Tue Feb 14 11:18:00 2017 +0100
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Tue Feb 14 13:04:54 2017 +0100
----------------------------------------------------------------------
.../ldap/ReadOnlyUsersLDAPRepositoryTest.java | 62 +++++++++++++++++++-
.../src/test/resources/ldif-files/populate.ldif | 1 +
.../user/ldap/ReadOnlyUsersLDAPRepository.java | 6 +-
3 files changed, 67 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/df96d1af/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 c5e1bbe..17b7ad8 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
@@ -23,6 +23,7 @@ import static org.assertj.core.api.Assertions.assertThat;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.HierarchicalConfiguration;
import org.apache.commons.configuration.plist.PropertyListConfiguration;
+import org.apache.mailet.MailAddress;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -35,6 +36,7 @@ public class ReadOnlyUsersLDAPRepositoryTest {
private static final String DOMAIN = "james.org";
private static final String ADMIN_PASSWORD = "mysecretpassword";
private static final String JAMES_USER = "james-user";
+ private static final String JAMES_USER_MAIL = "james-user" + "@" + DOMAIN;
private static final String UNKNOWN = "unknown";
private static final String PASSWORD = "secret";
private static final String BAD_PASSWORD = "badpassword";
@@ -49,8 +51,11 @@ public class ReadOnlyUsersLDAPRepositoryTest {
.password(ADMIN_PASSWORD)
.build();
ldapContainer.start();
+ }
+
+ private void startUsersRepository(HierarchicalConfiguration ldapRepositoryConfiguration) throws ConfigurationException, Exception {
ldapRepository = new ReadOnlyUsersLDAPRepository();
- ldapRepository.configure(ldapRepositoryConfiguration());
+ ldapRepository.configure(ldapRepositoryConfiguration);
ldapRepository.setLog(LOGGER);
ldapRepository.init();
}
@@ -70,6 +75,22 @@ public class ReadOnlyUsersLDAPRepositoryTest {
return configuration;
}
+ private HierarchicalConfiguration ldapRepositoryConfigurationWithVirtualHosting() throws ConfigurationException {
+ PropertyListConfiguration configuration = new PropertyListConfiguration();
+ configuration.addProperty("[@ldapHost]", 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");
+ configuration.addProperty("[@userIdAttribute]", "mail");
+ configuration.addProperty("[@userObjectClass]", "inetOrgPerson");
+ configuration.addProperty("[@maxRetries]", "4");
+ configuration.addProperty("[@retryStartInterval]", "0");
+ configuration.addProperty("[@retryMaxInterval]", "8");
+ configuration.addProperty("[@retryIntervalScale]", "1000");
+ configuration.addProperty("supportsVirtualHosting", true);
+ return configuration;
+ }
+
@After
public void tearDown() {
if (ldapContainer != null) {
@@ -79,21 +100,60 @@ public class ReadOnlyUsersLDAPRepositoryTest {
@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 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();
+ }
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/df96d1af/server/data/data-ldap-integration-testing/src/test/resources/ldif-files/populate.ldif
----------------------------------------------------------------------
diff --git a/server/data/data-ldap-integration-testing/src/test/resources/ldif-files/populate.ldif b/server/data/data-ldap-integration-testing/src/test/resources/ldif-files/populate.ldif
index 9376a6c..95f3391 100644
--- a/server/data/data-ldap-integration-testing/src/test/resources/ldif-files/populate.ldif
+++ b/server/data/data-ldap-integration-testing/src/test/resources/ldif-files/populate.ldif
@@ -7,5 +7,6 @@ objectClass: inetOrgPerson
uid: james-user
cn: james-user
sn: james-user
+mail: james-user@james.org
userPassword: secret
description: James user
http://git-wip-us.apache.org/repos/asf/james-project/blob/df96d1af/server/data/data-ldap/src/main/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepository.java
----------------------------------------------------------------------
diff --git a/server/data/data-ldap/src/main/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepository.java b/server/data/data-ldap/src/main/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepository.java
index 6e07236..4948a39 100644
--- a/server/data/data-ldap/src/main/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepository.java
+++ b/server/data/data-ldap/src/main/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepository.java
@@ -768,6 +768,10 @@ public class ReadOnlyUsersLDAPRepository implements UsersRepository, Configurabl
@Override
public String getUser(MailAddress mailAddress) throws UsersRepositoryException {
- return mailAddress.getLocalPart();
+ if (supportVirtualHosting()) {
+ return mailAddress.asString();
+ } else {
+ return mailAddress.getLocalPart();
+ }
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org