14bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair/*
24bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair * Copyright 2007 the original author or authors.
34bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair *
44bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair * Licensed under the Apache License, Version 2.0 (the "License");
54bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair * you may not use this file except in compliance with the License.
64bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair * You may obtain a copy of the License at
74bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair *
84bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair *      http://www.apache.org/licenses/LICENSE-2.0
94bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair *
104bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair * Unless required by applicable law or agreed to in writing, software
114bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair * distributed under the License is distributed on an "AS IS" BASIS,
124bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
134bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair * See the License for the specific language governing permissions and
144bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair * limitations under the License.
154bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair */
164bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismairpackage org.mockftpserver.stub.command;
174bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair
184bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismairimport org.mockftpserver.core.command.Command;
194bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismairimport org.mockftpserver.core.command.CommandNames;
204bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismairimport org.mockftpserver.core.command.ReplyCodes;
214bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair
224bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair/**
234bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair * Tests for the SiteCommandHandler class
244bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair *
254bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair * @version $Revision$ - $Date$
264bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair *
274bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair * @author Chris Mair
284bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair */
294bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismairpublic final class SiteCommandHandlerTest extends AbstractCommandHandlerTest {
304bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair
314bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair    private static final String PARAMETERS1 = "abc def";
324bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair    private static final String PARAMETERS2 = "abc,23,def";
334bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair
344bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair    private SiteCommandHandler commandHandler;
354bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair    private Command command1;
364bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair    private Command command2;
374bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair
384bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair    /**
394bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair     * Test the handleCommand(Command,Session) method
404bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair     * @throws Exception
414bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair     */
424bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair    public void testHandleCommand() throws Exception {
434bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair        session.sendReply(ReplyCodes.SITE_OK, replyTextFor(ReplyCodes.SITE_OK));
444bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair        session.sendReply(ReplyCodes.SITE_OK, replyTextFor(ReplyCodes.SITE_OK));
454bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair        replay(session);
464bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair
474bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair        commandHandler.handleCommand(command1, session);
484bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair        commandHandler.handleCommand(command2, session);
494bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair        verify(session);
504bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair
514bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair        verifyNumberOfInvocations(commandHandler, 2);
524bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair        verifyOneDataElement(commandHandler.getInvocation(0), SiteCommandHandler.PARAMETERS_KEY, PARAMETERS1);
534bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair        verifyOneDataElement(commandHandler.getInvocation(1), SiteCommandHandler.PARAMETERS_KEY, PARAMETERS2);
544bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair    }
554bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair
564bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair    /**
574bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair     * Test the handleCommand() method, when no "parameters" parameter has been specified
584bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair     */
594bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair    public void testHandleCommand_MissingParameters() throws Exception {
604bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair        testHandleCommand_InvalidParameters(commandHandler, CommandNames.SITE, EMPTY);
614bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair    }
624bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair
634bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair    /**
644bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair     * Perform initialization before each test
654bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair     * @see org.mockftpserver.stub.command.AbstractCommandHandlerTest#setUp()
664bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair     */
674bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair    protected void setUp() throws Exception {
684bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair        super.setUp();
694bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair        commandHandler = new SiteCommandHandler();
704bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair        commandHandler.setReplyTextBundle(replyTextBundle);
714bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair        command1 = new Command(CommandNames.SITE, array(PARAMETERS1));
724bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair        command2 = new Command(CommandNames.SITE, array(PARAMETERS2));
734bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair    }
744bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair}
75