1ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair/*
2ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair * Copyright 2007 the original author or authors.
3ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair *
4ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair * Licensed under the Apache License, Version 2.0 (the "License");
5ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair * you may not use this file except in compliance with the License.
6ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair * You may obtain a copy of the License at
7ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair *
8ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair *      http://www.apache.org/licenses/LICENSE-2.0
9ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair *
10ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair * Unless required by applicable law or agreed to in writing, software
11ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair * distributed under the License is distributed on an "AS IS" BASIS,
12ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair * See the License for the specific language governing permissions and
14ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair * limitations under the License.
15ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair */
16ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismairpackage org.mockftpserver.core.command;
17ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair
18ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismairimport java.util.ListResourceBundle;
19ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismairimport java.util.ResourceBundle;
20ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair
21ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismairimport org.apache.log4j.Logger;
22ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismairimport org.easymock.MockControl;
23ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismairimport org.mockftpserver.core.session.Session;
24ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismairimport org.mockftpserver.core.util.AssertFailedException;
25ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismairimport org.mockftpserver.stub.command.AbstractStubCommandHandler;
26ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismairimport org.mockftpserver.test.AbstractTest;
27ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair
28ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair/**
29ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair * Tests for the AbstractCommandHandler class. The class name is prefixed with an underscore
30ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair * so that it is not filtered out by Maven's Surefire test plugin.
31ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair *
32ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair * @version $Revision$ - $Date$
33ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair *
34ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair * @author Chris Mair
35ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair */
36ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismairpublic final class _AbstractCommandHandlerTest extends AbstractTest {
37ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair
38ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    private static final Logger LOG = Logger.getLogger(_AbstractCommandHandlerTest.class);
39ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    private static final String COMMAND_NAME = "abc";
40ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    private static final Object ARG = "123";
41ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    private static final Object[] ARGS = { ARG };
42ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    private static final Command COMMAND = new Command(COMMAND_NAME, EMPTY);
43ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    private static final Command COMMAND_WITH_ARGS = new Command(COMMAND_NAME, EMPTY);
44ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    private static final int REPLY_CODE1 = 777;
45ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    private static final int REPLY_CODE2 = 888;
46ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    private static final int REPLY_CODE3 = 999;
47ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    private static final String REPLY_TEXT1 = "reply1 ... abcdef";
48ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    private static final String REPLY_TEXT2 = "abc {0} def";
49ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    private static final String REPLY_TEXT2_FORMATTED = "abc 123 def";
50ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    private static final String OVERRIDE_REPLY_TEXT = "overridden reply ... abcdef";
51ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    private static final String MESSAGE_KEY = "key.123";
52ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    private static final String MESSAGE_TEXT = "message.123";
53ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair
54ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    private AbstractCommandHandler commandHandler;
55ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    private Session session;
56ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    private ResourceBundle replyTextBundle;
57ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair
58ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    /**
59ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair     * Test the handleCommand(Command,Session) method
60ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair     */
61ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    public void testHandleCommand() throws Exception {
62ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        assertEquals("before", 0, commandHandler.numberOfInvocations());
63ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        commandHandler.handleCommand(COMMAND, session);
64ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        assertEquals("after", 1, commandHandler.numberOfInvocations());
65ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        assertTrue("locked", commandHandler.getInvocation(0).isLocked());
66ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    }
67ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair
68ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    /**
69ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair     * Test the handleCommand(Command,Session) method, passing in a null Command
70ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair     */
71ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    public void testHandleCommand_NullCommand() throws Exception {
72ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        try {
73ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair            commandHandler.handleCommand(null, session);
74ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair            fail("Expected AssertFailedException");
75ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        }
76ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        catch (AssertFailedException expected) {
77ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair            LOG.info("Expected: " + expected);
78ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        }
79ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    }
80ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair
81ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    /**
82ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair     * Test the handleCommand(Command,Session) method, passing in a null Session
83ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair     */
84ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    public void testHandleCommand_NullSession() throws Exception {
85ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        try {
86ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair            commandHandler.handleCommand(COMMAND, null);
87ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair            fail("Expected AssertFailedException");
88ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        }
89ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        catch (AssertFailedException expected) {
90ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair            LOG.info("Expected: " + expected);
91ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        }
92ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    }
93ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair
94ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    /**
95ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair     * Test the numberOfInvocations(), addInvocationRecord() and clearInvocationRecord() methods
96ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair     */
97ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    public void testInvocationHistory() throws Exception {
98ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        control(session).expectAndDefaultReturn(session.getClientHost(), DEFAULT_HOST);
99ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        replay(session);
100ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair
101ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        assertEquals("none", 0, commandHandler.numberOfInvocations());
102ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        commandHandler.handleCommand(COMMAND, session);
103ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        assertEquals("1", 1, commandHandler.numberOfInvocations());
104ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        commandHandler.handleCommand(COMMAND, session);
105ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        assertEquals("2", 2, commandHandler.numberOfInvocations());
106ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        commandHandler.clearInvocations();
107ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        assertEquals("cleared", 0, commandHandler.numberOfInvocations());
108ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    }
109ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair
110ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    /**
111ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair     * Test the getInvocation() method
112ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair     * @throws Exception
113ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair     */
114ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    public void testGetInvocation() throws Exception {
115ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        control(session).expectAndDefaultReturn(session.getClientHost(), DEFAULT_HOST);
116ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        replay(session);
117ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair
118ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        commandHandler.handleCommand(COMMAND, session);
119ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        commandHandler.handleCommand(COMMAND_WITH_ARGS, session);
120ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        assertSame("1", COMMAND, commandHandler.getInvocation(0).getCommand());
121ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        assertSame("2", COMMAND_WITH_ARGS, commandHandler.getInvocation(1).getCommand());
122ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    }
123ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair
124ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    /**
125ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair     * Test the getInvocation() method, passing in an invalid index
126ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair     */
127ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    public void testGetInvocation_IndexOutOfBounds() throws Exception {
128ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        commandHandler.handleCommand(COMMAND, session);
129ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        try {
130ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair            commandHandler.getInvocation(2);
131ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair            fail("Expected IndexOutOfBoundsException");
132ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        }
133ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        catch (IndexOutOfBoundsException expected) {
134ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair            LOG.info("Expected: " + expected);
135ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        }
136ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    }
137ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair
138ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    /**
139ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair     * Test the quotes utility method
140ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair     */
141ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    public void testQuotes() {
142ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        assertEquals("abc", "\"abc\"", AbstractStubCommandHandler.quotes("abc"));
143ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        assertEquals("<empty>", "\"\"", AbstractStubCommandHandler.quotes(""));
144ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    }
145ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair
146ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    /**
147ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair     * Test the quotes utility method, passing in a null
148ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair     */
149ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    public void testQuotes_Null() {
150ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        try {
151ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair            AbstractStubCommandHandler.quotes(null);
152ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair            fail("Expected AssertFailedException");
153ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        }
154ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        catch (AssertFailedException expected) {
155ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair            LOG.info("Expected: " + expected);
156ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        }
157ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    }
158ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair
159ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    /**
160ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair     * Test the assertValidReplyCode() method
161ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair     */
162ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    public void testAssertValidReplyCode() {
163ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        // These are valid, so expect no exceptions
164ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        commandHandler.assertValidReplyCode(1);
165ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        commandHandler.assertValidReplyCode(100);
166ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair
167ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        // These are invalid
168ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        testAssertValidReplyCodeWithInvalid(0);
169ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        testAssertValidReplyCodeWithInvalid(-1);
170ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    }
171ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair
172ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    /**
173ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair     * Test the assertValidReplyCode() method , passing in an invalid replyCode value
174ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair     */
175ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    private void testAssertValidReplyCodeWithInvalid(int invalidReplyCode) {
176ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        try {
177ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair            commandHandler.assertValidReplyCode(invalidReplyCode);
178ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair            fail("Expected AssertFailedException");
179ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        }
180ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        catch (AssertFailedException expected) {
181ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair            LOG.info("Expected: " + expected);
182ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        }
183ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    }
184ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair
185ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    /**
186ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair     * Test the sendReply() method, when no message arguments are specified
187ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair     */
188ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    public void testSendReply() {
189ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        session.sendReply(REPLY_CODE1, REPLY_TEXT1);
190ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        session.sendReply(REPLY_CODE1, MESSAGE_TEXT);
191ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        session.sendReply(REPLY_CODE1, OVERRIDE_REPLY_TEXT);
192ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        session.sendReply(REPLY_CODE3, null);
193ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        replay(session);
194ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair
195ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        commandHandler.sendReply(session, REPLY_CODE1, null, null, null);
196ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        commandHandler.sendReply(session, REPLY_CODE1, MESSAGE_KEY, null, null);
197ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        commandHandler.sendReply(session, REPLY_CODE1, MESSAGE_KEY, OVERRIDE_REPLY_TEXT, null);
198ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        commandHandler.sendReply(session, REPLY_CODE3, null, null, null);
199ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair
200ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        verify(session);
201ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    }
202ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair
203ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    /**
204ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair     * Test the sendReply() method, passing in message arguments
205ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair     */
206ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    public void testSendReply_WithMessageArguments() {
207ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        session.sendReply(REPLY_CODE1, REPLY_TEXT2_FORMATTED);
208ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        replay(session);
209ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair
210ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        commandHandler.sendReply(session, REPLY_CODE1, null, REPLY_TEXT2, ARGS);
211ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair
212ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        verify(session);
213ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    }
214ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair
215ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    /**
216ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair     * Test the sendReply() method, passing in a null Session
217ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair     */
218ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    public void testSendReply_NullSession() {
219ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        try {
220ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair            commandHandler.sendReply(null, REPLY_CODE1, REPLY_TEXT1, null, null);
221ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair            fail("Expected AssertFailedException");
222ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        }
223ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        catch (AssertFailedException expected) {
224ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair            LOG.info("Expected: " + expected);
225ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        }
226ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    }
227ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair
228ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    /**
229ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair     * Test the sendReply() method, passing in an invalid replyCode
230ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair     */
231ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    public void testSendReply_InvalidReplyCode() {
232ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        try {
233ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair            commandHandler.sendReply(session, 0, REPLY_TEXT1, null, null);
234ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair            fail("Expected AssertFailedException");
235ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        }
236ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        catch (AssertFailedException expected) {
237ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair            LOG.info("Expected: " + expected);
238ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        }
239ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    }
240ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair
241ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    //-------------------------------------------------------------------------
242ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    // Test setup
243ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    //-------------------------------------------------------------------------
244ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair
245ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    /**
246ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair     * Perform initialization before each test
247ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair     * @see org.mockftpserver.test.AbstractTest#setUp()
248ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair     */
249ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    protected void setUp() throws Exception {
250ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        super.setUp();
251ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        session = (Session) createMock(Session.class);
252ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        control(session).setDefaultMatcher(MockControl.ARRAY_MATCHER);
253ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        commandHandler = new AbstractCommandHandler() {
254ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair            public void handleCommand(Command command, Session session, InvocationRecord invocationRecord) throws Exception {
255ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair            }
256ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        };
257ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        replyTextBundle = new ListResourceBundle() {
258ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair            protected Object[][] getContents() {
259ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair                return new Object[][] {
260ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair                        { Integer.toString(REPLY_CODE1), REPLY_TEXT1 },
261ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair                        { Integer.toString(REPLY_CODE2), REPLY_TEXT2 },
262ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair                        { MESSAGE_KEY, MESSAGE_TEXT }
263ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair                };
264ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair            }
265ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        };
266ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        commandHandler.setReplyTextBundle(replyTextBundle);
267ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    }
268ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair
269ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair}
270