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 <[email protected]> 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: [email protected] For additional commands, e-mail: [email protected]
