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 2019/08/28 10:32:08 UTC

[james-project] branch master updated (fd2069e -> 10f7aaf)

This is an automated email from the ASF dual-hosted git repository.

btellier pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git.


    from fd2069e  JAMES-2813 Use MemoryReferenceTask in TaskManagerContract
     new e0ce98f  JAMES-2874 Switch tests to reuseFork=true in surefire
     new 07eaac2  JAMES-2874 Memory JMAP integration testing should reuse forks
     new c9b7462  JAMES-2874 Spring App tests do not support reusing forks
     new 1e07697  JAMES-2865 move POJOs to new package
     new 4678063  JAMES-2865 Implement received mail memory storage for MockSMTPServer
     new 62f0ba3  JAMES-2865 Implement default behavior of MockSMTPServer
     new 77bc645  JAMES-2865 MockSMTPServer with mock behaviors
     new 0802b68  JAMES-2865 move MockSmtpBehaviors to model package
     new a19f0c4  JAMES-2865 plug SMTPBehaviorRepository into MockSMTPServer
     new 56c6227  JAMES-2813 Remove duplicated dependencies in cassandra-guice
     new 34c1a44  JAMES-2513 AbstractDomainList can return duplicates
     new 10f7aaf  JAMES-2855 Route log4j2 logs to slf4j

The 12 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 backends-common/cassandra/pom.xml                  |  13 --
 backends-common/elasticsearch/pom.xml              |  17 +-
 backends-common/rabbitmq/pom.xml                   |  12 --
 mailbox/cassandra/pom.xml                          |  13 --
 mailbox/elasticsearch/pom.xml                      |  13 --
 mailbox/event/event-rabbitmq/pom.xml               |  13 --
 .../deleted-messages-vault-cassandra/pom.xml       |  12 --
 mpt/impl/imap-mailbox/cassandra/pom.xml            |  12 --
 mpt/impl/imap-mailbox/rabbitmq/pom.xml             |  12 --
 mpt/impl/smtp/cassandra/pom.xml                    |  13 --
 pom.xml                                            |   2 +-
 server/app/pom.xml                                 |   7 +
 server/blob/blob-objectstorage/pom.xml             |  14 --
 server/container/guice/cassandra-guice/pom.xml     |  12 --
 .../guice/cassandra-rabbitmq-guice/pom.xml         |   7 -
 .../guice/cassandra-rabbitmq-ldap-guice/pom.xml    |   7 -
 server/data/data-cassandra/pom.xml                 |  13 --
 server/data/data-jmap-cassandra/pom.xml            |  13 --
 .../james/domainlist/lib/AbstractDomainList.java   |  27 +--
 .../lib/AbstractDomainListPrivateMethodsTest.java  |  24 +++
 server/mailet/mock-smtp-server/pom.xml             |  19 ++
 .../mock/smtp/server/HTTPConfigurationServer.java  |   1 +
 .../james/mock/smtp/server/MockMessageHandler.java | 134 +++++++++++++
 ...{MockSmtpBehaviors.java => MockSMTPServer.java} |  46 +++--
 .../mock/smtp/server/ReceivedMailRepository.java   |  29 +--
 .../mock/smtp/server/SMTPBehaviorRepository.java   |  17 ++
 .../mock/smtp/server/{ => model}/Condition.java    |   8 +-
 .../james/mock/smtp/server/{ => model}/Mail.java   |  71 ++++++-
 .../smtp/server/{ => model}/MockSMTPBehavior.java  |   2 +-
 .../smtp/server/{ => model}/MockSmtpBehaviors.java |   2 +-
 .../mock/smtp/server/{ => model}/Operator.java     |   2 +-
 .../mock/smtp/server/{ => model}/Response.java     |  14 +-
 .../mock/smtp/server/{ => model}/SMTPCommand.java  |   4 +-
 .../org/apache/james/mock/smtp/server/Fixture.java |  12 ++
 .../james/mock/smtp/server/MockSMTPServerTest.java | 218 +++++++++++++++++++++
 .../mock/smtp/server/MockSmtpBehaviorsTest.java    |   1 +
 .../smtp/server/ReceivedMailRepositoryTest.java    | 105 ++++++++++
 .../smtp/server/SMTPBehaviorRepositoryTest.java    |   1 +
 .../james/mock/smtp/server/SMTPCommandTest.java    |   1 +
 .../smtp/server/{ => model}/ConditionTest.java     |   2 +-
 .../mock/smtp/server/{ => model}/MailTest.java     |   2 +-
 .../server/{ => model}/MockSMTPBehaviorTest.java   |   2 +-
 .../mock/smtp/server/{ => model}/OperatorTest.java |   2 +-
 .../mock/smtp/server/{ => model}/ResponseTest.java |   6 +-
 .../mailrepository-cassandra/pom.xml               |   7 -
 .../memory-jmap-integration-testing/pom.xml        |   2 +-
 server/protocols/webadmin-integration-test/pom.xml |  13 --
 server/protocols/webadmin/webadmin-core/pom.xml    |  13 --
 server/protocols/webadmin/webadmin-data/pom.xml    |   8 -
 .../webadmin-mailbox-deleted-message-vault/pom.xml |   7 -
 server/protocols/webadmin/webadmin-mailbox/pom.xml |   7 -
 .../protocols/webadmin/webadmin-mailqueue/pom.xml  |   7 -
 .../webadmin/webadmin-mailrepository/pom.xml       |   8 -
 server/queue/queue-rabbitmq/pom.xml                |  12 --
 .../org/apache/james/utils/SMTPMessageSender.java  |   2 +-
 third-party/linshare/pom.xml                       |  12 --
 56 files changed, 692 insertions(+), 363 deletions(-)
 create mode 100644 server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/MockMessageHandler.java
 copy server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/{MockSmtpBehaviors.java => MockSMTPServer.java} (60%)
 copy event-sourcing/event-sourcing-core/src/test/java/org/apache/james/eventsourcing/DataCollectorSubscriber.java => server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/ReceivedMailRepository.java (71%)
 rename server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/{ => model}/Condition.java (95%)
 rename server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/{ => model}/Mail.java (62%)
 rename server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/{ => model}/MockSMTPBehavior.java (99%)
 rename server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/{ => model}/MockSmtpBehaviors.java (97%)
 rename server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/{ => model}/Operator.java (98%)
 rename server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/{ => model}/Response.java (94%)
 rename server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/{ => model}/SMTPCommand.java (96%)
 create mode 100644 server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/MockSMTPServerTest.java
 create mode 100644 server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/ReceivedMailRepositoryTest.java
 rename server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/{ => model}/ConditionTest.java (99%)
 rename server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/{ => model}/MailTest.java (98%)
 rename server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/{ => model}/MockSMTPBehaviorTest.java (99%)
 rename server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/{ => model}/OperatorTest.java (98%)
 rename server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/{ => model}/ResponseTest.java (96%)


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


[james-project] 11/12: JAMES-2513 AbstractDomainList can return duplicates

Posted by bt...@apache.org.
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 34c1a44a95d301b2e005e3c219c5f2c7e3bbc315
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Tue Aug 27 13:49:29 2019 +0700

    JAMES-2513 AbstractDomainList can return duplicates
    
    A domain both added and detected will be returned as duplicated.
---
 .../james/domainlist/lib/AbstractDomainList.java   | 27 ++++++++++++----------
 .../lib/AbstractDomainListPrivateMethodsTest.java  | 24 +++++++++++++++++++
 2 files changed, 39 insertions(+), 12 deletions(-)

diff --git a/server/data/data-library/src/main/java/org/apache/james/domainlist/lib/AbstractDomainList.java b/server/data/data-library/src/main/java/org/apache/james/domainlist/lib/AbstractDomainList.java
index 3db1408..8d532e9 100644
--- a/server/data/data-library/src/main/java/org/apache/james/domainlist/lib/AbstractDomainList.java
+++ b/server/data/data-library/src/main/java/org/apache/james/domainlist/lib/AbstractDomainList.java
@@ -21,6 +21,7 @@ package org.apache.james.domainlist.lib;
 
 import java.net.InetAddress;
 import java.net.UnknownHostException;
+import java.util.Collection;
 import java.util.List;
 import java.util.stream.Stream;
 
@@ -39,7 +40,7 @@ import com.github.steveash.guavate.Guavate;
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Strings;
 import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Iterables;
+import com.google.common.collect.ImmutableSet;
 
 /**
  * All implementations of the DomainList interface should extends this abstract
@@ -155,13 +156,15 @@ public abstract class AbstractDomainList implements DomainList, Configurable {
     public ImmutableList<Domain> getDomains() throws DomainListException {
         List<Domain> domains = getDomainListInternal();
         ImmutableList<Domain> detectedDomains = detectDomains();
-        // Guava does not support concatenating ImmutableLists at this time:
-        // https://stackoverflow.com/questions/37919648/concatenating-immutablelists
-        // A work-around is to use Iterables.concat() until something like
-        // https://github.com/google/guava/issues/1029 is implemented.
-        Iterable<Domain> domainsWithoutIp = Iterables.concat(domains, detectedDomains);
-        ImmutableList<Domain> detectedIps = detectIps(domainsWithoutIp);
-        ImmutableList<Domain> allDomains = ImmutableList.copyOf(Iterables.concat(domainsWithoutIp, detectedIps));
+
+        ImmutableList<Domain> domainsWithoutIp = ImmutableList.<Domain>builder()
+            .addAll(domains)
+            .addAll(detectedDomains)
+            .build();
+        ImmutableSet<Domain> allDomains = ImmutableSet.<Domain>builder()
+            .addAll(domainsWithoutIp)
+            .addAll(detectIps(domainsWithoutIp))
+            .build();
 
         if (LOGGER.isDebugEnabled()) {
             for (Domain domain : allDomains) {
@@ -169,10 +172,10 @@ public abstract class AbstractDomainList implements DomainList, Configurable {
             }
         }
 
-        return allDomains;
+        return ImmutableList.copyOf(allDomains);
     }
 
-    private ImmutableList<Domain> detectIps(Iterable<Domain> domains) {
+    private ImmutableList<Domain> detectIps(Collection<Domain> domains) {
         if (autoDetectIP) {
             return getDomainsIpStream(domains, dns, LOGGER)
                 .collect(Guavate.toImmutableList());
@@ -204,8 +207,8 @@ public abstract class AbstractDomainList implements DomainList, Configurable {
      *            Iterable of domains
      * @return Stream of ipaddress for domains
      */
-    private static Stream<Domain> getDomainsIpStream(Iterable<Domain> domains, DNSService dns, Logger log) {
-        return Guavate.stream(domains)
+    private static Stream<Domain> getDomainsIpStream(Collection<Domain> domains, DNSService dns, Logger log) {
+        return domains.stream()
             .flatMap(domain -> getDomainIpStream(domain, dns, log))
             .distinct();
     }
diff --git a/server/data/data-library/src/test/java/org/apache/james/domainlist/lib/AbstractDomainListPrivateMethodsTest.java b/server/data/data-library/src/test/java/org/apache/james/domainlist/lib/AbstractDomainListPrivateMethodsTest.java
index 96a59ae..c711436 100644
--- a/server/data/data-library/src/test/java/org/apache/james/domainlist/lib/AbstractDomainListPrivateMethodsTest.java
+++ b/server/data/data-library/src/test/java/org/apache/james/domainlist/lib/AbstractDomainListPrivateMethodsTest.java
@@ -208,6 +208,30 @@ public class AbstractDomainListPrivateMethodsTest {
     }
 
     @Test
+    public void getDomainsShouldNotReturnDuplicates() throws Exception {
+        domainList.configure(DomainListConfiguration.builder()
+            .autoDetect(true)
+            .autoDetectIp(true));
+
+        String added = "added.tld";
+        String detected = "detected.tld";
+        String ip = "148.25.32.1";
+
+        when(dnsService.getLocalHost()).thenReturn(InetAddress.getByName("127.0.0.1"));
+        when(dnsService.getHostName(any(InetAddress.class))).thenReturn(detected);
+        InetAddress address = mock(InetAddress.class);
+        when(address.getHostAddress()).thenReturn(ip);
+        when(dnsService.getAllByName(any())).thenReturn(ImmutableList.of(address));
+
+        domainList.addDomain(Domain.of(added));
+        domainList.addDomain(Domain.of(ip));
+
+        assertThat(domainList.getDomains())
+            .extracting(Domain::name)
+            .containsOnlyOnce(added, detected, ip);
+    }
+
+    @Test
     public void getDomainsShouldListAddedDomain() throws Exception {
         Domain defaultDomain = Domain.of("default.tld");
         Domain domain = Domain.of("added.tld");


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


[james-project] 06/12: JAMES-2865 Implement default behavior of MockSMTPServer

Posted by bt...@apache.org.
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 62f0ba34ae60b51fd7830fac4359450f0c5604a2
Author: Tran Tien Duc <dt...@linagora.com>
AuthorDate: Thu Aug 22 14:36:15 2019 +0700

    JAMES-2865 Implement default behavior of MockSMTPServer
    
    mock server acts like a normal server, received mails from smtp clients
---
 .../james/mock/smtp/server/MockMessageHandler.java |  78 ++++++++++++
 .../james/mock/smtp/server/MockSMTPServer.java     |  56 +++++++++
 .../james/mock/smtp/server/MockSMTPServerTest.java | 138 +++++++++++++++++++++
 3 files changed, 272 insertions(+)

diff --git a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/MockMessageHandler.java b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/MockMessageHandler.java
new file mode 100644
index 0000000..7322fa7
--- /dev/null
+++ b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/MockMessageHandler.java
@@ -0,0 +1,78 @@
+/****************************************************************
+ * 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.mock.smtp.server;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
+
+import javax.mail.internet.AddressException;
+
+import org.apache.commons.io.IOUtils;
+import org.apache.james.core.MailAddress;
+import org.apache.james.mock.smtp.server.model.Mail;
+import org.subethamail.smtp.MessageHandler;
+import org.subethamail.smtp.RejectException;
+import org.subethamail.smtp.TooMuchDataException;
+
+public class MockMessageHandler implements MessageHandler {
+
+    private static final int ARGUMENT_SYNTAX_ERROR_501 = 501;
+
+    private final Mail.Envelope.Builder envelopeBuilder;
+    private final Mail.Builder mailBuilder;
+    private final ReceivedMailRepository mailRepository;
+
+    MockMessageHandler(ReceivedMailRepository mailRepository) {
+        this.mailRepository = mailRepository;
+        this.envelopeBuilder = new Mail.Envelope.Builder();
+        this.mailBuilder = new Mail.Builder();
+    }
+
+    @Override
+    public void from(String from) throws RejectException {
+        try {
+            envelopeBuilder.from(new MailAddress(from));
+        } catch (AddressException e) {
+            throw new RejectException(ARGUMENT_SYNTAX_ERROR_501, "invalid email address supplied");
+        }
+    }
+
+    @Override
+    public void recipient(String recipient) throws RejectException {
+        try {
+            envelopeBuilder.addRecipient(new MailAddress(recipient));
+        } catch (AddressException e) {
+            throw new RejectException(ARGUMENT_SYNTAX_ERROR_501, "invalid email address supplied");
+        }
+    }
+
+    @Override
+    public void data(InputStream data) throws RejectException, TooMuchDataException, IOException {
+        mailBuilder.message(IOUtils.toString(data, StandardCharsets.UTF_8));
+    }
+
+    @Override
+    public void done() {
+        Mail mail = mailBuilder.envelope(envelopeBuilder.build())
+            .build();
+        mailRepository.store(mail);
+    }
+}
diff --git a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/MockSMTPServer.java b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/MockSMTPServer.java
new file mode 100644
index 0000000..96246c4
--- /dev/null
+++ b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/MockSMTPServer.java
@@ -0,0 +1,56 @@
+/****************************************************************
+ * 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.mock.smtp.server;
+
+import java.util.List;
+
+import org.apache.james.mock.smtp.server.model.Mail;
+import org.apache.james.util.Port;
+import org.subethamail.smtp.server.SMTPServer;
+
+class MockSMTPServer {
+
+    private final SMTPServer server;
+    private final ReceivedMailRepository mailRepository;
+
+    MockSMTPServer() {
+        this.mailRepository = new ReceivedMailRepository();
+        this.server = new SMTPServer(ctx -> new MockMessageHandler(mailRepository));
+        this.server.setPort(0);
+    }
+
+    List<Mail> listReceivedMails() {
+        return mailRepository.list();
+    }
+
+    void start() {
+        if (!server.isRunning()) {
+           server.start();
+        }
+    }
+
+    Port getPort() {
+        return Port.of(server.getPort());
+    }
+
+    void stop() {
+        server.stop();
+    }
+}
diff --git a/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/MockSMTPServerTest.java b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/MockSMTPServerTest.java
new file mode 100644
index 0000000..c2c5bdc
--- /dev/null
+++ b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/MockSMTPServerTest.java
@@ -0,0 +1,138 @@
+/****************************************************************
+ * 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.mock.smtp.server;
+
+import static org.apache.james.mock.smtp.server.Fixture.ALICE;
+import static org.apache.james.mock.smtp.server.Fixture.BOB;
+import static org.apache.james.mock.smtp.server.Fixture.DOMAIN;
+import static org.apache.james.mock.smtp.server.Fixture.JACK;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatCode;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+
+import java.net.ConnectException;
+import java.util.List;
+
+import javax.mail.internet.MimeMessage;
+
+import org.apache.james.core.MailAddress;
+import org.apache.james.core.builder.MimeMessageBuilder;
+import org.apache.james.mock.smtp.server.model.Mail;
+import org.apache.james.mock.smtp.server.model.Response;
+import org.apache.james.util.MimeMessageUtil;
+import org.apache.james.util.Port;
+import org.apache.james.utils.SMTPMessageSender;
+import org.apache.mailet.base.test.FakeMail;
+import org.awaitility.Awaitility;
+import org.awaitility.Duration;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.api.Test;
+import org.testcontainers.shaded.com.google.common.collect.ImmutableList;
+
+import com.github.fge.lambdas.Throwing;
+
+class MockSMTPServerTest {
+
+    private static final Response.SMTPStatusCode SERVICE_NOT_AVAILABLE_421 = Response.SMTPStatusCode.of(421);
+
+    @Nested
+    class NormalBehaviorTests {
+        private MockSMTPServer mockServer;
+
+        @BeforeEach
+        void setUp() {
+            mockServer = new MockSMTPServer();
+            mockServer.start();
+        }
+
+        @AfterEach
+        void tearDown() {
+            mockServer.stop();
+        }
+
+        @Test
+        void serverShouldReceiveMessageFromClient() throws Exception {
+            SMTPMessageSender sender = new SMTPMessageSender(DOMAIN)
+                .connect("localhost", mockServer.getPort());
+
+            MimeMessage message = MimeMessageBuilder.mimeMessageBuilder()
+            .setSubject("test")
+            .setText("any text")
+            .build();
+
+            FakeMail mail = FakeMail.builder()
+                .name("name")
+                .sender(BOB)
+                .recipients(ALICE, JACK)
+                .mimeMessage(message)
+                .build();
+
+            sender.sendMessage(mail);
+
+            Awaitility.await().atMost(Duration.TEN_SECONDS)
+                .untilAsserted(() -> {
+                    List<Mail> mails = mockServer.listReceivedMails();
+                    Mail.Envelope expectedEnvelope = new Mail.Envelope(
+                        new MailAddress(BOB),
+                        ImmutableList.of(new MailAddress(ALICE), new MailAddress(JACK)));
+                    assertThat(mails)
+                        .hasSize(1)
+                        .allSatisfy(Throwing.consumer(assertedMail -> {
+                            assertThat(assertedMail.getEnvelope()).isEqualTo(expectedEnvelope);
+                            assertThat(assertedMail.getMessage()).contains(MimeMessageUtil.asString(message));
+                        }));
+                });
+        }
+    }
+
+    @Test
+    void serverStartShouldOpenASmtpPort() {
+        MockSMTPServer mockServer = new MockSMTPServer();
+        mockServer.start();
+
+        assertThatCode(() -> new SMTPMessageSender(DOMAIN)
+                .connect("localhost", mockServer.getPort()))
+            .doesNotThrowAnyException();
+    }
+
+    @Test
+    void serverShouldBeAbleToStop() {
+        MockSMTPServer mockServer = new MockSMTPServer();
+        mockServer.start();
+        Port port = mockServer.getPort();
+
+        mockServer.stop();
+        assertThatThrownBy(() -> new SMTPMessageSender(DOMAIN)
+                .connect("localhost", port))
+            .isInstanceOf(ConnectException.class)
+            .hasMessage("Connection refused (Connection refused)");
+    }
+
+    @Test
+    void serverStartShouldBeIdempotent() {
+        MockSMTPServer mockServer = new MockSMTPServer();
+        mockServer.start();
+
+        assertThatCode(() -> mockServer.start())
+            .doesNotThrowAnyException();
+    }
+}
\ No newline at end of file


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


[james-project] 02/12: JAMES-2874 Memory JMAP integration testing should reuse forks

Posted by bt...@apache.org.
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 07eaac2bb0258f981f961e49816e9ed5e6654efe
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Wed Jul 31 17:44:36 2019 +0200

    JAMES-2874 Memory JMAP integration testing should reuse forks
---
 .../jmap-integration-testing/memory-jmap-integration-testing/pom.xml    | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/pom.xml b/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/pom.xml
index db370f2..953a9ca 100644
--- a/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/pom.xml
+++ b/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/pom.xml
@@ -202,7 +202,7 @@
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-surefire-plugin</artifactId>
                 <configuration>
-                    <reuseForks>false</reuseForks>
+                    <reuseForks>true</reuseForks>
                     <forkCount>1C</forkCount>
                 </configuration>
             </plugin>


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


[james-project] 10/12: JAMES-2813 Remove duplicated dependencies in cassandra-guice

Posted by bt...@apache.org.
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 56c6227f7bf3b9d9432f2ce24c124aceb1445292
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Mon Aug 26 18:27:56 2019 +0700

    JAMES-2813 Remove duplicated dependencies in cassandra-guice
---
 server/container/guice/cassandra-guice/pom.xml | 5 -----
 1 file changed, 5 deletions(-)

diff --git a/server/container/guice/cassandra-guice/pom.xml b/server/container/guice/cassandra-guice/pom.xml
index bb75cdd..20e14cb 100644
--- a/server/container/guice/cassandra-guice/pom.xml
+++ b/server/container/guice/cassandra-guice/pom.xml
@@ -252,11 +252,6 @@
             <groupId>${james.groupId}</groupId>
             <artifactId>james-server-task-json</artifactId>
             <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>${james.groupId}</groupId>
-            <artifactId>james-server-task-json</artifactId>
-            <scope>test</scope>
             <type>test-jar</type>
         </dependency>
         <dependency>


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


[james-project] 08/12: JAMES-2865 move MockSmtpBehaviors to model package

Posted by bt...@apache.org.
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 0802b688c62419afa86d1434c4c9aef1f5ded741
Author: Tran Tien Duc <dt...@linagora.com>
AuthorDate: Tue Aug 27 17:13:55 2019 +0700

    JAMES-2865 move MockSmtpBehaviors to model package
---
 .../org/apache/james/mock/smtp/server/HTTPConfigurationServer.java    | 1 +
 .../org/apache/james/mock/smtp/server/SMTPBehaviorRepository.java     | 2 ++
 .../apache/james/mock/smtp/server/{ => model}/MockSmtpBehaviors.java  | 4 +---
 .../src/test/java/org/apache/james/mock/smtp/server/Fixture.java      | 1 +
 .../java/org/apache/james/mock/smtp/server/MockSmtpBehaviorsTest.java | 1 +
 .../org/apache/james/mock/smtp/server/SMTPBehaviorRepositoryTest.java | 1 +
 .../org/apache/james/mock/smtp/server/model/MockSMTPBehaviorTest.java | 3 ---
 7 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/HTTPConfigurationServer.java b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/HTTPConfigurationServer.java
index 2f04ec9..c25011f 100644
--- a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/HTTPConfigurationServer.java
+++ b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/HTTPConfigurationServer.java
@@ -31,6 +31,7 @@ import javax.servlet.http.HttpServletResponse;
 
 import org.apache.james.http.jetty.Configuration;
 import org.apache.james.http.jetty.JettyHttpServer;
+import org.apache.james.mock.smtp.server.model.MockSmtpBehaviors;
 import org.apache.james.util.Port;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
diff --git a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/SMTPBehaviorRepository.java b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/SMTPBehaviorRepository.java
index 23084cd..dddfb2a 100644
--- a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/SMTPBehaviorRepository.java
+++ b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/SMTPBehaviorRepository.java
@@ -22,6 +22,8 @@ package org.apache.james.mock.smtp.server;
 import java.util.Optional;
 import java.util.concurrent.atomic.AtomicReference;
 
+import org.apache.james.mock.smtp.server.model.MockSmtpBehaviors;
+
 public class SMTPBehaviorRepository {
     private final AtomicReference<MockSmtpBehaviors> behaviors;
 
diff --git a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/MockSmtpBehaviors.java b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/model/MockSmtpBehaviors.java
similarity index 95%
rename from server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/MockSmtpBehaviors.java
rename to server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/model/MockSmtpBehaviors.java
index b81528c..5efd902 100644
--- a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/MockSmtpBehaviors.java
+++ b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/model/MockSmtpBehaviors.java
@@ -17,13 +17,11 @@
  * under the License.                                           *
  ****************************************************************/
 
-package org.apache.james.mock.smtp.server;
+package org.apache.james.mock.smtp.server.model;
 
 import java.util.List;
 import java.util.Objects;
 
-import org.apache.james.mock.smtp.server.model.MockSMTPBehavior;
-
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonValue;
 import com.google.common.collect.ImmutableList;
diff --git a/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/Fixture.java b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/Fixture.java
index ac7b69e..8d1afdc 100644
--- a/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/Fixture.java
+++ b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/Fixture.java
@@ -21,6 +21,7 @@ package org.apache.james.mock.smtp.server;
 
 import org.apache.james.mock.smtp.server.model.Condition;
 import org.apache.james.mock.smtp.server.model.MockSMTPBehavior;
+import org.apache.james.mock.smtp.server.model.MockSmtpBehaviors;
 import org.apache.james.mock.smtp.server.model.Operator;
 import org.apache.james.mock.smtp.server.model.Response;
 import org.apache.james.mock.smtp.server.model.SMTPCommand;
diff --git a/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/MockSmtpBehaviorsTest.java b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/MockSmtpBehaviorsTest.java
index d9647f3..166c2e8 100644
--- a/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/MockSmtpBehaviorsTest.java
+++ b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/MockSmtpBehaviorsTest.java
@@ -25,6 +25,7 @@ import static org.apache.james.mock.smtp.server.Fixture.JSON_BEHAVIORS;
 import static org.apache.james.mock.smtp.server.Fixture.OBJECT_MAPPER;
 import static org.assertj.core.api.Assertions.assertThat;
 
+import org.apache.james.mock.smtp.server.model.MockSmtpBehaviors;
 import org.junit.jupiter.api.Test;
 
 import net.javacrumbs.jsonunit.core.Option;
diff --git a/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/SMTPBehaviorRepositoryTest.java b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/SMTPBehaviorRepositoryTest.java
index d610fc5..9419ebd 100644
--- a/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/SMTPBehaviorRepositoryTest.java
+++ b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/SMTPBehaviorRepositoryTest.java
@@ -23,6 +23,7 @@ import static org.apache.james.mock.smtp.server.Fixture.BEHAVIORS;
 import static org.apache.james.mock.smtp.server.Fixture.BEHAVIOR_COMPULSORY_FIELDS;
 import static org.assertj.core.api.Assertions.assertThat;
 
+import org.apache.james.mock.smtp.server.model.MockSmtpBehaviors;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
diff --git a/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/model/MockSMTPBehaviorTest.java b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/model/MockSMTPBehaviorTest.java
index f1e6a63..44df764 100644
--- a/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/model/MockSMTPBehaviorTest.java
+++ b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/model/MockSMTPBehaviorTest.java
@@ -29,9 +29,6 @@ import static org.apache.james.mock.smtp.server.Fixture.RESPONSE;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
-import java.util.Optional;
-
-import org.apache.james.mock.smtp.server.model.Response.SMTPStatusCode;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
 


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


[james-project] 03/12: JAMES-2874 Spring App tests do not support reusing forks

Posted by bt...@apache.org.
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 c9b7462336a642363c2245b1a5ad3244a6647a40
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Thu Aug 1 09:19:23 2019 +0200

    JAMES-2874 Spring App tests do not support reusing forks
---
 server/app/pom.xml | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/server/app/pom.xml b/server/app/pom.xml
index 8f79651..7e9f258 100644
--- a/server/app/pom.xml
+++ b/server/app/pom.xml
@@ -936,6 +936,13 @@
                     </execution>
                 </executions>
             </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <reuseForks>false</reuseForks>
+                </configuration>
+            </plugin>
         </plugins>
     </build>
 


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


[james-project] 04/12: JAMES-2865 move POJOs to new package

Posted by bt...@apache.org.
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 1e07697082f063567316a3e297cc7b407bca438a
Author: Tran Tien Duc <dt...@linagora.com>
AuthorDate: Thu Aug 22 14:30:26 2019 +0700

    JAMES-2865 move POJOs to new package
---
 .../james/mock/smtp/server/MockSmtpBehaviors.java  |  2 +
 .../mock/smtp/server/{ => model}/Condition.java    |  8 +--
 .../james/mock/smtp/server/{ => model}/Mail.java   | 71 ++++++++++++++++++++--
 .../smtp/server/{ => model}/MockSMTPBehavior.java  |  2 +-
 .../mock/smtp/server/{ => model}/Operator.java     |  2 +-
 .../mock/smtp/server/{ => model}/Response.java     | 14 ++---
 .../mock/smtp/server/{ => model}/SMTPCommand.java  |  4 +-
 .../org/apache/james/mock/smtp/server/Fixture.java |  6 ++
 .../smtp/server/{ => model}/ConditionTest.java     |  2 +-
 .../mock/smtp/server/{ => model}/MailTest.java     |  2 +-
 .../server/{ => model}/MockSMTPBehaviorTest.java   |  5 +-
 .../mock/smtp/server/{ => model}/OperatorTest.java |  2 +-
 .../mock/smtp/server/{ => model}/ResponseTest.java |  6 +-
 13 files changed, 99 insertions(+), 27 deletions(-)

diff --git a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/MockSmtpBehaviors.java b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/MockSmtpBehaviors.java
index 7ebe28a..b81528c 100644
--- a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/MockSmtpBehaviors.java
+++ b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/MockSmtpBehaviors.java
@@ -22,6 +22,8 @@ package org.apache.james.mock.smtp.server;
 import java.util.List;
 import java.util.Objects;
 
+import org.apache.james.mock.smtp.server.model.MockSMTPBehavior;
+
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonValue;
 import com.google.common.collect.ImmutableList;
diff --git a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/Condition.java b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/model/Condition.java
similarity index 95%
rename from server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/Condition.java
rename to server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/model/Condition.java
index 523794b..96a91ab 100644
--- a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/Condition.java
+++ b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/model/Condition.java
@@ -17,7 +17,7 @@
  * under the License.                                           *
  ****************************************************************/
 
-package org.apache.james.mock.smtp.server;
+package org.apache.james.mock.smtp.server.model;
 
 import java.util.Objects;
 import java.util.Optional;
@@ -27,7 +27,7 @@ import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder;
 import com.google.common.base.Preconditions;
 
 @JsonDeserialize(builder = Condition.Builder.class)
-interface Condition {
+public interface Condition {
     @JsonPOJOBuilder(withPrefix = "")
     class Builder {
         private Operator.OperatorName operator;
@@ -79,7 +79,7 @@ interface Condition {
         private final Operator operator;
         private final String matchingValue;
 
-        OperatorCondition(Operator operator, String matchingValue) {
+        public OperatorCondition(Operator operator, String matchingValue) {
             Preconditions.checkNotNull(operator);
             Preconditions.checkNotNull(matchingValue);
 
@@ -121,5 +121,5 @@ interface Condition {
 
     Condition MATCH_ALL = new MatchAllCondition();
 
-    boolean matches(String line);
+    public boolean matches(String line);
 }
diff --git a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/Mail.java b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/model/Mail.java
similarity index 62%
rename from server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/Mail.java
rename to server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/model/Mail.java
index e977334..a212386 100644
--- a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/Mail.java
+++ b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/model/Mail.java
@@ -17,21 +17,47 @@
  * under the License.                                           *
  ****************************************************************/
 
-package org.apache.james.mock.smtp.server;
+package org.apache.james.mock.smtp.server.model;
 
 import java.util.List;
 import java.util.Objects;
 
 import org.apache.james.core.MailAddress;
 
+import com.google.common.base.MoreObjects;
 import com.google.common.base.Preconditions;
+import com.google.common.collect.ImmutableList;
+
+public class Mail {
+    public static class Envelope {
+
+        public static class Builder {
+            private MailAddress from;
+            private ImmutableList.Builder<MailAddress> recipients;
+
+            public Builder() {
+                recipients = new ImmutableList.Builder<>();
+            }
+
+            public Builder from(MailAddress from) {
+                this.from = from;
+                return this;
+            }
+
+            public Builder addRecipient(MailAddress recipient) {
+                recipients.add(recipient);
+                return this;
+            }
+
+            public Envelope build() {
+                return new Envelope(from, recipients.build());
+            }
+        }
 
-class Mail {
-    static class Envelope {
         private final MailAddress from;
         private final List<MailAddress> recipients;
 
-        Envelope(MailAddress from, List<MailAddress> recipients) {
+        public Envelope(MailAddress from, List<MailAddress> recipients) {
             Preconditions.checkNotNull(from);
             Preconditions.checkNotNull(recipients);
             Preconditions.checkArgument(!recipients.isEmpty(), "'recipients' field should not be empty");
@@ -63,12 +89,39 @@ class Mail {
         public final int hashCode() {
             return Objects.hash(from, recipients);
         }
+
+        @Override
+        public String toString() {
+            return MoreObjects.toStringHelper(this)
+                .add("from", from)
+                .add("recipients", recipients)
+                .toString();
+        }
+    }
+
+    public static class Builder {
+        private Envelope envelope;
+        private String message;
+
+        public Builder message(String message) {
+            this.message = message;
+            return this;
+        }
+
+        public Builder envelope(Envelope envelope) {
+            this.envelope = envelope;
+            return this;
+        }
+
+        public Mail build() {
+            return new Mail(envelope, message);
+        }
     }
 
     private final Envelope envelope;
     private final String message;
 
-    Mail(Envelope envelope, String message) {
+    public Mail(Envelope envelope, String message) {
         Preconditions.checkNotNull(envelope);
         Preconditions.checkNotNull(message);
 
@@ -99,4 +152,12 @@ class Mail {
     public final int hashCode() {
         return Objects.hash(envelope, message);
     }
+
+    @Override
+    public String toString() {
+        return MoreObjects.toStringHelper(this)
+            .add("envelope", envelope)
+            .add("message", message)
+            .toString();
+    }
 }
diff --git a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/MockSMTPBehavior.java b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/model/MockSMTPBehavior.java
similarity index 99%
rename from server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/MockSMTPBehavior.java
rename to server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/model/MockSMTPBehavior.java
index f49f92d..9dbb66c 100644
--- a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/MockSMTPBehavior.java
+++ b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/model/MockSMTPBehavior.java
@@ -17,7 +17,7 @@
  * under the License.                                           *
  ****************************************************************/
 
-package org.apache.james.mock.smtp.server;
+package org.apache.james.mock.smtp.server.model;
 
 import java.util.Objects;
 import java.util.Optional;
diff --git a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/Operator.java b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/model/Operator.java
similarity index 98%
rename from server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/Operator.java
rename to server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/model/Operator.java
index d56e04c..6e44451 100644
--- a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/Operator.java
+++ b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/model/Operator.java
@@ -17,7 +17,7 @@
  * under the License.                                           *
  ****************************************************************/
 
-package org.apache.james.mock.smtp.server;
+package org.apache.james.mock.smtp.server.model;
 
 import java.util.Arrays;
 import java.util.Optional;
diff --git a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/Response.java b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/model/Response.java
similarity index 94%
rename from server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/Response.java
rename to server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/model/Response.java
index 04f3ea0..341c496 100644
--- a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/Response.java
+++ b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/model/Response.java
@@ -17,7 +17,7 @@
  * under the License.                                           *
  ****************************************************************/
 
-package org.apache.james.mock.smtp.server;
+package org.apache.james.mock.smtp.server.model;
 
 import java.util.Arrays;
 import java.util.Objects;
@@ -27,8 +27,8 @@ import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonValue;
 import com.google.common.base.Preconditions;
 
-class Response {
-    enum SMTPStatusCode {
+public class Response {
+    public enum SMTPStatusCode {
         OK_200(200),
         SYSTEM_STATUS_211(211),
         HELP_214(214),
@@ -70,7 +70,7 @@ class Response {
         }
 
         @JsonValue
-        public int getCode() {
+        public int getRawCode() {
             return code;
         }
     }
@@ -99,12 +99,12 @@ class Response {
         this.serverRejected = serverRejected;
     }
 
-    String asReplyString() {
-        return code.getCode() + " " + message;
+    public String asReplyString() {
+        return code.getRawCode() + " " + message;
     }
 
     @JsonProperty("rejected")
-    boolean isServerRejected() {
+    public boolean isServerRejected() {
         return serverRejected;
     }
 
diff --git a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/SMTPCommand.java b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/model/SMTPCommand.java
similarity index 96%
rename from server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/SMTPCommand.java
rename to server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/model/SMTPCommand.java
index 60a2a76..7b156f6 100644
--- a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/SMTPCommand.java
+++ b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/model/SMTPCommand.java
@@ -17,14 +17,14 @@
  * under the License.                                           *
  ****************************************************************/
 
-package org.apache.james.mock.smtp.server;
+package org.apache.james.mock.smtp.server.model;
 
 import java.util.Arrays;
 
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonValue;
 
-enum SMTPCommand {
+public enum SMTPCommand {
     RCPT_TO("RCPT TO"),
     EHLO("EHLO"),
     MAIL_FROM("MAIL FROM"),
diff --git a/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/Fixture.java b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/Fixture.java
index fe1ff47..34cf335 100644
--- a/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/Fixture.java
+++ b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/Fixture.java
@@ -19,6 +19,12 @@
 
 package org.apache.james.mock.smtp.server;
 
+import org.apache.james.mock.smtp.server.model.Condition;
+import org.apache.james.mock.smtp.server.model.MockSMTPBehavior;
+import org.apache.james.mock.smtp.server.model.Operator;
+import org.apache.james.mock.smtp.server.model.Response;
+import org.apache.james.mock.smtp.server.model.SMTPCommand;
+
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.datatype.guava.GuavaModule;
 import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
diff --git a/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/ConditionTest.java b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/model/ConditionTest.java
similarity index 99%
rename from server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/ConditionTest.java
rename to server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/model/ConditionTest.java
index c16c299..693a5c3 100644
--- a/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/ConditionTest.java
+++ b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/model/ConditionTest.java
@@ -17,7 +17,7 @@
  * under the License.                                           *
  ****************************************************************/
 
-package org.apache.james.mock.smtp.server;
+package org.apache.james.mock.smtp.server.model;
 
 import static net.javacrumbs.jsonunit.assertj.JsonAssertions.assertThatJson;
 import static org.apache.james.mock.smtp.server.Fixture.OBJECT_MAPPER;
diff --git a/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/MailTest.java b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/model/MailTest.java
similarity index 98%
rename from server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/MailTest.java
rename to server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/model/MailTest.java
index b21082f..b9d695a 100644
--- a/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/MailTest.java
+++ b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/model/MailTest.java
@@ -17,7 +17,7 @@
  * under the License.                                           *
  ****************************************************************/
 
-package org.apache.james.mock.smtp.server;
+package org.apache.james.mock.smtp.server.model;
 
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
diff --git a/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/MockSMTPBehaviorTest.java b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/model/MockSMTPBehaviorTest.java
similarity index 97%
rename from server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/MockSMTPBehaviorTest.java
rename to server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/model/MockSMTPBehaviorTest.java
index 7bcc95e..f1e6a63 100644
--- a/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/MockSMTPBehaviorTest.java
+++ b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/model/MockSMTPBehaviorTest.java
@@ -17,7 +17,7 @@
  * under the License.                                           *
  ****************************************************************/
 
-package org.apache.james.mock.smtp.server;
+package org.apache.james.mock.smtp.server.model;
 
 import static net.javacrumbs.jsonunit.assertj.JsonAssertions.assertThatJson;
 import static org.apache.james.mock.smtp.server.Fixture.BEHAVIOR_ALL_FIELDS;
@@ -29,6 +29,9 @@ import static org.apache.james.mock.smtp.server.Fixture.RESPONSE;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
+import java.util.Optional;
+
+import org.apache.james.mock.smtp.server.model.Response.SMTPStatusCode;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
 
diff --git a/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/OperatorTest.java b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/model/OperatorTest.java
similarity index 98%
rename from server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/OperatorTest.java
rename to server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/model/OperatorTest.java
index bd2eedd..5677f4e 100644
--- a/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/OperatorTest.java
+++ b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/model/OperatorTest.java
@@ -17,7 +17,7 @@
  * under the License.                                           *
  ****************************************************************/
 
-package org.apache.james.mock.smtp.server;
+package org.apache.james.mock.smtp.server.model;
 
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
diff --git a/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/ResponseTest.java b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/model/ResponseTest.java
similarity index 96%
rename from server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/ResponseTest.java
rename to server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/model/ResponseTest.java
index e07e819..4f7c985 100644
--- a/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/ResponseTest.java
+++ b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/model/ResponseTest.java
@@ -17,14 +17,14 @@
  * under the License.                                           *
  ****************************************************************/
 
-package org.apache.james.mock.smtp.server;
+package org.apache.james.mock.smtp.server.model;
 
 import static net.javacrumbs.jsonunit.assertj.JsonAssertions.assertThatJson;
 import static org.apache.james.mock.smtp.server.Fixture.OBJECT_MAPPER;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
-import org.apache.james.mock.smtp.server.Response.SMTPStatusCode;
+import org.apache.james.mock.smtp.server.model.Response.SMTPStatusCode;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
 
@@ -68,7 +68,7 @@ class ResponseTest {
 
         @Test
         void getCodeShouldReturnInternalValue() {
-            assertThat(OK_250.getCode())
+            assertThat(OK_250.getRawCode())
                 .isEqualTo(OK_250_CODE);
         }
     }


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


[james-project] 12/12: JAMES-2855 Route log4j2 logs to slf4j

Posted by bt...@apache.org.
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 10f7aaf9a440b1bc83e88e1842b4b89fff5c96ec
Author: Tran Tien Duc <dt...@linagora.com>
AuthorDate: Wed Aug 28 12:55:49 2019 +0700

    JAMES-2855 Route log4j2 logs to slf4j
---
 backends-common/elasticsearch/pom.xml | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/backends-common/elasticsearch/pom.xml b/backends-common/elasticsearch/pom.xml
index e9164b8..3e2a9fa 100644
--- a/backends-common/elasticsearch/pom.xml
+++ b/backends-common/elasticsearch/pom.xml
@@ -75,6 +75,11 @@
             <artifactId>commons-configuration2</artifactId>
         </dependency>
         <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-to-slf4j</artifactId>
+            <version>2.12.1</version>
+        </dependency>
+        <dependency>
             <groupId>org.assertj</groupId>
             <artifactId>assertj-core</artifactId>
             <scope>test</scope>


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


[james-project] 01/12: JAMES-2874 Switch tests to reuseFork=true in surefire

Posted by bt...@apache.org.
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 e0ce98ff1a7e14e4ab36fe58eab6b7c65bb1a221
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Wed Jul 31 17:34:20 2019 +0200

    JAMES-2874 Switch tests to reuseFork=true in surefire
---
 backends-common/cassandra/pom.xml                          | 13 -------------
 backends-common/elasticsearch/pom.xml                      | 12 ------------
 backends-common/rabbitmq/pom.xml                           | 12 ------------
 mailbox/cassandra/pom.xml                                  | 13 -------------
 mailbox/elasticsearch/pom.xml                              | 13 -------------
 mailbox/event/event-rabbitmq/pom.xml                       | 13 -------------
 mailbox/plugin/deleted-messages-vault-cassandra/pom.xml    | 12 ------------
 mpt/impl/imap-mailbox/cassandra/pom.xml                    | 12 ------------
 mpt/impl/imap-mailbox/rabbitmq/pom.xml                     | 12 ------------
 mpt/impl/smtp/cassandra/pom.xml                            | 13 -------------
 pom.xml                                                    |  2 +-
 server/blob/blob-objectstorage/pom.xml                     | 14 --------------
 server/container/guice/cassandra-guice/pom.xml             |  7 -------
 server/container/guice/cassandra-rabbitmq-guice/pom.xml    |  7 -------
 .../container/guice/cassandra-rabbitmq-ldap-guice/pom.xml  |  7 -------
 server/data/data-cassandra/pom.xml                         | 13 -------------
 server/data/data-jmap-cassandra/pom.xml                    | 13 -------------
 server/mailrepository/mailrepository-cassandra/pom.xml     |  7 -------
 server/protocols/webadmin-integration-test/pom.xml         | 13 -------------
 server/protocols/webadmin/webadmin-core/pom.xml            | 13 -------------
 server/protocols/webadmin/webadmin-data/pom.xml            |  8 --------
 .../webadmin-mailbox-deleted-message-vault/pom.xml         |  7 -------
 server/protocols/webadmin/webadmin-mailbox/pom.xml         |  7 -------
 server/protocols/webadmin/webadmin-mailqueue/pom.xml       |  7 -------
 server/protocols/webadmin/webadmin-mailrepository/pom.xml  |  8 --------
 server/queue/queue-rabbitmq/pom.xml                        | 12 ------------
 third-party/linshare/pom.xml                               | 12 ------------
 27 files changed, 1 insertion(+), 281 deletions(-)

diff --git a/backends-common/cassandra/pom.xml b/backends-common/cassandra/pom.xml
index fde8e6c..16b2eb6 100644
--- a/backends-common/cassandra/pom.xml
+++ b/backends-common/cassandra/pom.xml
@@ -156,17 +156,4 @@
             <scope>test</scope>
         </dependency>
     </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-                <configuration>
-                    <reuseForks>true</reuseForks>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-
 </project>
diff --git a/backends-common/elasticsearch/pom.xml b/backends-common/elasticsearch/pom.xml
index 3c4c216..e9164b8 100644
--- a/backends-common/elasticsearch/pom.xml
+++ b/backends-common/elasticsearch/pom.xml
@@ -113,16 +113,4 @@
             <scope>test</scope>
         </dependency>
     </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-                <configuration>
-                    <reuseForks>true</reuseForks>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
 </project>
\ No newline at end of file
diff --git a/backends-common/rabbitmq/pom.xml b/backends-common/rabbitmq/pom.xml
index 564fbf1..4ab0b68 100644
--- a/backends-common/rabbitmq/pom.xml
+++ b/backends-common/rabbitmq/pom.xml
@@ -119,16 +119,4 @@
             <scope>test</scope>
         </dependency>
     </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-                <configuration>
-                    <reuseForks>true</reuseForks>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
 </project>
diff --git a/mailbox/cassandra/pom.xml b/mailbox/cassandra/pom.xml
index 8163803..0badb30 100644
--- a/mailbox/cassandra/pom.xml
+++ b/mailbox/cassandra/pom.xml
@@ -185,17 +185,4 @@
             <scope>test</scope>
         </dependency>
     </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-                <configuration>
-                    <reuseForks>true</reuseForks>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-
 </project>
diff --git a/mailbox/elasticsearch/pom.xml b/mailbox/elasticsearch/pom.xml
index 35099dc..42977ac 100644
--- a/mailbox/elasticsearch/pom.xml
+++ b/mailbox/elasticsearch/pom.xml
@@ -180,17 +180,4 @@
             <scope>test</scope>
         </dependency>
     </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-                <configuration>
-                    <reuseForks>true</reuseForks>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-
 </project>
\ No newline at end of file
diff --git a/mailbox/event/event-rabbitmq/pom.xml b/mailbox/event/event-rabbitmq/pom.xml
index 599787d..9c29a06 100644
--- a/mailbox/event/event-rabbitmq/pom.xml
+++ b/mailbox/event/event-rabbitmq/pom.xml
@@ -127,17 +127,4 @@
             <scope>test</scope>
         </dependency>
     </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-                <configuration>
-                    <reuseForks>true</reuseForks>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-
 </project>
\ No newline at end of file
diff --git a/mailbox/plugin/deleted-messages-vault-cassandra/pom.xml b/mailbox/plugin/deleted-messages-vault-cassandra/pom.xml
index 19e7c54..491aa63 100644
--- a/mailbox/plugin/deleted-messages-vault-cassandra/pom.xml
+++ b/mailbox/plugin/deleted-messages-vault-cassandra/pom.xml
@@ -91,16 +91,4 @@
             <scope>test</scope>
         </dependency>
     </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-                <configuration>
-                    <reuseForks>true</reuseForks>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
 </project>
\ No newline at end of file
diff --git a/mpt/impl/imap-mailbox/cassandra/pom.xml b/mpt/impl/imap-mailbox/cassandra/pom.xml
index efbffda..73d8694 100644
--- a/mpt/impl/imap-mailbox/cassandra/pom.xml
+++ b/mpt/impl/imap-mailbox/cassandra/pom.xml
@@ -70,16 +70,4 @@
             <scope>test</scope>
         </dependency>
     </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-                <configuration>
-                    <reuseForks>true</reuseForks>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
 </project>
diff --git a/mpt/impl/imap-mailbox/rabbitmq/pom.xml b/mpt/impl/imap-mailbox/rabbitmq/pom.xml
index e08b49c..160954b 100644
--- a/mpt/impl/imap-mailbox/rabbitmq/pom.xml
+++ b/mpt/impl/imap-mailbox/rabbitmq/pom.xml
@@ -83,16 +83,4 @@
             <scope>test</scope>
         </dependency>
     </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-                <configuration>
-                    <reuseForks>true</reuseForks>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
 </project>
\ No newline at end of file
diff --git a/mpt/impl/smtp/cassandra/pom.xml b/mpt/impl/smtp/cassandra/pom.xml
index a060bef..e92e4f7 100644
--- a/mpt/impl/smtp/cassandra/pom.xml
+++ b/mpt/impl/smtp/cassandra/pom.xml
@@ -92,17 +92,4 @@
             <scope>test</scope>
         </dependency>
     </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-                <configuration>
-                    <reuseForks>true</reuseForks>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-    
 </project>
diff --git a/pom.xml b/pom.xml
index 6b546f6..89bfefc 100644
--- a/pom.xml
+++ b/pom.xml
@@ -2907,7 +2907,7 @@
                     <version>2.22.2</version>
                     <configuration>
                         <argLine>-Xms512m -Xmx1024m</argLine>
-                        <reuseForks>false</reuseForks>
+                        <reuseForks>true</reuseForks>
                         <!-- Fail tests longer than 2 hours, prevent form random locking tests -->
                         <forkedProcessTimeoutInSeconds>7200</forkedProcessTimeoutInSeconds>
                     </configuration>
diff --git a/server/blob/blob-objectstorage/pom.xml b/server/blob/blob-objectstorage/pom.xml
index 39e93ea..c037eef 100644
--- a/server/blob/blob-objectstorage/pom.xml
+++ b/server/blob/blob-objectstorage/pom.xml
@@ -149,18 +149,4 @@
             <artifactId>slf4j-api</artifactId>
         </dependency>
     </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-                <configuration>
-                    <reuseForks>true</reuseForks>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-
-
 </project>
diff --git a/server/container/guice/cassandra-guice/pom.xml b/server/container/guice/cassandra-guice/pom.xml
index 79a6a5e..bb75cdd 100644
--- a/server/container/guice/cassandra-guice/pom.xml
+++ b/server/container/guice/cassandra-guice/pom.xml
@@ -382,13 +382,6 @@
                     </execution>
                 </executions>
             </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-                <configuration>
-                    <reuseForks>true</reuseForks>
-                </configuration>
-            </plugin>
         </plugins>
     </build>
 
diff --git a/server/container/guice/cassandra-rabbitmq-guice/pom.xml b/server/container/guice/cassandra-rabbitmq-guice/pom.xml
index 050f0b0..fdb375d 100644
--- a/server/container/guice/cassandra-rabbitmq-guice/pom.xml
+++ b/server/container/guice/cassandra-rabbitmq-guice/pom.xml
@@ -240,13 +240,6 @@
                     </execution>
                 </executions>
             </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-                <configuration>
-                    <reuseForks>true</reuseForks>
-                </configuration>
-            </plugin>
         </plugins>
     </build>
 
diff --git a/server/container/guice/cassandra-rabbitmq-ldap-guice/pom.xml b/server/container/guice/cassandra-rabbitmq-ldap-guice/pom.xml
index 79ad4a8..52bcd53 100644
--- a/server/container/guice/cassandra-rabbitmq-ldap-guice/pom.xml
+++ b/server/container/guice/cassandra-rabbitmq-ldap-guice/pom.xml
@@ -176,13 +176,6 @@
                     </execution>
                 </executions>
             </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-                <configuration>
-                    <reuseForks>true</reuseForks>
-                </configuration>
-            </plugin>
         </plugins>
     </build>
 
diff --git a/server/data/data-cassandra/pom.xml b/server/data/data-cassandra/pom.xml
index 7ebed1a..89abef6 100644
--- a/server/data/data-cassandra/pom.xml
+++ b/server/data/data-cassandra/pom.xml
@@ -160,17 +160,4 @@
             <scope>test</scope>
         </dependency>
     </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-                <configuration>
-                    <reuseForks>true</reuseForks>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-    
 </project>
diff --git a/server/data/data-jmap-cassandra/pom.xml b/server/data/data-jmap-cassandra/pom.xml
index ddb3819..13f78f4 100644
--- a/server/data/data-jmap-cassandra/pom.xml
+++ b/server/data/data-jmap-cassandra/pom.xml
@@ -122,17 +122,4 @@
             <scope>test</scope>
         </dependency>
     </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-                <configuration>
-                    <reuseForks>true</reuseForks>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-
 </project>
diff --git a/server/mailrepository/mailrepository-cassandra/pom.xml b/server/mailrepository/mailrepository-cassandra/pom.xml
index a507bc5..7645239 100644
--- a/server/mailrepository/mailrepository-cassandra/pom.xml
+++ b/server/mailrepository/mailrepository-cassandra/pom.xml
@@ -112,13 +112,6 @@
                     </execution>
                 </executions>
             </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-                <configuration>
-                    <reuseForks>true</reuseForks>
-                </configuration>
-            </plugin>
         </plugins>
     </build>
 </project>
diff --git a/server/protocols/webadmin-integration-test/pom.xml b/server/protocols/webadmin-integration-test/pom.xml
index 7f56338..3b91373 100644
--- a/server/protocols/webadmin-integration-test/pom.xml
+++ b/server/protocols/webadmin-integration-test/pom.xml
@@ -152,17 +152,4 @@
             <scope>test</scope>
         </dependency>
     </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-                <configuration>
-                    <reuseForks>true</reuseForks>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-
 </project>
diff --git a/server/protocols/webadmin/webadmin-core/pom.xml b/server/protocols/webadmin/webadmin-core/pom.xml
index 7ddc511..ac2290f 100644
--- a/server/protocols/webadmin/webadmin-core/pom.xml
+++ b/server/protocols/webadmin/webadmin-core/pom.xml
@@ -159,17 +159,4 @@
             <scope>test</scope>
         </dependency>
     </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-                <configuration>
-                    <reuseForks>true</reuseForks>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-
 </project>
diff --git a/server/protocols/webadmin/webadmin-data/pom.xml b/server/protocols/webadmin/webadmin-data/pom.xml
index 7a2e125..6d6b6a5 100644
--- a/server/protocols/webadmin/webadmin-data/pom.xml
+++ b/server/protocols/webadmin/webadmin-data/pom.xml
@@ -179,14 +179,6 @@
                     </execution>
                 </executions>
             </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-                <configuration>
-                    <reuseForks>true</reuseForks>
-                </configuration>
-            </plugin>
-
         </plugins>
     </build>
 
diff --git a/server/protocols/webadmin/webadmin-mailbox-deleted-message-vault/pom.xml b/server/protocols/webadmin/webadmin-mailbox-deleted-message-vault/pom.xml
index de046be..e23ff7c 100644
--- a/server/protocols/webadmin/webadmin-mailbox-deleted-message-vault/pom.xml
+++ b/server/protocols/webadmin/webadmin-mailbox-deleted-message-vault/pom.xml
@@ -200,13 +200,6 @@
                     </execution>
                 </executions>
             </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-                <configuration>
-                    <reuseForks>true</reuseForks>
-                </configuration>
-            </plugin>
         </plugins>
     </build>
 
diff --git a/server/protocols/webadmin/webadmin-mailbox/pom.xml b/server/protocols/webadmin/webadmin-mailbox/pom.xml
index c636781..098ba59 100644
--- a/server/protocols/webadmin/webadmin-mailbox/pom.xml
+++ b/server/protocols/webadmin/webadmin-mailbox/pom.xml
@@ -233,13 +233,6 @@
                     </execution>
                 </executions>
             </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-                <configuration>
-                    <reuseForks>true</reuseForks>
-                </configuration>
-            </plugin>
         </plugins>
     </build>
 
diff --git a/server/protocols/webadmin/webadmin-mailqueue/pom.xml b/server/protocols/webadmin/webadmin-mailqueue/pom.xml
index 3dfb491..d0c3e5c 100644
--- a/server/protocols/webadmin/webadmin-mailqueue/pom.xml
+++ b/server/protocols/webadmin/webadmin-mailqueue/pom.xml
@@ -150,13 +150,6 @@
                     </execution>
                 </executions>
             </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-                <configuration>
-                    <reuseForks>true</reuseForks>
-                </configuration>
-            </plugin>
         </plugins>
     </build>
 
diff --git a/server/protocols/webadmin/webadmin-mailrepository/pom.xml b/server/protocols/webadmin/webadmin-mailrepository/pom.xml
index 3d5a419..4c34368 100644
--- a/server/protocols/webadmin/webadmin-mailrepository/pom.xml
+++ b/server/protocols/webadmin/webadmin-mailrepository/pom.xml
@@ -180,14 +180,6 @@
                     </execution>
                 </executions>
             </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-                <configuration>
-                    <reuseForks>true</reuseForks>
-                </configuration>
-            </plugin>
-
         </plugins>
     </build>
 
diff --git a/server/queue/queue-rabbitmq/pom.xml b/server/queue/queue-rabbitmq/pom.xml
index d4b6133..4b4fd78 100644
--- a/server/queue/queue-rabbitmq/pom.xml
+++ b/server/queue/queue-rabbitmq/pom.xml
@@ -221,16 +221,4 @@
             <scope>test</scope>
         </dependency>
     </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-                <configuration>
-                    <reuseForks>true</reuseForks>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
 </project>
diff --git a/third-party/linshare/pom.xml b/third-party/linshare/pom.xml
index 922f061..884cfe2 100644
--- a/third-party/linshare/pom.xml
+++ b/third-party/linshare/pom.xml
@@ -127,16 +127,4 @@
             <scope>test</scope>
         </dependency>
     </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-                <configuration>
-                    <reuseForks>true</reuseForks>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
 </project>


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


[james-project] 07/12: JAMES-2865 MockSMTPServer with mock behaviors

Posted by bt...@apache.org.
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 77bc6458388abb3491cbb3ed6de351f4df656aae
Author: Tran Tien Duc <dt...@linagora.com>
AuthorDate: Thu Aug 22 14:51:39 2019 +0700

    JAMES-2865 MockSMTPServer with mock behaviors
    
     - Condition filtering will be tested later
     - Counting Number of Anwsers is not implemented
---
 .../james/mock/smtp/server/MockMessageHandler.java | 81 +++++++++++++++++---
 .../james/mock/smtp/server/MockSMTPServer.java     | 16 +++-
 .../james/mock/smtp/server/MockSMTPServerTest.java | 87 ++++++++++++++++++++--
 .../org/apache/james/utils/SMTPMessageSender.java  |  2 +-
 4 files changed, 167 insertions(+), 19 deletions(-)

diff --git a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/MockMessageHandler.java b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/MockMessageHandler.java
index 7322fa7..15323ec 100644
--- a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/MockMessageHandler.java
+++ b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/MockMessageHandler.java
@@ -22,51 +22,92 @@ package org.apache.james.mock.smtp.server;
 import java.io.IOException;
 import java.io.InputStream;
 import java.nio.charset.StandardCharsets;
+import java.util.List;
+import java.util.Optional;
 
 import javax.mail.internet.AddressException;
 
 import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang3.NotImplementedException;
 import org.apache.james.core.MailAddress;
 import org.apache.james.mock.smtp.server.model.Mail;
+import org.apache.james.mock.smtp.server.model.MockSMTPBehavior;
+import org.apache.james.mock.smtp.server.model.Response;
+import org.apache.james.mock.smtp.server.model.SMTPCommand;
 import org.subethamail.smtp.MessageHandler;
 import org.subethamail.smtp.RejectException;
 import org.subethamail.smtp.TooMuchDataException;
 
 public class MockMessageHandler implements MessageHandler {
 
+    @FunctionalInterface
+    interface Behavior<T> {
+        void behave(T input) throws RejectException;
+    }
+
+    class MockBehavior<T> implements Behavior<T> {
+
+        private final MockSMTPBehavior behavior;
+
+        MockBehavior(MockSMTPBehavior behavior) {
+            this.behavior = behavior;
+        }
+
+        @Override
+        public void behave(T input) throws RejectException {
+            Response response = behavior.getResponse();
+            if (response.isServerRejected()) {
+                throw new RejectException(response.getCode().getRawCode(), response.getMessage());
+            }
+            throw new NotImplementedException("Not rejecting commands in mock behaviours is not supported yet");
+        }
+    }
+
     private static final int ARGUMENT_SYNTAX_ERROR_501 = 501;
 
     private final Mail.Envelope.Builder envelopeBuilder;
     private final Mail.Builder mailBuilder;
     private final ReceivedMailRepository mailRepository;
+    private final List<MockSMTPBehavior> behaviors;
 
-    MockMessageHandler(ReceivedMailRepository mailRepository) {
+    MockMessageHandler(ReceivedMailRepository mailRepository, List<MockSMTPBehavior> behaviors) {
         this.mailRepository = mailRepository;
+        this.behaviors = behaviors;
         this.envelopeBuilder = new Mail.Envelope.Builder();
         this.mailBuilder = new Mail.Builder();
     }
 
     @Override
     public void from(String from) throws RejectException {
-        try {
-            envelopeBuilder.from(new MailAddress(from));
-        } catch (AddressException e) {
-            throw new RejectException(ARGUMENT_SYNTAX_ERROR_501, "invalid email address supplied");
-        }
+        Behavior<MailAddress> fromBehavior = firstMatchedBehavior(SMTPCommand.MAIL_FROM)
+            .<Behavior<MailAddress>>map(MockBehavior::new)
+            .orElseGet(() -> envelopeBuilder::from);
+
+        fromBehavior.behave(parse(from));
     }
 
     @Override
     public void recipient(String recipient) throws RejectException {
-        try {
-            envelopeBuilder.addRecipient(new MailAddress(recipient));
-        } catch (AddressException e) {
-            throw new RejectException(ARGUMENT_SYNTAX_ERROR_501, "invalid email address supplied");
-        }
+        Behavior<MailAddress> recipientBehavior = firstMatchedBehavior(SMTPCommand.RCPT_TO)
+            .<Behavior<MailAddress>>map(MockBehavior::new)
+            .orElseGet(() -> envelopeBuilder::addRecipient);
+
+        recipientBehavior.behave(parse(recipient));
     }
 
     @Override
     public void data(InputStream data) throws RejectException, TooMuchDataException, IOException {
-        mailBuilder.message(IOUtils.toString(data, StandardCharsets.UTF_8));
+        Behavior<InputStream> dataBehavior = firstMatchedBehavior(SMTPCommand.DATA)
+            .<Behavior<InputStream>>map(MockBehavior::new)
+            .orElseGet(() -> content -> mailBuilder.message(readData(content)));
+
+        dataBehavior.behave(data);
+    }
+
+    private Optional<MockSMTPBehavior> firstMatchedBehavior(SMTPCommand data) {
+        return behaviors.stream()
+            .filter(behavior -> behavior.getCommand().equals(data))
+            .findFirst();
     }
 
     @Override
@@ -75,4 +116,20 @@ public class MockMessageHandler implements MessageHandler {
             .build();
         mailRepository.store(mail);
     }
+
+    private String readData(InputStream data) {
+        try {
+            return IOUtils.toString(data, StandardCharsets.UTF_8);
+        } catch (IOException e) {
+            throw new RejectException(ARGUMENT_SYNTAX_ERROR_501, "invalid data supplied");
+        }
+    }
+
+    private MailAddress parse(String mailAddress) {
+        try {
+            return new MailAddress(mailAddress);
+        } catch (AddressException e) {
+            throw new RejectException(ARGUMENT_SYNTAX_ERROR_501, "invalid email address supplied");
+        }
+    }
 }
diff --git a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/MockSMTPServer.java b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/MockSMTPServer.java
index 96246c4..9f05e25 100644
--- a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/MockSMTPServer.java
+++ b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/MockSMTPServer.java
@@ -19,9 +19,12 @@
 
 package org.apache.james.mock.smtp.server;
 
+import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 
 import org.apache.james.mock.smtp.server.model.Mail;
+import org.apache.james.mock.smtp.server.model.MockSMTPBehavior;
 import org.apache.james.util.Port;
 import org.subethamail.smtp.server.SMTPServer;
 
@@ -29,10 +32,12 @@ class MockSMTPServer {
 
     private final SMTPServer server;
     private final ReceivedMailRepository mailRepository;
+    private final List<MockSMTPBehavior> behaviors;
 
     MockSMTPServer() {
+        this.behaviors = new ArrayList<>();
         this.mailRepository = new ReceivedMailRepository();
-        this.server = new SMTPServer(ctx -> new MockMessageHandler(mailRepository));
+        this.server = new SMTPServer(ctx -> new MockMessageHandler(mailRepository, behaviors));
         this.server.setPort(0);
     }
 
@@ -52,5 +57,14 @@ class MockSMTPServer {
 
     void stop() {
         server.stop();
+        clearBehavior();
+    }
+
+    void setBehaviors(MockSMTPBehavior... behaviors) {
+        this.behaviors.addAll(Arrays.asList(behaviors));
+    }
+
+    private void clearBehavior() {
+        behaviors.clear();
     }
 }
diff --git a/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/MockSMTPServerTest.java b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/MockSMTPServerTest.java
index c2c5bdc..4e9cb09 100644
--- a/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/MockSMTPServerTest.java
+++ b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/MockSMTPServerTest.java
@@ -23,6 +23,10 @@ import static org.apache.james.mock.smtp.server.Fixture.ALICE;
 import static org.apache.james.mock.smtp.server.Fixture.BOB;
 import static org.apache.james.mock.smtp.server.Fixture.DOMAIN;
 import static org.apache.james.mock.smtp.server.Fixture.JACK;
+import static org.apache.james.mock.smtp.server.model.Response.SMTPStatusCode.SERVICE_NOT_AVAILABLE_421;
+import static org.apache.james.mock.smtp.server.model.SMTPCommand.DATA;
+import static org.apache.james.mock.smtp.server.model.SMTPCommand.MAIL_FROM;
+import static org.apache.james.mock.smtp.server.model.SMTPCommand.RCPT_TO;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatCode;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
@@ -32,9 +36,12 @@ import java.util.List;
 
 import javax.mail.internet.MimeMessage;
 
+import org.apache.commons.net.smtp.SMTPConnectionClosedException;
 import org.apache.james.core.MailAddress;
 import org.apache.james.core.builder.MimeMessageBuilder;
+import org.apache.james.mock.smtp.server.model.Condition;
 import org.apache.james.mock.smtp.server.model.Mail;
+import org.apache.james.mock.smtp.server.model.MockSMTPBehavior;
 import org.apache.james.mock.smtp.server.model.Response;
 import org.apache.james.util.MimeMessageUtil;
 import org.apache.james.util.Port;
@@ -52,8 +59,6 @@ import com.github.fge.lambdas.Throwing;
 
 class MockSMTPServerTest {
 
-    private static final Response.SMTPStatusCode SERVICE_NOT_AVAILABLE_421 = Response.SMTPStatusCode.of(421);
-
     @Nested
     class NormalBehaviorTests {
         private MockSMTPServer mockServer;
@@ -75,9 +80,9 @@ class MockSMTPServerTest {
                 .connect("localhost", mockServer.getPort());
 
             MimeMessage message = MimeMessageBuilder.mimeMessageBuilder()
-            .setSubject("test")
-            .setText("any text")
-            .build();
+                .setSubject("test")
+                .setText("any text")
+                .build();
 
             FakeMail mail = FakeMail.builder()
                 .name("name")
@@ -104,6 +109,78 @@ class MockSMTPServerTest {
         }
     }
 
+    @Nested
+    class MailMockBehaviorTest {
+        private MockSMTPServer mockServer;
+        private FakeMail mail1;
+        private MimeMessage mimeMessage1;
+        private SMTPMessageSender smtpClient;
+
+        @BeforeEach
+        void setUp() throws Exception {
+            mockServer = new MockSMTPServer();
+
+            mimeMessage1 = MimeMessageBuilder.mimeMessageBuilder()
+                .setSubject("test")
+                .setText("any text")
+                .build();
+            mail1 = FakeMail.builder()
+                .name("name")
+                .sender(BOB)
+                .recipients(ALICE, JACK)
+                .mimeMessage(mimeMessage1)
+                .build();
+
+            mockServer.start();
+            smtpClient = new SMTPMessageSender(DOMAIN)
+                .connect("localhost", mockServer.getPort());
+        }
+
+        @AfterEach
+        void tearDown() {
+            mockServer.stop();
+        }
+
+        @Test
+        void serverShouldReceiveMessageFromClient() throws Exception {
+            mockServer.setBehaviors(new MockSMTPBehavior(
+                MAIL_FROM,
+                Condition.MATCH_ALL,
+                Response.serverReject(SERVICE_NOT_AVAILABLE_421, "mock response"),
+                MockSMTPBehavior.NumberOfAnswersPolicy.anytime()));
+
+            assertThatThrownBy(() -> smtpClient.sendMessage(mail1))
+                .isInstanceOf(SMTPConnectionClosedException.class)
+                .hasMessageContaining("421");
+        }
+
+        @Test
+        void serverShouldReceiveMessageRecipientClient() throws Exception {
+            mockServer.setBehaviors(new MockSMTPBehavior(
+                RCPT_TO,
+                Condition.MATCH_ALL,
+                Response.serverReject(SERVICE_NOT_AVAILABLE_421, "mock response"),
+                MockSMTPBehavior.NumberOfAnswersPolicy.anytime()));
+
+            assertThatThrownBy(() -> smtpClient.sendMessage(mail1))
+                .isInstanceOf(SMTPConnectionClosedException.class)
+                .hasMessageContaining("421");
+        }
+
+        @Test
+        void serverShouldReceiveMessageDataClient() throws Exception {
+            mockServer.setBehaviors(new MockSMTPBehavior(
+                DATA,
+                Condition.MATCH_ALL,
+                Response.serverReject(SERVICE_NOT_AVAILABLE_421, "mock response"),
+                MockSMTPBehavior.NumberOfAnswersPolicy.anytime()));
+
+            assertThatThrownBy(() -> smtpClient.sendMessage(mail1))
+                .isInstanceOf(SMTPConnectionClosedException.class)
+                .hasMessageContaining("421");
+        }
+    }
+
     @Test
     void serverStartShouldOpenASmtpPort() {
         MockSMTPServer mockServer = new MockSMTPServer();
diff --git a/server/testing/src/main/java/org/apache/james/utils/SMTPMessageSender.java b/server/testing/src/main/java/org/apache/james/utils/SMTPMessageSender.java
index 7a249b8..cdae5c8 100644
--- a/server/testing/src/main/java/org/apache/james/utils/SMTPMessageSender.java
+++ b/server/testing/src/main/java/org/apache/james/utils/SMTPMessageSender.java
@@ -119,7 +119,7 @@ public class SMTPMessageSender extends ExternalResource implements Closeable {
         doSetSender(from);
         mail.getRecipients().stream()
             .map(MailAddress::asString)
-            .forEach(Throwing.consumer(this::doAddRcpt));
+            .forEach(Throwing.consumer(this::doAddRcpt).sneakyThrow());
         doData(asString(mail.getMessage()));
         return this;
     }


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


[james-project] 05/12: JAMES-2865 Implement received mail memory storage for MockSMTPServer

Posted by bt...@apache.org.
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 4678063b9f7ccccf01aa64abcc5e470ea0acf350
Author: Tran Tien Duc <dt...@linagora.com>
AuthorDate: Thu Aug 22 14:31:04 2019 +0700

    JAMES-2865 Implement received mail memory storage for MockSMTPServer
---
 server/mailet/mock-smtp-server/pom.xml             |  19 ++++
 .../mock/smtp/server/ReceivedMailRepository.java   |  47 +++++++++
 .../org/apache/james/mock/smtp/server/Fixture.java |   5 +
 .../smtp/server/ReceivedMailRepositoryTest.java    | 105 +++++++++++++++++++++
 .../james/mock/smtp/server/SMTPCommandTest.java    |   1 +
 5 files changed, 177 insertions(+)

diff --git a/server/mailet/mock-smtp-server/pom.xml b/server/mailet/mock-smtp-server/pom.xml
index afc5a9c..b1aa69e 100644
--- a/server/mailet/mock-smtp-server/pom.xml
+++ b/server/mailet/mock-smtp-server/pom.xml
@@ -46,6 +46,15 @@
             <artifactId>james-server-jetty</artifactId>
         </dependency>
         <dependency>
+            <groupId>${james.groupId}</groupId>
+            <artifactId>james-server-util</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>${james.groupId}</groupId>
+            <artifactId>james-server-testing</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
             <groupId>com.fasterxml.jackson.core</groupId>
             <artifactId>jackson-databind</artifactId>
         </dependency>
@@ -92,6 +101,11 @@
             <scope>test</scope>
         </dependency>
         <dependency>
+            <groupId>org.awaitility</groupId>
+            <artifactId>awaitility</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
             <groupId>org.slf4j</groupId>
             <artifactId>jcl-over-slf4j</artifactId>
         </dependency>
@@ -99,5 +113,10 @@
             <groupId>org.slf4j</groupId>
             <artifactId>slf4j-api</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.subethamail</groupId>
+            <artifactId>subethasmtp</artifactId>
+            <version>3.1.7</version>
+        </dependency>
     </dependencies>
 </project>
diff --git a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/ReceivedMailRepository.java b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/ReceivedMailRepository.java
new file mode 100644
index 0000000..b2faec2
--- /dev/null
+++ b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/ReceivedMailRepository.java
@@ -0,0 +1,47 @@
+/****************************************************************
+ * 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.mock.smtp.server;
+
+import java.util.List;
+import java.util.concurrent.ConcurrentLinkedQueue;
+
+import org.apache.james.mock.smtp.server.model.Mail;
+
+import com.google.common.collect.ImmutableList;
+
+public class ReceivedMailRepository {
+    private final ConcurrentLinkedQueue<Mail> mails;
+
+    public ReceivedMailRepository() {
+        mails = new ConcurrentLinkedQueue<>();
+    }
+
+    public void store(Mail mail) {
+        mails.add(mail);
+    }
+
+    public List<Mail> list() {
+        return ImmutableList.copyOf(mails);
+    }
+
+    public void clear() {
+        mails.clear();
+    }
+}
diff --git a/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/Fixture.java b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/Fixture.java
index 34cf335..ac7b69e 100644
--- a/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/Fixture.java
+++ b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/Fixture.java
@@ -31,6 +31,11 @@ import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
 import com.google.common.collect.ImmutableList;
 
 public interface Fixture {
+    String DOMAIN = "james.org";
+    String BOB = "bob@" + DOMAIN;
+    String ALICE = "alice@" + DOMAIN;
+    String JACK = "jack@" + DOMAIN;
+
     ObjectMapper OBJECT_MAPPER = new ObjectMapper()
         .registerModule(new Jdk8Module())
         .registerModule(new GuavaModule());
diff --git a/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/ReceivedMailRepositoryTest.java b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/ReceivedMailRepositoryTest.java
new file mode 100644
index 0000000..28cecad
--- /dev/null
+++ b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/ReceivedMailRepositoryTest.java
@@ -0,0 +1,105 @@
+/****************************************************************
+ * 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.mock.smtp.server;
+
+import static org.apache.james.mock.smtp.server.Fixture.ALICE;
+import static org.apache.james.mock.smtp.server.Fixture.BOB;
+import static org.apache.james.mock.smtp.server.Fixture.JACK;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatCode;
+
+import javax.mail.internet.MimeMessage;
+
+import org.apache.james.core.MailAddress;
+import org.apache.james.core.builder.MimeMessageBuilder;
+import org.apache.james.mock.smtp.server.model.Mail;
+import org.apache.james.util.MimeMessageUtil;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import com.google.common.collect.ImmutableList;
+
+class ReceivedMailRepositoryTest {
+    private ReceivedMailRepository testee;
+    private Mail mail;
+    private Mail mail2;
+
+    @BeforeEach
+    void setUp() throws Exception {
+        testee = new ReceivedMailRepository();
+        MimeMessage message = MimeMessageBuilder.mimeMessageBuilder()
+            .setSubject("test")
+            .setText("any text")
+            .build();
+        mail = new Mail(
+            new Mail.Envelope(
+                new MailAddress(BOB),
+                ImmutableList.of(new MailAddress(ALICE), new MailAddress(JACK))),
+                MimeMessageUtil.asString(message));
+        mail2 = new Mail(
+            new Mail.Envelope(
+                new MailAddress(ALICE),
+                ImmutableList.of(new MailAddress(BOB), new MailAddress(JACK))),
+                MimeMessageUtil.asString(message));
+    }
+
+    @Test
+    void listShouldBeEmptyWhenNoMailStored() {
+        assertThat(testee.list()).isEmpty();
+    }
+
+    @Test
+    void listShouldReturnStoredMail() {
+        testee.store(mail);
+
+        assertThat(testee.list()).containsExactly(mail);
+    }
+
+    @Test
+    void listShouldReturnStoredMails() {
+        testee.store(mail);
+        testee.store(mail2);
+
+        assertThat(testee.list()).containsExactly(mail, mail2);
+    }
+
+    @Test
+    void listShouldPreserveDuplicates() {
+        testee.store(mail);
+        testee.store(mail);
+
+        assertThat(testee.list()).containsExactly(mail, mail);
+    }
+
+    @Test
+    void listShouldNotReturnClearedMails() {
+        testee.store(mail);
+
+        testee.clear();
+
+        assertThat(testee.list()).isEmpty();
+    }
+
+    @Test
+    void clearShouldNotFailWhenNoElementStored() {
+        assertThatCode(() -> testee.clear())
+            .doesNotThrowAnyException();
+    }
+}
\ No newline at end of file
diff --git a/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/SMTPCommandTest.java b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/SMTPCommandTest.java
index 95abb58..12704ba 100644
--- a/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/SMTPCommandTest.java
+++ b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/SMTPCommandTest.java
@@ -25,6 +25,7 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
 import java.io.IOException;
 
+import org.apache.james.mock.smtp.server.model.SMTPCommand;
 import org.junit.jupiter.api.Test;
 
 class SMTPCommandTest {


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


[james-project] 09/12: JAMES-2865 plug SMTPBehaviorRepository into MockSMTPServer

Posted by bt...@apache.org.
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 a19f0c4d944c827657543182957b43704d04ce37
Author: Tran Tien Duc <dt...@linagora.com>
AuthorDate: Fri Aug 23 17:20:20 2019 +0700

    JAMES-2865 plug SMTPBehaviorRepository into MockSMTPServer
---
 .../james/mock/smtp/server/MockMessageHandler.java   |  9 ++++-----
 .../james/mock/smtp/server/MockSMTPServer.java       | 20 +++++---------------
 .../mock/smtp/server/SMTPBehaviorRepository.java     | 15 +++++++++++++++
 .../james/mock/smtp/server/MockSMTPServerTest.java   | 11 +++++++----
 4 files changed, 31 insertions(+), 24 deletions(-)

diff --git a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/MockMessageHandler.java b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/MockMessageHandler.java
index 15323ec..71e224f 100644
--- a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/MockMessageHandler.java
+++ b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/MockMessageHandler.java
@@ -22,7 +22,6 @@ package org.apache.james.mock.smtp.server;
 import java.io.IOException;
 import java.io.InputStream;
 import java.nio.charset.StandardCharsets;
-import java.util.List;
 import java.util.Optional;
 
 import javax.mail.internet.AddressException;
@@ -68,11 +67,11 @@ public class MockMessageHandler implements MessageHandler {
     private final Mail.Envelope.Builder envelopeBuilder;
     private final Mail.Builder mailBuilder;
     private final ReceivedMailRepository mailRepository;
-    private final List<MockSMTPBehavior> behaviors;
+    private final SMTPBehaviorRepository behaviorRepository;
 
-    MockMessageHandler(ReceivedMailRepository mailRepository, List<MockSMTPBehavior> behaviors) {
+    MockMessageHandler(ReceivedMailRepository mailRepository, SMTPBehaviorRepository behaviorRepository) {
         this.mailRepository = mailRepository;
-        this.behaviors = behaviors;
+        this.behaviorRepository = behaviorRepository;
         this.envelopeBuilder = new Mail.Envelope.Builder();
         this.mailBuilder = new Mail.Builder();
     }
@@ -105,7 +104,7 @@ public class MockMessageHandler implements MessageHandler {
     }
 
     private Optional<MockSMTPBehavior> firstMatchedBehavior(SMTPCommand data) {
-        return behaviors.stream()
+        return behaviorRepository.allBehaviors()
             .filter(behavior -> behavior.getCommand().equals(data))
             .findFirst();
     }
diff --git a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/MockSMTPServer.java b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/MockSMTPServer.java
index 9f05e25..834bdec 100644
--- a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/MockSMTPServer.java
+++ b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/MockSMTPServer.java
@@ -19,12 +19,9 @@
 
 package org.apache.james.mock.smtp.server;
 
-import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.List;
 
 import org.apache.james.mock.smtp.server.model.Mail;
-import org.apache.james.mock.smtp.server.model.MockSMTPBehavior;
 import org.apache.james.util.Port;
 import org.subethamail.smtp.server.SMTPServer;
 
@@ -32,12 +29,14 @@ class MockSMTPServer {
 
     private final SMTPServer server;
     private final ReceivedMailRepository mailRepository;
-    private final List<MockSMTPBehavior> behaviors;
 
     MockSMTPServer() {
-        this.behaviors = new ArrayList<>();
+        this(new SMTPBehaviorRepository());
+    }
+
+    MockSMTPServer(SMTPBehaviorRepository behaviorRepository) {
         this.mailRepository = new ReceivedMailRepository();
-        this.server = new SMTPServer(ctx -> new MockMessageHandler(mailRepository, behaviors));
+        this.server = new SMTPServer(ctx -> new MockMessageHandler(mailRepository, behaviorRepository));
         this.server.setPort(0);
     }
 
@@ -57,14 +56,5 @@ class MockSMTPServer {
 
     void stop() {
         server.stop();
-        clearBehavior();
-    }
-
-    void setBehaviors(MockSMTPBehavior... behaviors) {
-        this.behaviors.addAll(Arrays.asList(behaviors));
-    }
-
-    private void clearBehavior() {
-        behaviors.clear();
     }
 }
diff --git a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/SMTPBehaviorRepository.java b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/SMTPBehaviorRepository.java
index dddfb2a..2a8fe9d 100644
--- a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/SMTPBehaviorRepository.java
+++ b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/SMTPBehaviorRepository.java
@@ -19,9 +19,13 @@
 
 package org.apache.james.mock.smtp.server;
 
+import java.util.Arrays;
+import java.util.List;
 import java.util.Optional;
 import java.util.concurrent.atomic.AtomicReference;
+import java.util.stream.Stream;
 
+import org.apache.james.mock.smtp.server.model.MockSMTPBehavior;
 import org.apache.james.mock.smtp.server.model.MockSmtpBehaviors;
 
 public class SMTPBehaviorRepository {
@@ -42,4 +46,15 @@ public class SMTPBehaviorRepository {
     public void setBehaviors(MockSmtpBehaviors behaviors) {
         this.behaviors.set(behaviors);
     }
+
+    public void setBehaviors(MockSMTPBehavior... behaviors) {
+        setBehaviors(new MockSmtpBehaviors(Arrays.asList(behaviors)));
+    }
+
+    public Stream<MockSMTPBehavior> allBehaviors() {
+        return Optional.ofNullable(behaviors.get())
+            .map(MockSmtpBehaviors::getBehaviorList)
+            .map(List::stream)
+            .orElseGet(Stream::empty);
+    }
 }
diff --git a/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/MockSMTPServerTest.java b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/MockSMTPServerTest.java
index 4e9cb09..91ee177 100644
--- a/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/MockSMTPServerTest.java
+++ b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/MockSMTPServerTest.java
@@ -115,10 +115,12 @@ class MockSMTPServerTest {
         private FakeMail mail1;
         private MimeMessage mimeMessage1;
         private SMTPMessageSender smtpClient;
+        private SMTPBehaviorRepository behaviorRepository;
 
         @BeforeEach
         void setUp() throws Exception {
-            mockServer = new MockSMTPServer();
+            behaviorRepository = new SMTPBehaviorRepository();
+            mockServer = new MockSMTPServer(behaviorRepository);
 
             mimeMessage1 = MimeMessageBuilder.mimeMessageBuilder()
                 .setSubject("test")
@@ -138,12 +140,13 @@ class MockSMTPServerTest {
 
         @AfterEach
         void tearDown() {
+            behaviorRepository.clearBehaviors();
             mockServer.stop();
         }
 
         @Test
         void serverShouldReceiveMessageFromClient() throws Exception {
-            mockServer.setBehaviors(new MockSMTPBehavior(
+            behaviorRepository.setBehaviors(new MockSMTPBehavior(
                 MAIL_FROM,
                 Condition.MATCH_ALL,
                 Response.serverReject(SERVICE_NOT_AVAILABLE_421, "mock response"),
@@ -156,7 +159,7 @@ class MockSMTPServerTest {
 
         @Test
         void serverShouldReceiveMessageRecipientClient() throws Exception {
-            mockServer.setBehaviors(new MockSMTPBehavior(
+            behaviorRepository.setBehaviors(new MockSMTPBehavior(
                 RCPT_TO,
                 Condition.MATCH_ALL,
                 Response.serverReject(SERVICE_NOT_AVAILABLE_421, "mock response"),
@@ -169,7 +172,7 @@ class MockSMTPServerTest {
 
         @Test
         void serverShouldReceiveMessageDataClient() throws Exception {
-            mockServer.setBehaviors(new MockSMTPBehavior(
+            behaviorRepository.setBehaviors(new MockSMTPBehavior(
                 DATA,
                 Condition.MATCH_ALL,
                 Response.serverReject(SERVICE_NOT_AVAILABLE_421, "mock response"),


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