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