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;
214bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismairimport org.mockftpserver.stub.command.StorCommandHandler;
224bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair
234bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair/**
244bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair * Tests for the StorCommandHandler class
254bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair *
264bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair * @version $Revision$ - $Date$
274bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair *
284bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair * @author Chris Mair
294bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair */
304bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismairpublic final class StorCommandHandlerTest extends AbstractCommandHandlerTest {
314bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair
324bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair    private StorCommandHandler commandHandler;
334bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair
344bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair    /**
354bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair     * Perform initialization before each test
364bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair     *
374bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair     * @see org.mockftpserver.stub.command.AbstractCommandHandlerTest#setUp()
384bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair     */
394bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair    protected void setUp() throws Exception {
404bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair        super.setUp();
414bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair        commandHandler = new StorCommandHandler();
424bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair        commandHandler.setReplyTextBundle(replyTextBundle);
434bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair    }
444bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair
454bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair    /**
464bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair     * Test the handleCommand() method, as well as the getFileContents() and clearFileContents() methods
474bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair     */
484bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair    public void testHandleCommand() throws Exception {
494bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair        final String DATA = "ABC";
504bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair
514bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair        session.sendReply(ReplyCodes.SEND_DATA_INITIAL_OK, replyTextFor(ReplyCodes.SEND_DATA_INITIAL_OK));
524bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair        session.openDataConnection();
534bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair        session.readData();
544bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair        control(session).setReturnValue(DATA.getBytes());
554bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair        session.closeDataConnection();
564bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair        session.sendReply(ReplyCodes.SEND_DATA_FINAL_OK, replyTextFor(ReplyCodes.SEND_DATA_FINAL_OK));
574bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair        replay(session);
584bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair
594bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair        Command command = new Command(CommandNames.STOR, array(FILENAME1));
604bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair        commandHandler.handleCommand(command, session);
614bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair        verify(session);
624bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair
634bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair        verifyNumberOfInvocations(commandHandler, 1);
644bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair        verifyTwoDataElements(commandHandler.getInvocation(0), StorCommandHandler.PATHNAME_KEY, FILENAME1,
654bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair                StorCommandHandler.FILE_CONTENTS_KEY, DATA.getBytes());
664bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair    }
674bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair
684bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair    /**
694bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair     * Test the handleCommand() method, when no pathname parameter has been specified
704bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair     */
714bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair    public void testHandleCommand_MissingPathnameParameter() throws Exception {
724bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair        testHandleCommand_InvalidParameters(commandHandler, CommandNames.STOR, EMPTY);
734bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair    }
744bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair
754bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair}
76