Author: norman Date: Fri Dec 23 12:07:09 2011 New Revision: 1222653 URL: http://svn.apache.org/viewvc?rev=1222653&view=rev Log: Add unit tests for LMTP. See PROTOCOLS-66
Added: james/protocols/trunk/lmtp/src/test/ james/protocols/trunk/lmtp/src/test/java/ james/protocols/trunk/lmtp/src/test/java/org/ james/protocols/trunk/lmtp/src/test/java/org/apache/ james/protocols/trunk/lmtp/src/test/java/org/apache/james/ james/protocols/trunk/lmtp/src/test/java/org/apache/james/protocols/ james/protocols/trunk/lmtp/src/test/java/org/apache/james/protocols/lmtp/ james/protocols/trunk/lmtp/src/test/java/org/apache/james/protocols/lmtp/LMTPServerTest.java Modified: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/Protocol.java james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ProtocolImpl.java james/protocols/trunk/lmtp/pom.xml james/protocols/trunk/pom.xml james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPProtocol.java james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/SMTPServerTest.java Modified: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/Protocol.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/Protocol.java?rev=1222653&r1=1222652&r2=1222653&view=diff ============================================================================== --- james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/Protocol.java (original) +++ james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/Protocol.java Fri Dec 23 12:07:09 2011 @@ -32,6 +32,13 @@ public interface Protocol { */ ProtocolHandlerChain getProtocolChain(); + /** + * Return the {@link ProtocolConfiguration} + * + * @return config + */ + ProtocolConfiguration getConfiguration(); + /** * Create a new {@link ProtocolSession} for the given {@link ProtocolTransport} Modified: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ProtocolImpl.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ProtocolImpl.java?rev=1222653&r1=1222652&r2=1222653&view=diff ============================================================================== --- james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ProtocolImpl.java (original) +++ james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/ProtocolImpl.java Fri Dec 23 12:07:09 2011 @@ -30,7 +30,7 @@ import org.slf4j.LoggerFactory; public class ProtocolImpl implements Protocol{ protected final static Logger logger = LoggerFactory.getLogger(ProtocolImpl.class); private final ProtocolHandlerChain chain; - protected final ProtocolConfiguration config; + private final ProtocolConfiguration config; public ProtocolImpl(ProtocolHandlerChain chain, ProtocolConfiguration config) { this.chain = chain; @@ -53,4 +53,12 @@ public class ProtocolImpl implements Pro return new ProtocolSessionImpl(logger, transport, config); } + /* + * (non-Javadoc) + * @see org.apache.james.protocols.api.Protocol#getConfiguration() + */ + public ProtocolConfiguration getConfiguration() { + return config; + } + } Modified: james/protocols/trunk/lmtp/pom.xml URL: http://svn.apache.org/viewvc/james/protocols/trunk/lmtp/pom.xml?rev=1222653&r1=1222652&r2=1222653&view=diff ============================================================================== --- james/protocols/trunk/lmtp/pom.xml (original) +++ james/protocols/trunk/lmtp/pom.xml Fri Dec 23 12:07:09 2011 @@ -51,6 +51,22 @@ <artifactId>junit</artifactId> <scope>test</scope> </dependency> + <dependency> + <groupId>commons-net</groupId> + <artifactId>commons-net</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.james.protocols</groupId> + <artifactId>protocols-netty</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.james.protocols</groupId> + <artifactId>protocols-smtp</artifactId> + <type>test-jar</type> + <scope>test</scope> + </dependency> </dependencies> <build> Added: james/protocols/trunk/lmtp/src/test/java/org/apache/james/protocols/lmtp/LMTPServerTest.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/lmtp/src/test/java/org/apache/james/protocols/lmtp/LMTPServerTest.java?rev=1222653&view=auto ============================================================================== --- james/protocols/trunk/lmtp/src/test/java/org/apache/james/protocols/lmtp/LMTPServerTest.java (added) +++ james/protocols/trunk/lmtp/src/test/java/org/apache/james/protocols/lmtp/LMTPServerTest.java Fri Dec 23 12:07:09 2011 @@ -0,0 +1,352 @@ +/**************************************************************** + * 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.lmtp; + +import static org.junit.Assert.*; + +import java.io.IOException; +import java.net.InetSocketAddress; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Iterator; +import java.util.List; + +import org.apache.commons.net.smtp.RelayPath; +import org.apache.commons.net.smtp.SMTPClient; +import org.apache.commons.net.smtp.SMTPReply; +import org.apache.james.protocols.api.Protocol; +import org.apache.james.protocols.api.handler.ProtocolHandler; +import org.apache.james.protocols.api.handler.WiringException; +import org.apache.james.protocols.lmtp.hook.DeliverToRecipientHook; +import org.apache.james.protocols.netty.NettyServer; +import org.apache.james.protocols.smtp.MailAddress; +import org.apache.james.protocols.smtp.MailEnvelope; +import org.apache.james.protocols.smtp.SMTPProtocol; +import org.apache.james.protocols.smtp.SMTPServerTest; +import org.apache.james.protocols.smtp.SMTPSession; +import org.apache.james.protocols.smtp.TestUtils; +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.junit.Test; + +public class LMTPServerTest extends SMTPServerTest{ + + @Override + protected Protocol createProtocol(ProtocolHandler... handlers) throws WiringException { + LMTPProtocolHandlerChain chain = new LMTPProtocolHandlerChain(); + List<ProtocolHandler> hList = new ArrayList<ProtocolHandler>(); + + for (int i = 0; i < handlers.length; i++) { + ProtocolHandler handler = handlers[i]; + if (handler instanceof MessageHook) { + handler = new MessageHookAdapter((MessageHook) handler); + } + hList.add(handler); + } + chain.addAll(0, hList); + chain.wireExtensibleHandlers(); + return new SMTPProtocol(chain, new LMTPConfigurationImpl()); + } + + + @Override + public void testInvalidNoBracketsEnformance() throws Exception { + // Disable + } + + + @Override + public void testHeloEnforcement() throws Exception { + // Disable + } + + + @Override + public void testHeloEnforcementDisabled() throws Exception { + // Disable + + } + + + @Override + public void testMailWithoutBrackets() throws Exception { + TestMessageHook hook = new TestMessageHook(); + InetSocketAddress address = new InetSocketAddress("127.0.0.1", TestUtils.getFreePort()); + + NettyServer server = null; + try { + server = new NettyServer(createProtocol(hook)); + server.setListenAddresses(address); + server.bind(); + + SMTPClient client = createClient(); + client.connect(address.getAddress().getHostAddress(), address.getPort()); + assertTrue(SMTPReply.isPositiveCompletion(client.getReplyCode())); + + client.helo("localhost"); + assertTrue(SMTPReply.isPositiveCompletion(client.getReplyCode())); + + client.mail(SENDER); + assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode())); + + client.quit(); + assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode())); + client.disconnect(); + + Iterator<MailEnvelope> queued = hook.getQueued().iterator(); + assertFalse(queued.hasNext()); + + } finally { + if (server != null) { + server.unbind(); + } + } + + } + + + @Override + public void testRcptWithoutBrackets() throws Exception { + TestMessageHook hook = new TestMessageHook(); + InetSocketAddress address = new InetSocketAddress("127.0.0.1", TestUtils.getFreePort()); + + NettyServer server = null; + try { + server = new NettyServer(createProtocol(hook)); + server.setListenAddresses(address); + server.bind(); + + SMTPClient client = createClient(); + client.connect(address.getAddress().getHostAddress(), address.getPort()); + assertTrue(SMTPReply.isPositiveCompletion(client.getReplyCode())); + + client.helo("localhost"); + assertTrue(SMTPReply.isPositiveCompletion(client.getReplyCode())); + + client.setSender(SENDER); + assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode())); + + client.rcpt(RCPT1); + assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode())); + client.quit(); + assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode())); + client.disconnect(); + + Iterator<MailEnvelope> queued = hook.getQueued().iterator(); + assertFalse(queued.hasNext()); + + } finally { + if (server != null) { + server.unbind(); + } + } + } + + + @Test + public void testEhloNotSupported() throws Exception { + TestMessageHook hook = new TestMessageHook(); + InetSocketAddress address = new InetSocketAddress("127.0.0.1", TestUtils.getFreePort()); + + NettyServer server = null; + try { + server = new NettyServer(createProtocol(hook)); + server.setListenAddresses(address); + server.bind(); + + LMTPClient client = (LMTPClient) createClient(); + client.connect(address.getAddress().getHostAddress(), address.getPort()); + assertTrue(SMTPReply.isPositiveCompletion(client.getReplyCode())); + + client.sendCommand("HELO localhost"); + assertTrue(SMTPReply.isNegativePermanent(client.getReplyCode())); + + client.quit(); + assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode())); + client.disconnect(); + + Iterator<MailEnvelope> queued = hook.getQueued().iterator(); + assertFalse(queued.hasNext()); + + } finally { + if (server != null) { + server.unbind(); + } + } + } + + @Test + public void testDeliveryHook() throws Exception { + TestDeliverHook deliverHook = new TestDeliverHook(); + + InetSocketAddress address = new InetSocketAddress("127.0.0.1", TestUtils.getFreePort()); + + NettyServer server = null; + try { + server = new NettyServer(createProtocol(deliverHook)); + server.setListenAddresses(address); + server.bind(); + + LMTPClient client = (LMTPClient) createClient(); + client.connect(address.getAddress().getHostAddress(), address.getPort()); + assertTrue(SMTPReply.isPositiveCompletion(client.getReplyCode())); + + client.helo("localhost"); + assertTrue(SMTPReply.isPositiveCompletion(client.getReplyCode())); + + client.setSender(SENDER); + assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode())); + + client.addRecipient(RCPT1); + assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode())); + + client.addRecipient(RCPT2); + assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode())); + + assertTrue(client.sendShortMessageData(MSG1)); + + int[] replies = client.getReplies(); + + assertEquals("Expected two replies",2, replies.length); + + assertTrue(SMTPReply.isNegativePermanent(replies[0])); + assertTrue(SMTPReply.isPositiveCompletion(replies[1])); + + client.quit(); + assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode())); + client.disconnect(); + + Iterator<MailEnvelope> queued = deliverHook.getDelivered().iterator(); + assertTrue(queued.hasNext()); + + MailEnvelope env = queued.next(); + checkEnvelope(env, SENDER, Arrays.asList(RCPT1, RCPT2), MSG1); + assertFalse(queued.hasNext()); + + } finally { + if (server != null) { + server.unbind(); + } + } + + } + + protected SMTPClient createClient() { + return new LMTPClient(); + } + + private final class LMTPClient extends SMTPClient { + + private final List<Integer> replies = new ArrayList<Integer>(); + private int rcptCount = 0; + + + @Override + public boolean addRecipient(String address) throws IOException { + boolean ok = super.addRecipient(address); + if (ok) { + rcptCount++; + } + return ok; + } + + @Override + public boolean addRecipient(RelayPath path) throws IOException { + boolean ok = super.addRecipient(path); + if (ok) { + rcptCount++; + } + return ok; + } + + /** + * Issue the LHLO command + */ + @Override + public int helo(String hostname) throws IOException { + return sendCommand("LHLO", hostname); + } + + public int[] getReplies() throws IOException + { + int[] codes = new int[replies.size()]; + for (int i = 0; i < codes.length; i++) { + codes[i] = replies.remove(0); + } + return codes; + } + + @Override + public boolean completePendingCommand() throws IOException + { + for (int i = 0; i < rcptCount; i++) { + replies.add(getReply()); + } + + for (int code: replies) { + if (SMTPReply.isPositiveCompletion(code)) { + return true; + } + } + return false; + } + + + } + + private final class MessageHookAdapter implements DeliverToRecipientHook { + + private final MessageHook hook; + private HookResult result; + + public MessageHookAdapter(MessageHook hook) { + this.hook = hook; + } + + @Override + public HookResult deliver(SMTPSession session, MailAddress recipient, MailEnvelope envelope) { + if (result == null) { + result = hook.onMessage(session, envelope); + } + return result; + } + + } + + private final class TestDeliverHook implements DeliverToRecipientHook { + + private final List<MailEnvelope> delivered = new ArrayList<MailEnvelope>(); + + @Override + public HookResult deliver(SMTPSession session, MailAddress recipient, MailEnvelope envelope) { + if (RCPT1.equals(recipient.toString())) { + return new HookResult(HookReturnCode.DENY); + } else { + delivered.add(envelope); + return new HookResult(HookReturnCode.OK); + } + } + + public List<MailEnvelope> getDelivered() { + return delivered; + } + }; + +} Modified: james/protocols/trunk/pom.xml URL: http://svn.apache.org/viewvc/james/protocols/trunk/pom.xml?rev=1222653&r1=1222652&r2=1222653&view=diff ============================================================================== --- james/protocols/trunk/pom.xml (original) +++ james/protocols/trunk/pom.xml Fri Dec 23 12:07:09 2011 @@ -76,6 +76,12 @@ </dependency> <dependency> <groupId>org.apache.james.protocols</groupId> + <artifactId>protocols-smtp</artifactId> + <type>test-jar</type> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>org.apache.james.protocols</groupId> <artifactId>protocols-api</artifactId> <version>${project.version}</version> </dependency> Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPProtocol.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPProtocol.java?rev=1222653&r1=1222652&r2=1222653&view=diff ============================================================================== --- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPProtocol.java (original) +++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPProtocol.java Fri Dec 23 12:07:09 2011 @@ -39,7 +39,7 @@ public class SMTPProtocol extends Protoc @Override public ProtocolSession newSession(ProtocolTransport transport) { - return new SMTPSessionImpl(logger, transport, (SMTPConfiguration) config); + return new SMTPSessionImpl(logger, transport, (SMTPConfiguration) getConfiguration()); } } Modified: james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/SMTPServerTest.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/SMTPServerTest.java?rev=1222653&r1=1222652&r2=1222653&view=diff ============================================================================== --- james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/SMTPServerTest.java (original) +++ james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/SMTPServerTest.java Fri Dec 23 12:07:09 2011 @@ -30,9 +30,12 @@ import java.util.concurrent.atomic.Atomi import org.apache.commons.net.smtp.SMTPClient; import org.apache.commons.net.smtp.SMTPReply; +import org.apache.james.protocols.api.Protocol; import org.apache.james.protocols.api.Response; import org.apache.james.protocols.api.handler.ConnectHandler; import org.apache.james.protocols.api.handler.DisconnectHandler; +import org.apache.james.protocols.api.handler.ProtocolHandler; +import org.apache.james.protocols.api.handler.WiringException; import org.apache.james.protocols.netty.NettyServer; import org.apache.james.protocols.smtp.hook.HeloHook; import org.apache.james.protocols.smtp.hook.HookResult; @@ -45,10 +48,10 @@ import static org.junit.Assert.*; public class SMTPServerTest { - private final static String MSG1 = "Subject: Testmessage\r\n\r\nThis is a message"; - private final static String SENDER = "me@sender"; - private final static String RCPT1 ="rpct1@domain"; - private final static String RCPT2 ="rpct2@domain"; + protected final static String MSG1 = "Subject: Testmessage\r\n\r\nThis is a message"; + protected final static String SENDER = "me@sender"; + protected final static String RCPT1 ="rpct1@domain"; + protected final static String RCPT2 ="rpct2@domain"; @Test public void testSimpleDelivery() throws Exception { @@ -57,11 +60,11 @@ public class SMTPServerTest { NettyServer server = null; try { - server = new NettyServer(new SMTPProtocol(new SMTPProtocolHandlerChain(hook), new SMTPConfigurationImpl())); + server = new NettyServer(createProtocol(hook)); server.setListenAddresses(address); server.bind(); - SMTPClient client = new SMTPClient(); + SMTPClient client = createClient(); client.connect(address.getAddress().getHostAddress(), address.getPort()); assertTrue(SMTPReply.isPositiveCompletion(client.getReplyCode())); @@ -106,11 +109,11 @@ public class SMTPServerTest { NettyServer server = null; try { - server = new NettyServer(new SMTPProtocol(new SMTPProtocolHandlerChain(hook), new SMTPConfigurationImpl())); + server = new NettyServer(createProtocol(hook)); server.setListenAddresses(address); server.bind(); - SMTPClient client = new SMTPClient(); + SMTPClient client = createClient(); client.connect(address.getAddress().getHostAddress(), address.getPort()); assertTrue(SMTPReply.isPositiveCompletion(client.getReplyCode())); @@ -139,11 +142,11 @@ public class SMTPServerTest { NettyServer server = null; try { - server = new NettyServer(new SMTPProtocol(new SMTPProtocolHandlerChain(hook), new SMTPConfigurationImpl())); + server = new NettyServer(createProtocol(hook)); server.setListenAddresses(address); server.bind(); - SMTPClient client = new SMTPClient(); + SMTPClient client = createClient(); client.connect(address.getAddress().getHostAddress(), address.getPort()); assertTrue(SMTPReply.isPositiveCompletion(client.getReplyCode())); @@ -167,17 +170,17 @@ public class SMTPServerTest { @Test - public void testInvalidMailCommandSyntax() throws Exception { + public void testMailWithoutBrackets() throws Exception { TestMessageHook hook = new TestMessageHook(); InetSocketAddress address = new InetSocketAddress("127.0.0.1", TestUtils.getFreePort()); NettyServer server = null; try { - server = new NettyServer(new SMTPProtocol(new SMTPProtocolHandlerChain(hook), new SMTPConfigurationImpl())); + server = new NettyServer(createProtocol(hook)); server.setListenAddresses(address); server.bind(); - SMTPClient client = new SMTPClient(); + SMTPClient client = createClient(); client.connect(address.getAddress().getHostAddress(), address.getPort()); assertTrue(SMTPReply.isPositiveCompletion(client.getReplyCode())); @@ -216,11 +219,11 @@ public class SMTPServerTest { NettyServer server = null; try { - server = new NettyServer(new SMTPProtocol(new SMTPProtocolHandlerChain(hook), new SMTPConfigurationImpl())); + server = new NettyServer(createProtocol(hook)); server.setListenAddresses(address); server.bind(); - SMTPClient client = new SMTPClient(); + SMTPClient client = createClient(); client.connect(address.getAddress().getHostAddress(), address.getPort()); assertTrue(SMTPReply.isPositiveCompletion(client.getReplyCode())); @@ -244,17 +247,17 @@ public class SMTPServerTest { @Test - public void testInvalidRcptCommandSyntax() throws Exception { + public void testRcptWithoutBrackets() throws Exception { TestMessageHook hook = new TestMessageHook(); InetSocketAddress address = new InetSocketAddress("127.0.0.1", TestUtils.getFreePort()); NettyServer server = null; try { - server = new NettyServer(new SMTPProtocol(new SMTPProtocolHandlerChain(hook), new SMTPConfigurationImpl())); + server = new NettyServer(createProtocol(hook)); server.setListenAddresses(address); server.bind(); - SMTPClient client = new SMTPClient(); + SMTPClient client = createClient(); client.connect(address.getAddress().getHostAddress(), address.getPort()); assertTrue(SMTPReply.isPositiveCompletion(client.getReplyCode())); @@ -292,13 +295,13 @@ public class SMTPServerTest { NettyServer server = null; try { - SMTPConfigurationImpl config = new SMTPConfigurationImpl(); - config.setUseAddressBracketsEnforcement(false); - server = new NettyServer(new SMTPProtocol(new SMTPProtocolHandlerChain(hook), config)); + Protocol protocol = createProtocol(hook); + ((SMTPConfigurationImpl) protocol.getConfiguration()).setUseAddressBracketsEnforcement(false); + server = new NettyServer(protocol); server.setListenAddresses(address); server.bind(); - SMTPClient client = new SMTPClient(); + SMTPClient client = createClient(); client.connect(address.getAddress().getHostAddress(), address.getPort()); assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode())); @@ -336,12 +339,11 @@ public class SMTPServerTest { NettyServer server = null; try { - SMTPConfigurationImpl config = new SMTPConfigurationImpl(); - server = new NettyServer(new SMTPProtocol(new SMTPProtocolHandlerChain(hook), config)); + server = new NettyServer(createProtocol(hook)); server.setListenAddresses(address); server.bind(); - SMTPClient client = new SMTPClient(); + SMTPClient client = createClient(); client.connect(address.getAddress().getHostAddress(), address.getPort()); assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode())); @@ -372,13 +374,13 @@ public class SMTPServerTest { NettyServer server = null; try { - SMTPConfigurationImpl config = new SMTPConfigurationImpl(); - config.setHeloEhloEnforcement(false); - server = new NettyServer(new SMTPProtocol(new SMTPProtocolHandlerChain(hook), config)); + Protocol protocol = createProtocol(hook); + ((SMTPConfigurationImpl) protocol.getConfiguration()).setHeloEhloEnforcement(false); + server = new NettyServer(protocol); server.setListenAddresses(address); server.bind(); - SMTPClient client = new SMTPClient(); + SMTPClient client = createClient(); client.connect(address.getAddress().getHostAddress(), address.getPort()); assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode())); @@ -416,12 +418,11 @@ public class SMTPServerTest { NettyServer server = null; try { - SMTPConfigurationImpl config = new SMTPConfigurationImpl(); - server = new NettyServer(new SMTPProtocol(new SMTPProtocolHandlerChain(hook), config)); + server = new NettyServer(createProtocol(hook)); server.setListenAddresses(address); server.bind(); - SMTPClient client = new SMTPClient(); + SMTPClient client = createClient(); client.connect(address.getAddress().getHostAddress(), address.getPort()); assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode())); @@ -456,12 +457,11 @@ public class SMTPServerTest { NettyServer server = null; try { - SMTPConfigurationImpl config = new SMTPConfigurationImpl(); - server = new NettyServer(new SMTPProtocol(new SMTPProtocolHandlerChain(hook), config)); + server = new NettyServer(createProtocol(hook)); server.setListenAddresses(address); server.bind(); - SMTPClient client = new SMTPClient(); + SMTPClient client = createClient(); client.connect(address.getAddress().getHostAddress(), address.getPort()); assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode())); @@ -495,12 +495,11 @@ public class SMTPServerTest { NettyServer server = null; try { - SMTPConfigurationImpl config = new SMTPConfigurationImpl(); - server = new NettyServer(new SMTPProtocol(new SMTPProtocolHandlerChain(hook), config)); + server = new NettyServer(createProtocol(hook)); server.setListenAddresses(address); server.bind(); - SMTPClient client = new SMTPClient(); + SMTPClient client = createClient(); client.connect(address.getAddress().getHostAddress(), address.getPort()); assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode())); @@ -537,12 +536,11 @@ public class SMTPServerTest { NettyServer server = null; try { - SMTPConfigurationImpl config = new SMTPConfigurationImpl(); - server = new NettyServer(new SMTPProtocol(new SMTPProtocolHandlerChain(hook), config)); + server = new NettyServer(createProtocol(hook)); server.setListenAddresses(address); server.bind(); - SMTPClient client = new SMTPClient(); + SMTPClient client = createClient(); client.connect(address.getAddress().getHostAddress(), address.getPort()); assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode())); @@ -585,12 +583,11 @@ public class SMTPServerTest { NettyServer server = null; try { - SMTPConfigurationImpl config = new SMTPConfigurationImpl(); - server = new NettyServer(new SMTPProtocol(new SMTPProtocolHandlerChain(hook), config)); + server = new NettyServer(createProtocol(hook)); server.setListenAddresses(address); server.bind(); - SMTPClient client = new SMTPClient(); + SMTPClient client = createClient(); client.connect(address.getAddress().getHostAddress(), address.getPort()); assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode())); @@ -641,12 +638,11 @@ public class SMTPServerTest { NettyServer server = null; try { - SMTPConfigurationImpl config = new SMTPConfigurationImpl(); - server = new NettyServer(new SMTPProtocol(new SMTPProtocolHandlerChain(hook), config)); + server = new NettyServer(createProtocol(hook)); server.setListenAddresses(address); server.bind(); - SMTPClient client = new SMTPClient(); + SMTPClient client = createClient(); client.connect(address.getAddress().getHostAddress(), address.getPort()); assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode())); @@ -695,12 +691,11 @@ public class SMTPServerTest { NettyServer server = null; try { - SMTPConfigurationImpl config = new SMTPConfigurationImpl(); - server = new NettyServer(new SMTPProtocol(new SMTPProtocolHandlerChain(hook, testHook), config)); + server = new NettyServer(createProtocol(hook, testHook)); server.setListenAddresses(address); server.bind(); - SMTPClient client = new SMTPClient(); + SMTPClient client = createClient(); client.connect(address.getAddress().getHostAddress(), address.getPort()); assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode())); @@ -752,12 +747,11 @@ public class SMTPServerTest { NettyServer server = null; try { - SMTPConfigurationImpl config = new SMTPConfigurationImpl(); - server = new NettyServer(new SMTPProtocol(new SMTPProtocolHandlerChain(hook, testHook), config)); + server = new NettyServer(createProtocol(hook, testHook)); server.setListenAddresses(address); server.bind(); - SMTPClient client = new SMTPClient(); + SMTPClient client = createClient(); client.connect(address.getAddress().getHostAddress(), address.getPort()); assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode())); @@ -807,16 +801,12 @@ public class SMTPServerTest { NettyServer server = null; try { - SMTPConfigurationImpl config = new SMTPConfigurationImpl(); - SMTPProtocolHandlerChain chain = new SMTPProtocolHandlerChain(); - chain.add(0, connectHandler); - chain.wireExtensibleHandlers(); - server = new NettyServer(new SMTPProtocol(chain, config)); + server = new NettyServer(createProtocol(connectHandler)); server.setListenAddresses(address); server.bind(); - SMTPClient client = new SMTPClient(); + SMTPClient client = createClient(); client.connect(address.getAddress().getHostAddress(), address.getPort()); assertTrue("Reply="+ client.getReplyString(), SMTPReply.isNegativePermanent(client.getReplyCode())); @@ -847,16 +837,11 @@ public class SMTPServerTest { NettyServer server = null; try { - SMTPConfigurationImpl config = new SMTPConfigurationImpl(); - SMTPProtocolHandlerChain chain = new SMTPProtocolHandlerChain(); - chain.add(0, connectHandler); - chain.wireExtensibleHandlers(); - - server = new NettyServer(new SMTPProtocol(chain, config)); + server = new NettyServer(createProtocol(connectHandler)); server.setListenAddresses(address); server.bind(); - SMTPClient client = new SMTPClient(); + SMTPClient client = createClient(); client.connect(address.getAddress().getHostAddress(), address.getPort()); assertTrue("Reply="+ client.getReplyString(), SMTPReply.isNegativeTransient(client.getReplyCode())); @@ -888,16 +873,11 @@ public class SMTPServerTest { NettyServer server = null; try { - SMTPConfigurationImpl config = new SMTPConfigurationImpl(); - SMTPProtocolHandlerChain chain = new SMTPProtocolHandlerChain(); - chain.add(0, handler); - chain.wireExtensibleHandlers(); - - server = new NettyServer(new SMTPProtocol(chain, config)); + server = new NettyServer(createProtocol(handler)); server.setListenAddresses(address); server.bind(); - SMTPClient client = new SMTPClient(); + SMTPClient client = createClient(); client.connect(address.getAddress().getHostAddress(), address.getPort()); assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode())); @@ -915,7 +895,18 @@ public class SMTPServerTest { } - private static void checkEnvelope(MailEnvelope env, String sender, List<String> recipients, String msg) throws IOException { + protected SMTPClient createClient() { + return new SMTPClient(); + } + + protected Protocol createProtocol(ProtocolHandler... handlers) throws WiringException { + SMTPProtocolHandlerChain chain = new SMTPProtocolHandlerChain(); + chain.addAll(0, Arrays.asList(handlers)); + chain.wireExtensibleHandlers(); + return new SMTPProtocol(chain, new SMTPConfigurationImpl()); + } + + protected static void checkEnvelope(MailEnvelope env, String sender, List<String> recipients, String msg) throws IOException { assertEquals(sender, env.getSender().toString()); List<MailAddress> envRecipients = env.getRecipients(); @@ -956,7 +947,7 @@ public class SMTPServerTest { } - private final class TestMessageHook implements MessageHook { + public final class TestMessageHook implements MessageHook { private final List<MailEnvelope> queued = new ArrayList<MailEnvelope>(); --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org