JAMES-2135 Move SMTPMessageSender to server/testing then easier for using it on all testings
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/ebad05e4 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/ebad05e4 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/ebad05e4 Branch: refs/heads/master Commit: ebad05e45972d831230810f7abe10fd5f4c3f551 Parents: f4fc139 Author: quynhn <[email protected]> Authored: Fri Sep 8 09:37:33 2017 +0700 Committer: Matthieu Baechler <[email protected]> Committed: Mon Sep 11 11:28:15 2017 +0200 ---------------------------------------------------------------------- .../james/mailets/AddDeliveredToHeaderTest.java | 2 +- .../mailets/CommonMailetConfigurationTest.java | 2 +- .../RecipientRewriteTableIntegrationTest.java | 2 +- .../org/apache/james/mailets/SieveDelivery.java | 2 +- .../crypto/SMIMEDecryptIntegrationTest.java | 2 +- .../crypto/SMIMESignIntegrationTest.java | 2 +- .../james/mailets/utils/SMTPMessageSender.java | 117 ------------------- .../mailets/AmqpForwardAttachmentTest.java | 2 +- .../mailets/ICSAttachmentWorkflowTest.java | 2 +- .../transport/mailets/StripAttachmentTest.java | 2 +- server/testing/pom.xml | 4 + .../apache/james/utils/SMTPMessageSender.java | 117 +++++++++++++++++++ 12 files changed, 130 insertions(+), 126 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/ebad05e4/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/AddDeliveredToHeaderTest.java ---------------------------------------------------------------------- diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/AddDeliveredToHeaderTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/AddDeliveredToHeaderTest.java index be54831..1e18728 100644 --- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/AddDeliveredToHeaderTest.java +++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/AddDeliveredToHeaderTest.java @@ -22,7 +22,7 @@ package org.apache.james.mailets; import org.apache.james.mailbox.model.MailboxConstants; import org.apache.james.mailets.configuration.CommonProcessors; import org.apache.james.mailets.configuration.MailetContainer; -import org.apache.james.mailets.utils.SMTPMessageSender; +import org.apache.james.utils.SMTPMessageSender; import org.apache.james.modules.MailboxProbeImpl; import org.apache.james.probe.DataProbe; import org.apache.james.transport.mailets.AddDeliveredToHeader; http://git-wip-us.apache.org/repos/asf/james-project/blob/ebad05e4/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/CommonMailetConfigurationTest.java ---------------------------------------------------------------------- diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/CommonMailetConfigurationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/CommonMailetConfigurationTest.java index 989beb5..c4fc960 100644 --- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/CommonMailetConfigurationTest.java +++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/CommonMailetConfigurationTest.java @@ -22,7 +22,7 @@ package org.apache.james.mailets; import org.apache.james.mailbox.model.MailboxConstants; import org.apache.james.mailets.configuration.CommonProcessors; import org.apache.james.mailets.configuration.MailetContainer; -import org.apache.james.mailets.utils.SMTPMessageSender; +import org.apache.james.utils.SMTPMessageSender; import org.apache.james.modules.MailboxProbeImpl; import org.apache.james.probe.DataProbe; import org.apache.james.utils.IMAPMessageReader; http://git-wip-us.apache.org/repos/asf/james-project/blob/ebad05e4/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/RecipientRewriteTableIntegrationTest.java ---------------------------------------------------------------------- diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/RecipientRewriteTableIntegrationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/RecipientRewriteTableIntegrationTest.java index 3b0d101..75ae12d 100644 --- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/RecipientRewriteTableIntegrationTest.java +++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/RecipientRewriteTableIntegrationTest.java @@ -22,7 +22,7 @@ package org.apache.james.mailets; import org.apache.james.mailbox.model.MailboxConstants; import org.apache.james.mailets.configuration.CommonProcessors; import org.apache.james.mailets.configuration.MailetContainer; -import org.apache.james.mailets.utils.SMTPMessageSender; +import org.apache.james.utils.SMTPMessageSender; import org.apache.james.modules.MailboxProbeImpl; import org.apache.james.probe.DataProbe; import org.apache.james.utils.IMAPMessageReader; http://git-wip-us.apache.org/repos/asf/james-project/blob/ebad05e4/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/SieveDelivery.java ---------------------------------------------------------------------- diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/SieveDelivery.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/SieveDelivery.java index e9a0016..b80f3a9 100644 --- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/SieveDelivery.java +++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/SieveDelivery.java @@ -23,7 +23,7 @@ import org.apache.james.mailbox.model.MailboxConstants; import org.apache.james.mailbox.store.probe.MailboxProbe; import org.apache.james.mailets.configuration.CommonProcessors; import org.apache.james.mailets.configuration.MailetContainer; -import org.apache.james.mailets.utils.SMTPMessageSender; +import org.apache.james.utils.SMTPMessageSender; import org.apache.james.modules.MailboxProbeImpl; import org.apache.james.modules.protocols.SieveProbeImpl; import org.apache.james.probe.DataProbe; http://git-wip-us.apache.org/repos/asf/james-project/blob/ebad05e4/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/crypto/SMIMEDecryptIntegrationTest.java ---------------------------------------------------------------------- diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/crypto/SMIMEDecryptIntegrationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/crypto/SMIMEDecryptIntegrationTest.java index 75c6844..7055506 100644 --- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/crypto/SMIMEDecryptIntegrationTest.java +++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/crypto/SMIMEDecryptIntegrationTest.java @@ -31,7 +31,7 @@ import org.apache.james.mailets.configuration.CommonProcessors; import org.apache.james.mailets.configuration.MailetConfiguration; import org.apache.james.mailets.configuration.MailetContainer; import org.apache.james.mailets.configuration.ProcessorConfiguration; -import org.apache.james.mailets.utils.SMTPMessageSender; +import org.apache.james.utils.SMTPMessageSender; import org.apache.james.modules.MailboxProbeImpl; import org.apache.james.util.date.ZonedDateTimeProvider; import org.apache.james.utils.IMAPMessageReader; http://git-wip-us.apache.org/repos/asf/james-project/blob/ebad05e4/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/crypto/SMIMESignIntegrationTest.java ---------------------------------------------------------------------- diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/crypto/SMIMESignIntegrationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/crypto/SMIMESignIntegrationTest.java index ecd0729..d84a28d 100644 --- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/crypto/SMIMESignIntegrationTest.java +++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/crypto/SMIMESignIntegrationTest.java @@ -29,7 +29,7 @@ import org.apache.james.mailets.configuration.CommonProcessors; import org.apache.james.mailets.configuration.MailetConfiguration; import org.apache.james.mailets.configuration.MailetContainer; import org.apache.james.mailets.configuration.ProcessorConfiguration; -import org.apache.james.mailets.utils.SMTPMessageSender; +import org.apache.james.utils.SMTPMessageSender; import org.apache.james.modules.MailboxProbeImpl; import org.apache.james.probe.DataProbe; import org.apache.james.util.date.ZonedDateTimeProvider; http://git-wip-us.apache.org/repos/asf/james-project/blob/ebad05e4/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/utils/SMTPMessageSender.java ---------------------------------------------------------------------- diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/utils/SMTPMessageSender.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/utils/SMTPMessageSender.java deleted file mode 100644 index a2475eb..0000000 --- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/utils/SMTPMessageSender.java +++ /dev/null @@ -1,117 +0,0 @@ -/**************************************************************** - * Licensed to the Apache Software Foundation (ASF) under one * - * or more contributor license agreements. See the NOTICE file * - * distributed with this work for additional information * - * regarding copyright ownership. The ASF licenses this file * - * to you under the Apache License, Version 2.0 (the * - * "License"); you may not use this file except in compliance * - * with the License. You may obtain a copy of the License at * - * * - * http://www.apache.org/licenses/LICENSE-2.0 * - * * - * Unless required by applicable law or agreed to in writing, * - * software distributed under the License is distributed on an * - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * - * KIND, either express or implied. See the License for the * - * specific language governing permissions and limitations * - * under the License. * - ****************************************************************/ - -package org.apache.james.mailets.utils; - -import java.io.ByteArrayOutputStream; -import java.io.Closeable; -import java.io.IOException; -import java.security.InvalidKeyException; -import java.security.NoSuchAlgorithmException; -import java.security.spec.InvalidKeySpecException; - -import javax.mail.Message; -import javax.mail.MessagingException; - -import org.apache.commons.net.smtp.AuthenticatingSMTPClient; -import org.apache.commons.net.smtp.SMTPClient; -import org.apache.mailet.Mail; - -import com.google.common.base.Charsets; -import com.google.common.base.Joiner; -import com.google.common.base.Throwables; - -public class SMTPMessageSender implements Closeable { - - public static SMTPMessageSender noAuthentication(String ip, int port, String senderDomain) throws IOException { - SMTPClient smtpClient = new SMTPClient(); - smtpClient.connect(ip, port); - return new SMTPMessageSender(smtpClient, senderDomain); - } - - public static SMTPMessageSender authentication(String ip, int port, String senderDomain, String username, String password) - throws NoSuchAlgorithmException, IOException, InvalidKeySpecException, InvalidKeyException { - AuthenticatingSMTPClient smtpClient = new AuthenticatingSMTPClient(); - smtpClient.connect(ip, port); - smtpClient.auth(AuthenticatingSMTPClient.AUTH_METHOD.PLAIN, username, password); - return new SMTPMessageSender(smtpClient, senderDomain); - } - - private final SMTPClient smtpClient; - private final String senderDomain; - - private SMTPMessageSender(SMTPClient smtpClient, String senderDomain) { - this.smtpClient = smtpClient; - this.senderDomain = senderDomain; - } - - public void sendMessage(String from, String recipient) { - try { - smtpClient.helo(senderDomain); - smtpClient.setSender(from); - smtpClient.rcpt("<" + recipient + ">"); - smtpClient.sendShortMessageData("FROM: " + from + "\r\n" + - "subject: test\r\n" + - "\r\n" + - "content\r\n" + - ".\r\n"); - } catch (IOException e) { - throw Throwables.propagate(e); - } - } - - public void sendMessageWithHeaders(String from, String recipient, String message) { - try { - smtpClient.helo(senderDomain); - smtpClient.setSender(from); - smtpClient.rcpt("<" + recipient + ">"); - smtpClient.sendShortMessageData(message); - } catch (IOException e) { - throw Throwables.propagate(e); - } - } - - public void sendMessage(Mail mail) throws MessagingException { - try { - String from = mail.getSender().asString(); - smtpClient.helo(senderDomain); - smtpClient.setSender(from); - smtpClient.rcpt("<" + Joiner.on(", ").join(mail.getRecipients()) + ">"); - smtpClient.sendShortMessageData(asString(mail.getMessage())); - } catch (IOException e) { - throw Throwables.propagate(e); - } - } - - private String asString(Message message) throws IOException, MessagingException { - ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); - message.writeTo(outputStream); - return new String(outputStream.toByteArray(), Charsets.UTF_8); - } - - public boolean messageHasBeenSent() throws IOException { - return smtpClient.getReplyString() - .contains("250 2.6.0 Message received"); - } - - @Override - public void close() throws IOException { - smtpClient.disconnect(); - } -} http://git-wip-us.apache.org/repos/asf/james-project/blob/ebad05e4/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AmqpForwardAttachmentTest.java ---------------------------------------------------------------------- diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AmqpForwardAttachmentTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AmqpForwardAttachmentTest.java index 47f71c4..db43632 100644 --- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AmqpForwardAttachmentTest.java +++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AmqpForwardAttachmentTest.java @@ -29,7 +29,7 @@ import org.apache.james.mailets.configuration.CommonProcessors; import org.apache.james.mailets.configuration.MailetConfiguration; import org.apache.james.mailets.configuration.MailetContainer; import org.apache.james.mailets.configuration.ProcessorConfiguration; -import org.apache.james.mailets.utils.SMTPMessageSender; +import org.apache.james.utils.SMTPMessageSender; import org.apache.james.modules.MailboxProbeImpl; import org.apache.james.probe.DataProbe; import org.apache.james.transport.mailets.amqp.AmqpRule; http://git-wip-us.apache.org/repos/asf/james-project/blob/ebad05e4/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java ---------------------------------------------------------------------- diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java index 22d68a9..5c6e777 100644 --- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java +++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java @@ -31,7 +31,7 @@ import org.apache.james.mailets.configuration.CommonProcessors; import org.apache.james.mailets.configuration.MailetConfiguration; import org.apache.james.mailets.configuration.MailetContainer; import org.apache.james.mailets.configuration.ProcessorConfiguration; -import org.apache.james.mailets.utils.SMTPMessageSender; +import org.apache.james.utils.SMTPMessageSender; import org.apache.james.modules.MailboxProbeImpl; import org.apache.james.probe.DataProbe; import org.apache.james.transport.mailets.amqp.AmqpRule; http://git-wip-us.apache.org/repos/asf/james-project/blob/ebad05e4/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java ---------------------------------------------------------------------- diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java index bb24326..24a3ecb 100644 --- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java +++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java @@ -29,7 +29,7 @@ import org.apache.james.mailets.configuration.CommonProcessors; import org.apache.james.mailets.configuration.MailetConfiguration; import org.apache.james.mailets.configuration.MailetContainer; import org.apache.james.mailets.configuration.ProcessorConfiguration; -import org.apache.james.mailets.utils.SMTPMessageSender; +import org.apache.james.utils.SMTPMessageSender; import org.apache.james.modules.MailboxProbeImpl; import org.apache.james.probe.DataProbe; import org.apache.james.utils.IMAPMessageReader; http://git-wip-us.apache.org/repos/asf/james-project/blob/ebad05e4/server/testing/pom.xml ---------------------------------------------------------------------- diff --git a/server/testing/pom.xml b/server/testing/pom.xml index 3836069..069fab8 100644 --- a/server/testing/pom.xml +++ b/server/testing/pom.xml @@ -32,6 +32,10 @@ <dependencies> <dependency> + <groupId>${project.groupId}</groupId> + <artifactId>apache-mailet-api</artifactId> + </dependency> + <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> </dependency> http://git-wip-us.apache.org/repos/asf/james-project/blob/ebad05e4/server/testing/src/main/java/org/apache/james/utils/SMTPMessageSender.java ---------------------------------------------------------------------- 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 new file mode 100644 index 0000000..2a0e5fc --- /dev/null +++ b/server/testing/src/main/java/org/apache/james/utils/SMTPMessageSender.java @@ -0,0 +1,117 @@ +/**************************************************************** + * 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.utils; + +import java.io.ByteArrayOutputStream; +import java.io.Closeable; +import java.io.IOException; +import java.security.InvalidKeyException; +import java.security.NoSuchAlgorithmException; +import java.security.spec.InvalidKeySpecException; + +import javax.mail.Message; +import javax.mail.MessagingException; + +import org.apache.commons.net.smtp.AuthenticatingSMTPClient; +import org.apache.commons.net.smtp.SMTPClient; +import org.apache.mailet.Mail; + +import com.google.common.base.Charsets; +import com.google.common.base.Joiner; +import com.google.common.base.Throwables; + +public class SMTPMessageSender implements Closeable { + + public static SMTPMessageSender noAuthentication(String ip, int port, String senderDomain) throws IOException { + SMTPClient smtpClient = new SMTPClient(); + smtpClient.connect(ip, port); + return new SMTPMessageSender(smtpClient, senderDomain); + } + + public static SMTPMessageSender authentication(String ip, int port, String senderDomain, String username, String password) + throws NoSuchAlgorithmException, IOException, InvalidKeySpecException, InvalidKeyException { + AuthenticatingSMTPClient smtpClient = new AuthenticatingSMTPClient(); + smtpClient.connect(ip, port); + smtpClient.auth(AuthenticatingSMTPClient.AUTH_METHOD.PLAIN, username, password); + return new SMTPMessageSender(smtpClient, senderDomain); + } + + private final SMTPClient smtpClient; + private final String senderDomain; + + private SMTPMessageSender(SMTPClient smtpClient, String senderDomain) { + this.smtpClient = smtpClient; + this.senderDomain = senderDomain; + } + + public void sendMessage(String from, String recipient) { + try { + smtpClient.helo(senderDomain); + smtpClient.setSender(from); + smtpClient.rcpt("<" + recipient + ">"); + smtpClient.sendShortMessageData("FROM: " + from + "\r\n" + + "subject: test\r\n" + + "\r\n" + + "content\r\n" + + ".\r\n"); + } catch (IOException e) { + throw Throwables.propagate(e); + } + } + + public void sendMessageWithHeaders(String from, String recipient, String message) { + try { + smtpClient.helo(senderDomain); + smtpClient.setSender(from); + smtpClient.rcpt("<" + recipient + ">"); + smtpClient.sendShortMessageData(message); + } catch (IOException e) { + throw Throwables.propagate(e); + } + } + + public void sendMessage(Mail mail) throws MessagingException { + try { + String from = mail.getSender().asString(); + smtpClient.helo(senderDomain); + smtpClient.setSender(from); + smtpClient.rcpt("<" + Joiner.on(", ").join(mail.getRecipients()) + ">"); + smtpClient.sendShortMessageData(asString(mail.getMessage())); + } catch (IOException e) { + throw Throwables.propagate(e); + } + } + + private String asString(Message message) throws IOException, MessagingException { + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + message.writeTo(outputStream); + return new String(outputStream.toByteArray(), Charsets.UTF_8); + } + + public boolean messageHasBeenSent() throws IOException { + return smtpClient.getReplyString() + .contains("250 2.6.0 Message received"); + } + + @Override + public void close() throws IOException { + smtpClient.disconnect(); + } +} --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
