Author: veithen
Date: Mon Sep 22 15:06:49 2008
New Revision: 698019

URL: http://svn.apache.org/viewvc?rev=698019&view=rev
Log:
Mail transport tests: Added assertions on From/To headers. Some are not yet 
enabled because the mail transport has a bug that causes an incorrect From 
header to be set on response messages.

Added:
    
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailMessageContextValidator.java
    
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/axis2/MessageContextValidator.java
Modified:
    
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailRequestResponseClient.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/axis2/client/AxisRequestResponseTestClient.java
    
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/axis2/endpoint/AxisAsyncEndpoint.java

Added: 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailMessageContextValidator.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailMessageContextValidator.java?rev=698019&view=auto
==============================================================================
--- 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailMessageContextValidator.java
 (added)
+++ 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailMessageContextValidator.java
 Mon Sep 22 15:06:49 2008
@@ -0,0 +1,54 @@
+/*
+ *  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.Map;
+
+import junit.framework.Assert;
+
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.transport.mail.MailConstants;
+import org.apache.synapse.transport.testkit.axis2.MessageContextValidator;
+
+public class MailMessageContextValidator extends Assert implements 
MessageContextValidator {
+    public static final MailMessageContextValidator INSTANCE = new 
MailMessageContextValidator();
+    
+    private MailChannel channel;
+    
+    private MailMessageContextValidator() {}
+    
+    @SuppressWarnings("unused")
+    private void setUp(MailChannel channel) {
+        this.channel = channel;
+    }
+    
+    public void validate(MessageContext msgContext, boolean isResponse) throws 
Exception {
+        Map<?,?> trpHeaders = 
(Map<?,?>)msgContext.getProperty(MessageContext.TRANSPORT_HEADERS);
+        String from = (String)trpHeaders.get(MailConstants.MAIL_HEADER_FROM);
+        String to = (String)trpHeaders.get(MailConstants.MAIL_HEADER_TO);
+        if (isResponse) {
+            assertEquals(channel.getSender().getAddress(), to);
+            assertEquals(channel.getRecipient().getAddress(), from);
+        } else {
+            assertEquals(channel.getSender().getAddress(), from);
+            assertEquals(channel.getRecipient().getAddress(), to);
+        }
+    }
+}

Modified: 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailRequestResponseClient.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailRequestResponseClient.java?rev=698019&r1=698018&r2=698019&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailRequestResponseClient.java
 (original)
+++ 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailRequestResponseClient.java
 Mon Sep 22 15:06:49 2008
@@ -29,6 +29,7 @@
 import javax.mail.Session;
 import javax.mail.Store;
 import javax.mail.internet.ContentType;
+import javax.mail.internet.InternetAddress;
 
 import junit.framework.Assert;
 
@@ -42,6 +43,7 @@
 public class MailRequestResponseClient extends MailClient implements 
RequestResponseTestClient<byte[],byte[]> {
     private static final Log log = 
LogFactory.getLog(MailRequestResponseClient.class);
     
+    private MailChannel channel;
     private Store store;
     
     public MailRequestResponseClient(MessageLayout layout) {
@@ -50,6 +52,7 @@
     
     @SuppressWarnings("unused")
     private void setUp(MailTestEnvironment env, MailChannel channel) throws 
MessagingException {
+        this.channel = channel;
         Session session = channel.getReplySession();
         session.setDebug(log.isTraceEnabled());
         store = session.getStore(env.getProtocol());
@@ -67,6 +70,11 @@
         String msgId = sendMessage(contentType, message);
         Message reply = waitForReply(msgId);
         Assert.assertNotNull("No response received", reply);
+        Assert.assertEquals(channel.getSender().getAddress(),
+                            
((InternetAddress)reply.getRecipients(Message.RecipientType.TO)[0]).getAddress());
+        // TODO: enable this once the corresponding bug in the mail transport 
is corrected
+//        Assert.assertEquals(channel.getRecipient().getAddress(),
+//                            
((InternetAddress)reply.getFrom()[0]).getAddress());
         ByteArrayOutputStream baos = new ByteArrayOutputStream();
         reply.getDataHandler().writeTo(baos);
         return new IncomingMessage<byte[]>(new 
ContentType(reply.getContentType()), baos.toByteArray());

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=698019&r1=698018&r2=698019&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
 Mon Sep 22 15:06:49 2008
@@ -48,8 +48,8 @@
         
         TransportTestSuiteBuilder builder = new 
TransportTestSuiteBuilder(suite);
         
-        builder.addEnvironment(new GreenMailTestEnvironment("pop3"));
-        builder.addEnvironment(new GreenMailTestEnvironment("imap"));
+        builder.addEnvironment(new GreenMailTestEnvironment("pop3"), 
MailMessageContextValidator.INSTANCE);
+        builder.addEnvironment(new GreenMailTestEnvironment("imap"), 
MailMessageContextValidator.INSTANCE);
         
         MailChannel channel = new MailChannel();
         

Added: 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/axis2/MessageContextValidator.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/axis2/MessageContextValidator.java?rev=698019&view=auto
==============================================================================
--- 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/axis2/MessageContextValidator.java
 (added)
+++ 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/axis2/MessageContextValidator.java
 Mon Sep 22 15:06:49 2008
@@ -0,0 +1,26 @@
+/*
+ *  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.testkit.axis2;
+
+import org.apache.axis2.context.MessageContext;
+
+public interface MessageContextValidator {
+    void validate(MessageContext msgContext, boolean isResponse) throws 
Exception;
+}

Modified: 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/axis2/client/AxisRequestResponseTestClient.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/axis2/client/AxisRequestResponseTestClient.java?rev=698019&r1=698018&r2=698019&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/axis2/client/AxisRequestResponseTestClient.java
 (original)
+++ 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/axis2/client/AxisRequestResponseTestClient.java
 Mon Sep 22 15:06:49 2008
@@ -27,17 +27,28 @@
 import org.apache.axis2.client.ServiceClient;
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.wsdl.WSDLConstants;
+import org.apache.synapse.transport.testkit.axis2.MessageContextValidator;
 import org.apache.synapse.transport.testkit.client.ClientOptions;
 import org.apache.synapse.transport.testkit.client.RequestResponseTestClient;
 import org.apache.synapse.transport.testkit.message.AxisMessage;
 import org.apache.synapse.transport.testkit.message.IncomingMessage;
 
 public class AxisRequestResponseTestClient extends AxisTestClient implements 
RequestResponseTestClient<AxisMessage,AxisMessage> {
+    private MessageContextValidator[] validators;
+    
+    @SuppressWarnings("unused")
+    private void setUp(MessageContextValidator[] validators) {
+        this.validators = validators;
+    }
+    
     public IncomingMessage<AxisMessage> sendMessage(ClientOptions options, 
ContentType contentType, AxisMessage message) throws Exception {
         OperationClient mepClient = createClient(options, message, 
ServiceClient.ANON_OUT_IN_OP);
         mepClient.execute(true);
         MessageContext responseMsgContext = 
mepClient.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
         Assert.assertFalse(responseMsgContext.isServerSide());
+        for (MessageContextValidator validator : validators) {
+            validator.validate(responseMsgContext, true);
+        }
         return new IncomingMessage<AxisMessage>(null, new 
AxisMessage(responseMsgContext));
     }
 }

Modified: 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/axis2/endpoint/AxisAsyncEndpoint.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/axis2/endpoint/AxisAsyncEndpoint.java?rev=698019&r1=698018&r2=698019&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/axis2/endpoint/AxisAsyncEndpoint.java
 (original)
+++ 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/axis2/endpoint/AxisAsyncEndpoint.java
 Mon Sep 22 15:06:49 2008
@@ -32,6 +32,7 @@
 import org.apache.axis2.description.AxisOperation;
 import org.apache.axis2.description.InOnlyAxisOperation;
 import org.apache.axis2.engine.MessageReceiver;
+import org.apache.synapse.transport.testkit.axis2.MessageContextValidator;
 import org.apache.synapse.transport.testkit.message.AxisMessage;
 import org.apache.synapse.transport.testkit.message.IncomingMessage;
 import org.apache.synapse.transport.testkit.server.AsyncEndpoint;
@@ -41,10 +42,12 @@
         IncomingMessage<AxisMessage> process() throws Throwable;
     }
     
+    private MessageContextValidator[] validators;
     private BlockingQueue<Event> queue;
     
     @SuppressWarnings("unused")
-    private void setUp() {
+    private void setUp(MessageContextValidator[] validators) {
+        this.validators = validators;
         queue = new LinkedBlockingQueue<Event>();
     }
     
@@ -59,6 +62,9 @@
         final AxisMessage messageData;
         try {
             Assert.assertTrue(messageCtx.isServerSide());
+            for (MessageContextValidator validator : validators) {
+                validator.validate(messageCtx, false);
+            }
             messageData = new AxisMessage(messageCtx);
         }
         catch (final Throwable ex) {


Reply via email to