117f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair/*
217f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * Copyright 2007 the original author or authors.
317f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair *
417f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * Licensed under the Apache License, Version 2.0 (the "License");
517f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * you may not use this file except in compliance with the License.
617f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * You may obtain a copy of the License at
717f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair *
817f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair *      http://www.apache.org/licenses/LICENSE-2.0
917f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair *
1017f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * Unless required by applicable law or agreed to in writing, software
1117f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * distributed under the License is distributed on an "AS IS" BASIS,
1217f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1317f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * See the License for the specific language governing permissions and
1417f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * limitations under the License.
1517f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair */
1617f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismairpackage org.mockftpserver.core.command;
1717f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair
1817f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismairimport java.util.ListResourceBundle;
1917f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismairimport java.util.ResourceBundle;
2017f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair
2117f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismairimport org.apache.log4j.Logger;
2217f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismairimport org.easymock.MockControl;
2317f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismairimport org.mockftpserver.core.session.Session;
2417f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismairimport org.mockftpserver.core.util.AssertFailedException;
2517f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismairimport org.mockftpserver.stub.command.AbstractStubCommandHandler;
2617f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismairimport org.mockftpserver.test.AbstractTest;
2717f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair
2817f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair/**
2917f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * Tests for the AbstractCommandHandler class. The class name is prefixed with an underscore
3017f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * so that it is not filtered out by Maven's Surefire test plugin.
3117f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair *
3217f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * @version $Revision$ - $Date$
3317f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair *
3417f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * @author Chris Mair
3517f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair */
3617f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismairpublic final class _AbstractCommandHandlerTest extends AbstractTest {
3717f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair
3817f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    private static final Logger LOG = Logger.getLogger(_AbstractCommandHandlerTest.class);
3917f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    private static final String COMMAND_NAME = "abc";
4017f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    private static final Object ARG = "123";
4117f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    private static final Object[] ARGS = { ARG };
4217f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    private static final Command COMMAND = new Command(COMMAND_NAME, EMPTY);
4317f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    private static final Command COMMAND_WITH_ARGS = new Command(COMMAND_NAME, EMPTY);
4417f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    private static final int REPLY_CODE1 = 777;
4517f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    private static final int REPLY_CODE2 = 888;
4617f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    private static final int REPLY_CODE3 = 999;
4717f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    private static final String REPLY_TEXT1 = "reply1 ... abcdef";
4817f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    private static final String REPLY_TEXT2 = "abc {0} def";
4917f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    private static final String REPLY_TEXT2_FORMATTED = "abc 123 def";
5017f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    private static final String OVERRIDE_REPLY_TEXT = "overridden reply ... abcdef";
5117f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    private static final String MESSAGE_KEY = "key.123";
5217f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    private static final String MESSAGE_TEXT = "message.123";
5317f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair
5417f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    private AbstractCommandHandler commandHandler;
5517f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    private Session session;
5617f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    private ResourceBundle replyTextBundle;
5717f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair
5817f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    /**
5917f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair     * Test the handleCommand(Command,Session) method
6017f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair     */
6117f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    public void testHandleCommand() throws Exception {
6217f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        assertEquals("before", 0, commandHandler.numberOfInvocations());
6317f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        commandHandler.handleCommand(COMMAND, session);
6417f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        assertEquals("after", 1, commandHandler.numberOfInvocations());
6517f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        assertTrue("locked", commandHandler.getInvocation(0).isLocked());
6617f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    }
6717f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair
6817f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    /**
6917f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair     * Test the handleCommand(Command,Session) method, passing in a null Command
7017f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair     */
7117f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    public void testHandleCommand_NullCommand() throws Exception {
7217f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        try {
7317f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair            commandHandler.handleCommand(null, session);
7417f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair            fail("Expected AssertFailedException");
7517f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        }
7617f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        catch (AssertFailedException expected) {
7717f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair            LOG.info("Expected: " + expected);
7817f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        }
7917f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    }
8017f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair
8117f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    /**
8217f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair     * Test the handleCommand(Command,Session) method, passing in a null Session
8317f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair     */
8417f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    public void testHandleCommand_NullSession() throws Exception {
8517f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        try {
8617f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair            commandHandler.handleCommand(COMMAND, null);
8717f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair            fail("Expected AssertFailedException");
8817f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        }
8917f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        catch (AssertFailedException expected) {
9017f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair            LOG.info("Expected: " + expected);
9117f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        }
9217f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    }
9317f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair
9417f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    /**
9517f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair     * Test the numberOfInvocations(), addInvocationRecord() and clearInvocationRecord() methods
9617f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair     */
9717f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    public void testInvocationHistory() throws Exception {
9817f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        control(session).expectAndDefaultReturn(session.getClientHost(), DEFAULT_HOST);
9917f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        replay(session);
10017f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair
10117f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        assertEquals("none", 0, commandHandler.numberOfInvocations());
10217f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        commandHandler.handleCommand(COMMAND, session);
10317f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        assertEquals("1", 1, commandHandler.numberOfInvocations());
10417f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        commandHandler.handleCommand(COMMAND, session);
10517f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        assertEquals("2", 2, commandHandler.numberOfInvocations());
10617f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        commandHandler.clearInvocations();
10717f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        assertEquals("cleared", 0, commandHandler.numberOfInvocations());
10817f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    }
10917f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair
11017f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    /**
11117f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair     * Test the getInvocation() method
11217f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair     * @throws Exception
11317f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair     */
11417f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    public void testGetInvocation() throws Exception {
11517f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        control(session).expectAndDefaultReturn(session.getClientHost(), DEFAULT_HOST);
11617f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        replay(session);
11717f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair
11817f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        commandHandler.handleCommand(COMMAND, session);
11917f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        commandHandler.handleCommand(COMMAND_WITH_ARGS, session);
12017f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        assertSame("1", COMMAND, commandHandler.getInvocation(0).getCommand());
12117f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        assertSame("2", COMMAND_WITH_ARGS, commandHandler.getInvocation(1).getCommand());
12217f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    }
12317f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair
12417f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    /**
12517f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair     * Test the getInvocation() method, passing in an invalid index
12617f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair     */
12717f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    public void testGetInvocation_IndexOutOfBounds() throws Exception {
12817f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        commandHandler.handleCommand(COMMAND, session);
12917f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        try {
13017f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair            commandHandler.getInvocation(2);
13117f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair            fail("Expected IndexOutOfBoundsException");
13217f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        }
13317f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        catch (IndexOutOfBoundsException expected) {
13417f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair            LOG.info("Expected: " + expected);
13517f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        }
13617f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    }
13717f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair
13817f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    /**
13917f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair     * Test the quotes utility method
14017f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair     */
14117f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    public void testQuotes() {
14217f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        assertEquals("abc", "\"abc\"", AbstractStubCommandHandler.quotes("abc"));
14317f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        assertEquals("<empty>", "\"\"", AbstractStubCommandHandler.quotes(""));
14417f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    }
14517f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair
14617f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    /**
14717f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair     * Test the quotes utility method, passing in a null
14817f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair     */
14917f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    public void testQuotes_Null() {
15017f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        try {
15117f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair            AbstractStubCommandHandler.quotes(null);
15217f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair            fail("Expected AssertFailedException");
15317f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        }
15417f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        catch (AssertFailedException expected) {
15517f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair            LOG.info("Expected: " + expected);
15617f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        }
15717f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    }
15817f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair
15917f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    /**
16017f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair     * Test the assertValidReplyCode() method
16117f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair     */
16217f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    public void testAssertValidReplyCode() {
16317f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        // These are valid, so expect no exceptions
16417f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        commandHandler.assertValidReplyCode(1);
16517f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        commandHandler.assertValidReplyCode(100);
16617f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair
16717f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        // These are invalid
16817f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        testAssertValidReplyCodeWithInvalid(0);
16917f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        testAssertValidReplyCodeWithInvalid(-1);
17017f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    }
17117f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair
17217f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    /**
17317f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair     * Test the assertValidReplyCode() method , passing in an invalid replyCode value
17417f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair     */
17517f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    private void testAssertValidReplyCodeWithInvalid(int invalidReplyCode) {
17617f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        try {
17717f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair            commandHandler.assertValidReplyCode(invalidReplyCode);
17817f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair            fail("Expected AssertFailedException");
17917f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        }
18017f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        catch (AssertFailedException expected) {
18117f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair            LOG.info("Expected: " + expected);
18217f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        }
18317f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    }
18417f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair
18517f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    /**
18617f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair     * Test the sendReply() method, when no message arguments are specified
18717f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair     */
18817f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    public void testSendReply() {
18917f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        session.sendReply(REPLY_CODE1, REPLY_TEXT1);
19017f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        session.sendReply(REPLY_CODE1, MESSAGE_TEXT);
19117f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        session.sendReply(REPLY_CODE1, OVERRIDE_REPLY_TEXT);
19217f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        session.sendReply(REPLY_CODE3, null);
19317f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        replay(session);
19417f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair
19517f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        commandHandler.sendReply(session, REPLY_CODE1, null, null, null);
19617f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        commandHandler.sendReply(session, REPLY_CODE1, MESSAGE_KEY, null, null);
19717f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        commandHandler.sendReply(session, REPLY_CODE1, MESSAGE_KEY, OVERRIDE_REPLY_TEXT, null);
19817f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        commandHandler.sendReply(session, REPLY_CODE3, null, null, null);
19917f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair
20017f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        verify(session);
20117f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    }
20217f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair
20317f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    /**
20417f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair     * Test the sendReply() method, passing in message arguments
20517f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair     */
20617f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    public void testSendReply_WithMessageArguments() {
20717f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        session.sendReply(REPLY_CODE1, REPLY_TEXT2_FORMATTED);
20817f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        replay(session);
20917f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair
21017f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        commandHandler.sendReply(session, REPLY_CODE1, null, REPLY_TEXT2, ARGS);
21117f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair
21217f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        verify(session);
21317f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    }
21417f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair
21517f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    /**
21617f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair     * Test the sendReply() method, passing in a null Session
21717f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair     */
21817f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    public void testSendReply_NullSession() {
21917f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        try {
22017f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair            commandHandler.sendReply(null, REPLY_CODE1, REPLY_TEXT1, null, null);
22117f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair            fail("Expected AssertFailedException");
22217f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        }
22317f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        catch (AssertFailedException expected) {
22417f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair            LOG.info("Expected: " + expected);
22517f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        }
22617f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    }
22717f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair
22817f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    /**
22917f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair     * Test the sendReply() method, passing in an invalid replyCode
23017f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair     */
23117f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    public void testSendReply_InvalidReplyCode() {
23217f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        try {
23317f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair            commandHandler.sendReply(session, 0, REPLY_TEXT1, null, null);
23417f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair            fail("Expected AssertFailedException");
23517f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        }
23617f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        catch (AssertFailedException expected) {
23717f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair            LOG.info("Expected: " + expected);
23817f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        }
23917f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    }
24017f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair
24117f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    //-------------------------------------------------------------------------
24217f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    // Test setup
24317f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    //-------------------------------------------------------------------------
24417f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair
24517f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    /**
24617f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair     * Perform initialization before each test
24717f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair     * @see org.mockftpserver.test.AbstractTest#setUp()
24817f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair     */
24917f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    protected void setUp() throws Exception {
25017f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        super.setUp();
25117f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        session = (Session) createMock(Session.class);
25217f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        control(session).setDefaultMatcher(MockControl.ARRAY_MATCHER);
25317f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        commandHandler = new AbstractCommandHandler() {
25417f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair            public void handleCommand(Command command, Session session, InvocationRecord invocationRecord) throws Exception {
25517f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair            }
25617f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        };
25717f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        replyTextBundle = new ListResourceBundle() {
25817f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair            protected Object[][] getContents() {
25917f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair                return new Object[][] {
26017f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair                        { Integer.toString(REPLY_CODE1), REPLY_TEXT1 },
26117f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair                        { Integer.toString(REPLY_CODE2), REPLY_TEXT2 },
26217f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair                        { MESSAGE_KEY, MESSAGE_TEXT }
26317f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair                };
26417f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair            }
26517f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        };
26617f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair        commandHandler.setReplyTextBundle(replyTextBundle);
26717f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair    }
26817f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair
26917f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair}
270