Author: norman
Date: Thu Jan 19 10:47:24 2012
New Revision: 1233273

URL: http://svn.apache.org/viewvc?rev=1233273&view=rev
Log:
Add unit test for STARTTLS via javamail as commons-net has a bug in starttls 
impl

Added:
    
james/protocols/trunk/api/src/test/java/org/apache/james/protocols/api/utils/BogusSSLSocketFactory.java
   (with props)
    
james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/utils/
    
james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/utils/TestMessageHook.java
   (with props)
Modified:
    
james/protocols/trunk/lmtp/src/test/java/org/apache/james/protocols/lmtp/AbstractLMTPServerTest.java
    james/protocols/trunk/pom.xml
    james/protocols/trunk/smtp/pom.xml
    
james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/AbstractSMTPServerTest.java
    
james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/AbstractStartTlsSMTPServerTest.java

Added: 
james/protocols/trunk/api/src/test/java/org/apache/james/protocols/api/utils/BogusSSLSocketFactory.java
URL: 
http://svn.apache.org/viewvc/james/protocols/trunk/api/src/test/java/org/apache/james/protocols/api/utils/BogusSSLSocketFactory.java?rev=1233273&view=auto
==============================================================================
--- 
james/protocols/trunk/api/src/test/java/org/apache/james/protocols/api/utils/BogusSSLSocketFactory.java
 (added)
+++ 
james/protocols/trunk/api/src/test/java/org/apache/james/protocols/api/utils/BogusSSLSocketFactory.java
 Thu Jan 19 10:47:24 2012
@@ -0,0 +1,69 @@
+/****************************************************************
+ * 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.protocols.api.utils;
+
+import java.io.IOException;
+import java.net.InetAddress;
+import java.net.Socket;
+import java.net.UnknownHostException;
+
+import javax.net.ssl.SSLSocketFactory;
+
+public class BogusSSLSocketFactory extends SSLSocketFactory {
+
+    private static final SSLSocketFactory FACTORY = 
BogusSslContextFactory.getClientContext().getSocketFactory();
+    
+    
+    @Override
+    public Socket createSocket(Socket s, String host, int port, boolean 
autoClose) throws IOException {
+        return FACTORY.createSocket(s, host, port, autoClose);
+    }
+
+    @Override
+    public String[] getDefaultCipherSuites() {
+        return FACTORY.getDefaultCipherSuites();
+    }
+
+    @Override
+    public String[] getSupportedCipherSuites() {
+        return FACTORY.getSupportedCipherSuites();
+    }
+
+    @Override
+    public Socket createSocket(String host, int port) throws IOException, 
UnknownHostException {
+        return FACTORY.createSocket(host, port);
+    }
+
+    @Override
+    public Socket createSocket(InetAddress address, int port) throws 
IOException {
+        return FACTORY.createSocket(address, port);
+    }
+
+    @Override
+    public Socket createSocket(String host, int port, InetAddress localhost, 
int localport) throws IOException, UnknownHostException {
+        return FACTORY.createSocket(host, port, localhost, localport);
+
+    }
+
+    @Override
+    public Socket createSocket(InetAddress address, int port, InetAddress 
localaddress, int localport) throws IOException {
+        return FACTORY.createSocket(address, port, localaddress, localport);
+    }
+
+}

Propchange: 
james/protocols/trunk/api/src/test/java/org/apache/james/protocols/api/utils/BogusSSLSocketFactory.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: 
james/protocols/trunk/lmtp/src/test/java/org/apache/james/protocols/lmtp/AbstractLMTPServerTest.java
URL: 
http://svn.apache.org/viewvc/james/protocols/trunk/lmtp/src/test/java/org/apache/james/protocols/lmtp/AbstractLMTPServerTest.java?rev=1233273&r1=1233272&r2=1233273&view=diff
==============================================================================
--- 
james/protocols/trunk/lmtp/src/test/java/org/apache/james/protocols/lmtp/AbstractLMTPServerTest.java
 (original)
+++ 
james/protocols/trunk/lmtp/src/test/java/org/apache/james/protocols/lmtp/AbstractLMTPServerTest.java
 Thu Jan 19 10:47:24 2012
@@ -45,6 +45,7 @@ import org.apache.james.protocols.smtp.S
 import org.apache.james.protocols.smtp.hook.HookResult;
 import org.apache.james.protocols.smtp.hook.HookReturnCode;
 import org.apache.james.protocols.smtp.hook.MessageHook;
+import org.apache.james.protocols.smtp.utils.TestMessageHook;
 import org.junit.Test;
 
 public abstract class AbstractLMTPServerTest extends AbstractSMTPServerTest{

Modified: james/protocols/trunk/pom.xml
URL: 
http://svn.apache.org/viewvc/james/protocols/trunk/pom.xml?rev=1233273&r1=1233272&r2=1233273&view=diff
==============================================================================
--- james/protocols/trunk/pom.xml (original)
+++ james/protocols/trunk/pom.xml Thu Jan 19 10:47:24 2012
@@ -134,6 +134,12 @@
                 <version>3.0.1</version>
                 <scope>test</scope>
             </dependency>
+            <dependency>
+                <groupId>org.apache.geronimo.javamail</groupId>
+                <artifactId>geronimo-javamail_1.4_mail</artifactId>
+                <version>1.8.3</version>
+                <scope>test</scope>
+            </dependency>
         </dependencies>
     </dependencyManagement>
 

Modified: james/protocols/trunk/smtp/pom.xml
URL: 
http://svn.apache.org/viewvc/james/protocols/trunk/smtp/pom.xml?rev=1233273&r1=1233272&r2=1233273&view=diff
==============================================================================
--- james/protocols/trunk/smtp/pom.xml (original)
+++ james/protocols/trunk/smtp/pom.xml Thu Jan 19 10:47:24 2012
@@ -64,6 +64,11 @@
             <artifactId>junit</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.apache.geronimo.javamail</groupId>
+            <artifactId>geronimo-javamail_1.4_mail</artifactId>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
 
     <build>

Modified: 
james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/AbstractSMTPServerTest.java
URL: 
http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/AbstractSMTPServerTest.java?rev=1233273&r1=1233272&r2=1233273&view=diff
==============================================================================
--- 
james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/AbstractSMTPServerTest.java
 (original)
+++ 
james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/AbstractSMTPServerTest.java
 Thu Jan 19 10:47:24 2012
@@ -22,7 +22,6 @@ import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStreamReader;
 import java.net.InetSocketAddress;
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Iterator;
 import java.util.List;
@@ -45,6 +44,7 @@ import org.apache.james.protocols.smtp.h
 import org.apache.james.protocols.smtp.hook.MailHook;
 import org.apache.james.protocols.smtp.hook.MessageHook;
 import org.apache.james.protocols.smtp.hook.RcptHook;
+import org.apache.james.protocols.smtp.utils.TestMessageHook;
 import org.junit.Test;
 import static org.junit.Assert.*;
 
@@ -1014,18 +1014,4 @@ public abstract class AbstractSMTPServer
 
     }
     
-    public final class TestMessageHook implements MessageHook {
-
-        private final List<MailEnvelope> queued = new 
ArrayList<MailEnvelope>();
-        
-        public HookResult onMessage(SMTPSession session, MailEnvelope mail) {
-            queued.add(mail);
-            return new HookResult(HookReturnCode.OK);
-        }
-     
-        public List<MailEnvelope> getQueued() {
-            return queued;
-        }
-    }
-
 }

Modified: 
james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/AbstractStartTlsSMTPServerTest.java
URL: 
http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/AbstractStartTlsSMTPServerTest.java?rev=1233273&r1=1233272&r2=1233273&view=diff
==============================================================================
--- 
james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/AbstractStartTlsSMTPServerTest.java
 (original)
+++ 
james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/AbstractStartTlsSMTPServerTest.java
 Thu Jan 19 10:47:24 2012
@@ -18,24 +18,35 @@
  ****************************************************************/
 package org.apache.james.protocols.smtp;
 
+import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 
 import java.net.InetSocketAddress;
+import java.net.Socket;
 import java.util.Arrays;
 import java.util.Locale;
+import java.util.Properties;
 
+import javax.mail.Address;
+import javax.mail.Message;
+import javax.mail.Session;
+import javax.mail.internet.InternetAddress;
+import javax.mail.internet.MimeMessage;
 
 import org.apache.commons.net.smtp.SMTPReply;
 import org.apache.commons.net.smtp.SMTPSClient;
+import org.apache.geronimo.javamail.transport.smtp.SMTPTransport;
 import org.apache.james.protocols.api.Encryption;
 import org.apache.james.protocols.api.Protocol;
 import org.apache.james.protocols.api.ProtocolServer;
 import org.apache.james.protocols.api.handler.ProtocolHandler;
 import org.apache.james.protocols.api.handler.WiringException;
+import org.apache.james.protocols.api.utils.BogusSSLSocketFactory;
 import org.apache.james.protocols.api.utils.BogusSslContextFactory;
 import org.apache.james.protocols.api.utils.BogusTrustManagerFactory;
 import org.apache.james.protocols.api.utils.MockLogger;
 import org.apache.james.protocols.api.utils.TestUtils;
+import org.apache.james.protocols.smtp.utils.TestMessageHook;
 import org.junit.Test;
 
 public abstract class AbstractStartTlsSMTPServerTest {
@@ -102,5 +113,55 @@ public abstract class AbstractStartTlsSM
         
     }
     
+    @Test
+    public void testStartTLSWithJavamail() throws Exception {
+        InetSocketAddress address = new InetSocketAddress("127.0.0.1", 
TestUtils.getFreePort());
+        
+        
+        ProtocolServer server = null;
+        try {
+            TestMessageHook hook = new TestMessageHook();
+            server = createServer(createProtocol(hook) , address, 
Encryption.createStartTls(BogusSslContextFactory.getServerContext()));  
+            server.bind();
+            
+            
+            Properties mailProps = new Properties();
+            mailProps.put("mail.smtp.from", "test@localhost");
+            mailProps.put("mail.smtp.host", address.getHostName());
+            mailProps.put("mail.smtp.port", address.getPort());
+            mailProps.put("mail.smtp.socketFactory.class", 
BogusSSLSocketFactory.class.getName());
+            mailProps.put("mail.smtp.socketFactory.fallback", "false");
+            mailProps.put("mail.smtp.starttls.enable", "true");
+
+            Session mailSession = Session.getDefaultInstance(mailProps);
+
+            MimeMessage message = new MimeMessage(mailSession);
+            message.setFrom(new InternetAddress("test@localhost"));
+            String[] emails = { "valid@localhost" };
+            Address rcpts[] = new Address[emails.length];
+            for (int i = 0; i < emails.length; i++) {
+                rcpts[i] = new InternetAddress(emails[i].trim().toLowerCase());
+            }
+            message.setRecipients(Message.RecipientType.TO, rcpts);
+            message.setSubject("Testmail", "UTF-8");
+            message.setText("Test.....");
+
+            SMTPTransport transport = (SMTPTransport) 
mailSession.getTransport("smtps");
+            
+            transport.connect(new Socket(address.getHostName(), 
address.getPort()));
+            transport.sendMessage(message, rcpts);
+            
+           
+            assertEquals(1, hook.getQueued().size());
+            
+
+
+        } finally {
+            if (server != null) {
+                server.unbind();
+            }
+        }
+        
+    }
     
 }

Added: 
james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/utils/TestMessageHook.java
URL: 
http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/utils/TestMessageHook.java?rev=1233273&view=auto
==============================================================================
--- 
james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/utils/TestMessageHook.java
 (added)
+++ 
james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/utils/TestMessageHook.java
 Thu Jan 19 10:47:24 2012
@@ -0,0 +1,43 @@
+/****************************************************************
+ * 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.protocols.smtp.utils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.james.protocols.smtp.MailEnvelope;
+import org.apache.james.protocols.smtp.SMTPSession;
+import org.apache.james.protocols.smtp.hook.HookResult;
+import org.apache.james.protocols.smtp.hook.HookReturnCode;
+import org.apache.james.protocols.smtp.hook.MessageHook;
+
+public class TestMessageHook implements MessageHook {
+
+    private final List<MailEnvelope> queued = new ArrayList<MailEnvelope>();
+    
+    public HookResult onMessage(SMTPSession session, MailEnvelope mail) {
+        queued.add(mail);
+        return new HookResult(HookReturnCode.OK);
+    }
+ 
+    public List<MailEnvelope> getQueued() {
+        return queued;
+    }
+
+}

Propchange: 
james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/utils/TestMessageHook.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain



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

Reply via email to