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: [email protected]
For additional commands, e-mail: [email protected]