You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@synapse.apache.org by ve...@apache.org on 2008/08/17 12:55:01 UTC
svn commit: r686597 - in /synapse/trunk/java/modules/transports: ./
src/test/java/org/apache/synapse/transport/mail/
src/test/java/org/apache/synapse/transport/testkit/tests/async/
Author: veithen
Date: Sun Aug 17 03:55:00 2008
New Revision: 686597
URL: http://svn.apache.org/viewvc?rev=686597&view=rev
Log:
SYNAPSE-246: Changed mail transport test cases to use GreenMail as mock mail server. Thanks to Jens Goldhammer for the suggestion.
Added:
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailTestEnvironment.java
Modified:
synapse/trunk/java/modules/transports/pom.xml
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailChannel.java
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailClient.java
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailTransportListenerTest.java
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/async/TextPlainTestCase.java
Modified: synapse/trunk/java/modules/transports/pom.xml
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/pom.xml?rev=686597&r1=686596&r2=686597&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/pom.xml (original)
+++ synapse/trunk/java/modules/transports/pom.xml Sun Aug 17 03:55:00 2008
@@ -196,6 +196,13 @@
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>com.icegreen</groupId>
+ <artifactId>greenmail</artifactId>
+ <version>1.3</version>
+ <scope>test</scope>
+ </dependency>
+
<!-- Workaround for SYNAPSE-400 -->
<dependency>
<groupId>org.apache.woden</groupId>
Modified: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailChannel.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailChannel.java?rev=686597&r1=686596&r2=686597&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailChannel.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailChannel.java Sun Aug 17 03:55:00 2008
@@ -19,16 +19,22 @@
package org.apache.synapse.transport.mail;
+import java.util.Map;
+
import org.apache.axis2.description.AxisService;
-import org.apache.synapse.transport.testkit.TestEnvironment;
import org.apache.synapse.transport.testkit.listener.AbstractChannel;
import org.apache.synapse.transport.testkit.listener.AsyncChannel;
-public class MailChannel extends AbstractChannel<TestEnvironment> implements AsyncChannel<TestEnvironment> {
- private final String address;
+public class MailChannel extends AbstractChannel<MailTestEnvironment> implements AsyncChannel<MailTestEnvironment> {
+ private String address;
+ private String protocol;
+ private Map<String,String> inProperties;
- public MailChannel(String address) {
- this.address = address;
+ @Override
+ public void setUp(MailTestEnvironment env) throws Exception {
+ protocol = env.getProtocol();
+ inProperties = env.getInProperties();
+ address = env.getAddress();
}
public String getAddress() {
@@ -37,11 +43,12 @@
@Override
public void setupService(AxisService service) throws Exception {
- service.addParameter("transport.mail.Protocol", "test-store");
+ service.addParameter("transport.mail.Protocol", protocol);
service.addParameter("transport.mail.Address", address);
service.addParameter("transport.PollInterval", "1");
- // TODO: logically, this should be mail.test-store.user and mail.test-store.password
- service.addParameter("mail.pop3.user", address);
- service.addParameter("mail.pop3.password", "dummy");
+
+ for (Map.Entry<String,String> prop : inProperties.entrySet()) {
+ service.addParameter(prop.getKey(), prop.getValue());
+ }
}
}
Modified: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailClient.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailClient.java?rev=686597&r1=686596&r2=686597&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailClient.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailClient.java Sun Aug 17 03:55:00 2008
@@ -20,6 +20,7 @@
package org.apache.synapse.transport.mail;
import java.util.Date;
+import java.util.Map;
import java.util.Properties;
import javax.activation.DataHandler;
@@ -30,16 +31,22 @@
import javax.mail.internet.MimeMessage;
import javax.mail.util.ByteArrayDataSource;
-import org.apache.synapse.transport.testkit.TestEnvironment;
import org.apache.synapse.transport.testkit.client.AbstractTestClient;
import org.apache.synapse.transport.testkit.client.AsyncTestClient;
import org.apache.synapse.transport.testkit.client.ClientOptions;
import org.apache.synapse.transport.testkit.message.ByteArrayMessage;
-public abstract class MailClient extends AbstractTestClient<TestEnvironment,MailChannel> implements AsyncTestClient<TestEnvironment,MailChannel,ByteArrayMessage> {
+public abstract class MailClient extends AbstractTestClient<MailTestEnvironment,MailChannel> implements AsyncTestClient<MailTestEnvironment,MailChannel,ByteArrayMessage> {
+ private Map<String,String> outProperties;
+
+ @Override
+ public void setUp(MailTestEnvironment env, MailChannel channel) throws Exception {
+ outProperties = env.getOutProperties();
+ }
+
public void sendMessage(MailChannel channel, ClientOptions options, ByteArrayMessage message) throws Exception {
Properties props = new Properties();
- props.put("mail.smtp.class", TestTransport.class.getName());
+ props.putAll(outProperties);
Session session = Session.getInstance(props);
MimeMessage msg = new MimeMessage(session);
msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(channel.getAddress()));
@@ -51,4 +58,4 @@
}
protected abstract void setupMessage(MimeMessage msg, DataHandler dh) throws Exception;
-}
\ No newline at end of file
+}
Added: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailTestEnvironment.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailTestEnvironment.java?rev=686597&view=auto
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailTestEnvironment.java (added)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailTestEnvironment.java Sun Aug 17 03:55:00 2008
@@ -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.synapse.transport.mail;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.synapse.transport.testkit.TestEnvironment;
+
+import com.icegreen.greenmail.util.GreenMail;
+import com.icegreen.greenmail.util.ServerSetup;
+
+public class MailTestEnvironment extends TestEnvironment {
+ private static final String ADDRESS = "test-account";
+ private static final String PASSWORD = "password";
+
+ private static final ServerSetup SMTP =
+ new ServerSetup(7025, "127.0.0.1", ServerSetup.PROTOCOL_SMTP);
+
+ private static final ServerSetup POP3 =
+ new ServerSetup(7110, "127.0.0.1", ServerSetup.PROTOCOL_POP3);
+
+ private GreenMail greenMail;
+
+ @Override
+ public void setUp() throws Exception {
+ greenMail = new GreenMail(new ServerSetup[] { SMTP, POP3 });
+ greenMail.setUser(ADDRESS, PASSWORD);
+ greenMail.start();
+ }
+
+ @Override
+ public void tearDown() throws Exception {
+ greenMail.stop();
+ greenMail = null;
+ }
+
+ public String getProtocol() {
+ return "pop3";
+ }
+
+ public String getAddress() {
+ return ADDRESS;
+ }
+
+ public Map<String,String> getInProperties() {
+ Map<String,String> props = new HashMap<String,String>();
+ props.put("mail.pop3.host", "localhost");
+ props.put("mail.pop3.port", String.valueOf(POP3.getPort()));
+ props.put("mail.pop3.user", ADDRESS);
+ props.put("mail.pop3.password", PASSWORD);
+ return props;
+ }
+
+ public Map<String,String> getOutProperties() {
+ Map<String,String> props = new HashMap<String,String>();
+ props.put("mail.smtp.host", "localhost");
+ props.put("mail.smtp.port", String.valueOf(SMTP.getPort()));
+ return props;
+ }
+}
Modified: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailTransportListenerTest.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailTransportListenerTest.java?rev=686597&r1=686596&r2=686597&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailTransportListenerTest.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailTransportListenerTest.java Sun Aug 17 03:55:00 2008
@@ -29,7 +29,6 @@
import org.apache.synapse.transport.testkit.AdapterUtils;
import org.apache.synapse.transport.testkit.SimpleTransportDescriptionFactory;
-import org.apache.synapse.transport.testkit.TestEnvironment;
import org.apache.synapse.transport.testkit.TransportDescriptionFactory;
import org.apache.synapse.transport.testkit.TransportTestSuite;
import org.apache.synapse.transport.testkit.client.AsyncTestClient;
@@ -40,7 +39,7 @@
public class MailTransportListenerTest extends TestCase {
public static TestSuite suite() throws Exception {
- TransportTestSuite<TestEnvironment> suite = new TransportTestSuite<TestEnvironment>();
+ TransportTestSuite<MailTestEnvironment> suite = new TransportTestSuite<MailTestEnvironment>();
// TODO: these test don't work; need more analysis why this is so
suite.addExclude("(&(messageType=SOAP12)(data=Latin1))");
@@ -51,21 +50,23 @@
suite.addExclude("(test=AsyncBinary)");
suite.addExclude("(&(test=AsyncTextPlain)(!(data=ASCII)))");
+ MailTestEnvironment env = new MailTestEnvironment();
+
TransportDescriptionFactory tdf =
new SimpleTransportDescriptionFactory(MailConstants.TRANSPORT_NAME,
MailTransportListener.class, MailTransportSender.class);
- AxisServer<TestEnvironment> axisServer = new AxisServer<TestEnvironment>(tdf);
- MailChannel channel = new MailChannel("test-account@localhost");
+ AxisServer<MailTestEnvironment> axisServer = new AxisServer<MailTestEnvironment>(tdf);
+ MailChannel channel = new MailChannel();
List<MailClient> clients = new LinkedList<MailClient>();
clients.add(new MimeClient());
clients.add(new MultipartClient());
for (MailClient client : clients) {
- AsyncTestClient<TestEnvironment,MailChannel,XMLMessage> xmlClient = adapt(client, MessageConverter.XML_TO_BYTE);
- suite.addSOAPTests(null, channel, xmlClient, axisServer, ContentTypeMode.TRANSPORT);
- suite.addPOXTests(null, channel, xmlClient, axisServer, ContentTypeMode.TRANSPORT);
- suite.addSwATests(null, channel, client, axisServer);
- suite.addTextPlainTests(null, channel, AdapterUtils.adapt(client, MessageConverter.STRING_TO_BYTE), AdapterUtils.adapt(axisServer, MessageConverter.AXIS_TO_STRING), ContentTypeMode.TRANSPORT);
- suite.addBinaryTest(null, channel, client, AdapterUtils.adapt(axisServer, MessageConverter.AXIS_TO_BYTE), ContentTypeMode.TRANSPORT);
+ AsyncTestClient<MailTestEnvironment,MailChannel,XMLMessage> xmlClient = adapt(client, MessageConverter.XML_TO_BYTE);
+ suite.addSOAPTests(env, channel, xmlClient, axisServer, ContentTypeMode.TRANSPORT);
+ suite.addPOXTests(env, channel, xmlClient, axisServer, ContentTypeMode.TRANSPORT);
+ suite.addSwATests(env, channel, client, axisServer);
+ suite.addTextPlainTests(env, channel, AdapterUtils.adapt(client, MessageConverter.STRING_TO_BYTE), AdapterUtils.adapt(axisServer, MessageConverter.AXIS_TO_STRING), ContentTypeMode.TRANSPORT);
+ suite.addBinaryTest(env, channel, client, AdapterUtils.adapt(axisServer, MessageConverter.AXIS_TO_BYTE), ContentTypeMode.TRANSPORT);
}
return suite;
}
Modified: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/async/TextPlainTestCase.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/async/TextPlainTestCase.java?rev=686597&r1=686596&r2=686597&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/async/TextPlainTestCase.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/async/TextPlainTestCase.java Sun Aug 17 03:55:00 2008
@@ -51,6 +51,9 @@
@Override
protected void checkMessageData(StringMessage message, StringMessage messageData) throws Exception {
- assertEquals(message.getContent(), messageData.getContent());
+ // Some transport protocols add a newline at the end of the payload. Therefore trim the
+ // strings before comparison.
+ // TODO: investigate this a bit further
+ assertEquals(message.getContent().trim(), messageData.getContent().trim());
}
}