This is an automated email from the ASF dual-hosted git repository. btellier pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 4f8dc2284b385a6f3938f41642afa4eaa277918e Author: Benoit Tellier <[email protected]> AuthorDate: Thu May 16 10:18:04 2019 +0700 JAMES-2709 Rely on linagora/linshare-init for LinShare LDAP init --- .../james/linshare/LDAPConfigurationPerformer.java | 122 --------------------- .../java/org/apache/james/linshare/Linshare.java | 27 ++++- 2 files changed, 25 insertions(+), 124 deletions(-) diff --git a/third-party/linshare/src/test/java/org/apache/james/linshare/LDAPConfigurationPerformer.java b/third-party/linshare/src/test/java/org/apache/james/linshare/LDAPConfigurationPerformer.java deleted file mode 100644 index d74d445..0000000 --- a/third-party/linshare/src/test/java/org/apache/james/linshare/LDAPConfigurationPerformer.java +++ /dev/null @@ -1,122 +0,0 @@ -/**************************************************************** - * 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.linshare; - -import static io.restassured.RestAssured.given; -import static io.restassured.config.EncoderConfig.encoderConfig; -import static io.restassured.config.RestAssuredConfig.newConfig; - -import java.nio.charset.StandardCharsets; - -import io.restassured.authentication.BasicAuthScheme; -import io.restassured.builder.RequestSpecBuilder; -import io.restassured.http.ContentType; -import io.restassured.specification.RequestSpecification; - -class LDAPConfigurationPerformer { - static void configureLdap(Linshare linshare) { - BasicAuthScheme basicAuthScheme = new BasicAuthScheme(); - basicAuthScheme.setUserName("[email protected]"); - basicAuthScheme.setPassword("adminlinshare"); - - RequestSpecification specification = new RequestSpecBuilder() - .setContentType(ContentType.JSON) - .setAccept(ContentType.JSON) - .setConfig(newConfig().encoderConfig(encoderConfig().defaultContentCharset(StandardCharsets.UTF_8))) - .setBaseUri("http://" + linshare.getIp()) - .setPort(linshare.getPort()) - .setAuth(basicAuthScheme) - .build(); - - String ldapId = given(specification) - .body("{" + - " \"label\":\"ldap-local\"," + - " \"providerUrl\":\"ldap://ldap:389\"," + - " \"securityPrincipal\":\"cn=linshare,dc=linshare,dc=org\"," + - " \"securityCredentials\":\"linshare\"" + - "}") - .post("/linshare/webservice/rest/admin/ldap_connections") - .jsonPath() - .getString("uuid"); - - given(specification) - .body("{" + - " \"uuid\":\"868400c0-c12e-456a-8c3c-19e985290586\"," + - " \"label\":\"openldap-local\"," + - " \"description\":\"This is pattern the default pattern for the OpenLdap structure.\"," + - " \"authCommand\":\"ldap.search(domain, \\\"(&(objectClass=inetOrgPerson)(mail=*)(givenName=*)(sn=*)(|(mail=\\\"+login+\\\")(uid=\\\"+login+\\\")))\\\");\"," + - " \"searchUserCommand\":\"ldap.search(domain, \\\"(&(objectClass=inetOrgPerson)(mail=\\\"+mail+\\\")(givenName=\\\"+first_name+\\\")(sn=\\\"+last_name+\\\"))\\\");\"," + - " \"userMail\":\"mail\"," + - " \"userFirstName\":\"givenName\"," + - " \"userLastName\":\"sn\"," + - " \"ldapUid\":\"uid\"," + - " \"autoCompleteCommandOnAllAttributes\":\"ldap.search(domain, \\\"(&(objectClass=inetOrgPerson)(mail=*)(givenName=*)(sn=*)(|(mail=\\\" + pattern + \\\")(sn=\\\" + pattern + \\\")(givenName=\\\" + pattern + \\\")))\\\");\"," + - " \"autoCompleteCommandOnFirstAndLastName\":\"ldap.search(domain, \\\"(&(objectClass=inetOrgPerson)(mail=*)(givenName=*)(sn=*)(|(&(sn=\\\" + first_name + \\\")(givenName=\\\" + last_name + \\\"))(&(sn=\\\" + last_name + \\\")(givenName=\\\" + first_name + \\\"))))\\\");\"," + - " \"searchPageSize\":100," + - " \"searchSizeLimit\":100," + - " \"completionPageSize\":10," + - " \"completionSizeLimit\":10" + - "}") - .post("/linshare/webservice/rest/admin/domain_patterns"); - - String ldapPatternId = given(specification) - .get("/linshare/webservice/rest/admin/domain_patterns") - .getBody() - .jsonPath() - .getString("[0].uuid"); - - String mimePolicyId = given(specification) - .get("/linshare/webservice/rest/admin/mime_policies?domainId=LinShareRootDomain&onlyCurrentDomain=false") - .jsonPath() - .getString("[0].uuid"); - - String welcomeMessageId = given(specification) - .get("/linshare/webservice/rest/admin/welcome_messages?domainId=LinShareRootDomain&parent=true") - .jsonPath() - .getString("[0].uuid"); - - String mailConfigId = given(specification) - .get("/linshare/webservice/rest/admin/mail_configs?domainId=LinShareRootDomain&onlyCurrentDomain=false") - .jsonPath() - .getString("[0].uuid"); - - given(specification) - .body("{" + - " \"parent\":\"LinShareRootDomain\"," + - " \"type\":\"TOPDOMAIN\"," + - " \"providers\":[" + - " {" + - " \"ldapConnectionUuid\":\"" + ldapId + "\"," + - " \"userLdapPatternUuid\":\"" + ldapPatternId + "\"," + - " \"baseDn\":\"ou=People,dc=linshare,dc=org\"" + - " }]," + - " \"externalMailLocale\":\"ENGLISH\"," + - " \"language\":\"ENGLISH\"," + - " \"mailConfigUuid\":\"" + mailConfigId + "\"," + - " \"currentWelcomeMessage\":{\"uuid\":\"" + welcomeMessageId + "\"}," + - " \"mimePolicyUuid\":\"" + mimePolicyId + "\"," + - " \"userRole\":\"SIMPLE\"," + - " \"policy\":{\"identifier\":\"DefaultDomainPolicy\"}," + - " \"label\":\"linshare.org\"," + - " \"description\":\"linshare.org domain\"" + - "}") - .post("/linshare/webservice/rest/admin/domains"); - } -} diff --git a/third-party/linshare/src/test/java/org/apache/james/linshare/Linshare.java b/third-party/linshare/src/test/java/org/apache/james/linshare/Linshare.java index 9986bd7..6f33518 100644 --- a/third-party/linshare/src/test/java/org/apache/james/linshare/Linshare.java +++ b/third-party/linshare/src/test/java/org/apache/james/linshare/Linshare.java @@ -37,6 +37,7 @@ import io.restassured.specification.RequestSpecification; public class Linshare { private static final String WAIT_FOR_BACKEND_INIT_LOG = ".*Server startup.*"; + private static final String WAIT_FOR_LDAP_INIT_LOG = ".*The following user provider for domain '.*' was successfully created.*"; private static final int LINSHARE_BACKEND_PORT = 8080; private final GenericContainer<?> linshareBackend; @@ -44,6 +45,7 @@ public class Linshare { private final GenericContainer<?> linshareSmtp; private final GenericContainer<?> linshareLdap; private final GenericContainer<?> linshareMongodb; + private final GenericContainer<?> linshareDBInit; private Network network; @@ -55,6 +57,7 @@ public class Linshare { linshareLdap = createDockerLdap(); linshareSmtp = createDockerSmtp(); linshareBackend = createDockerBackend(); + linshareDBInit = createLinshareBackendInit(); } public void start() { @@ -63,11 +66,11 @@ public class Linshare { linshareLdap.start(); linshareSmtp.start(); linshareBackend.start(); - - LDAPConfigurationPerformer.configureLdap(this); + linshareDBInit.start(); } public void stop() { + linshareDBInit.stop(); linshareDatabase.stop(); linshareMongodb.stop(); linshareLdap.stop(); @@ -139,6 +142,26 @@ public class Linshare { .withNetwork(network); } + private GenericContainer createLinshareBackendInit() { + return new GenericContainer<>("linagora/linshare-init:2.2") + .withNetworkAliases("init") + .withEnv("LS_HOST", "backend") + .withEnv("LS_PORT", "8080") + .withEnv("LS_LDAP_NAME", "ldap-local") + .withEnv("LS_LDAP_URL", "ldap://ldap:389") + .withEnv("LS_LDAP_BASE_DN", "ou=People,dc=linshare,dc=org") + .withEnv("LS_LDAP_DN", "cn=linshare,dc=linshare,dc=org") + .withEnv("LS_LDAP_PW", "linshare") + .withEnv("LS_DOMAIN_PATTERN_NAME", "openldap-local") + .withEnv("LS_DOMAIN_PATTERN_MODEL", "868400c0-c12e-456a-8c3c-19e985290586") + .withEnv("NO_REPLY_ADDRESS", "[email protected]") + .withEnv("DEBUG", "1") + .withEnv("FORCE_INIT", "1") + .waitingFor(Wait.forLogMessage(WAIT_FOR_LDAP_INIT_LOG, 1) + .withStartupTimeout(Duration.ofMinutes(10))) + .withNetwork(network); + } + public RequestSpecification fakeSmtpRequestSpecification() { return new RequestSpecBuilder() .setContentType(ContentType.JSON) --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
