153295844df24dff0a1f59e1104795e640b54c2efchrismair/*
253295844df24dff0a1f59e1104795e640b54c2efchrismair * Copyright 2007 the original author or authors.
353295844df24dff0a1f59e1104795e640b54c2efchrismair *
453295844df24dff0a1f59e1104795e640b54c2efchrismair * Licensed under the Apache License, Version 2.0 (the "License");
553295844df24dff0a1f59e1104795e640b54c2efchrismair * you may not use this file except in compliance with the License.
653295844df24dff0a1f59e1104795e640b54c2efchrismair * You may obtain a copy of the License at
753295844df24dff0a1f59e1104795e640b54c2efchrismair *
853295844df24dff0a1f59e1104795e640b54c2efchrismair *      http://www.apache.org/licenses/LICENSE-2.0
953295844df24dff0a1f59e1104795e640b54c2efchrismair *
1053295844df24dff0a1f59e1104795e640b54c2efchrismair * Unless required by applicable law or agreed to in writing, software
1153295844df24dff0a1f59e1104795e640b54c2efchrismair * distributed under the License is distributed on an "AS IS" BASIS,
1253295844df24dff0a1f59e1104795e640b54c2efchrismair * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1353295844df24dff0a1f59e1104795e640b54c2efchrismair * See the License for the specific language governing permissions and
1453295844df24dff0a1f59e1104795e640b54c2efchrismair * limitations under the License.
1553295844df24dff0a1f59e1104795e640b54c2efchrismair */
1653295844df24dff0a1f59e1104795e640b54c2efchrismairpackage org.mockftpserver.stub.command;
1753295844df24dff0a1f59e1104795e640b54c2efchrismair
1853295844df24dff0a1f59e1104795e640b54c2efchrismairimport org.mockftpserver.core.command.Command;
1953295844df24dff0a1f59e1104795e640b54c2efchrismairimport org.mockftpserver.core.command.CommandNames;
2053295844df24dff0a1f59e1104795e640b54c2efchrismairimport org.mockftpserver.core.command.ReplyCodes;
2153295844df24dff0a1f59e1104795e640b54c2efchrismairimport org.mockftpserver.stub.command.StorCommandHandler;
2253295844df24dff0a1f59e1104795e640b54c2efchrismair
2353295844df24dff0a1f59e1104795e640b54c2efchrismair/**
2453295844df24dff0a1f59e1104795e640b54c2efchrismair * Tests for the StorCommandHandler class
2553295844df24dff0a1f59e1104795e640b54c2efchrismair *
2653295844df24dff0a1f59e1104795e640b54c2efchrismair * @version $Revision$ - $Date$
2753295844df24dff0a1f59e1104795e640b54c2efchrismair *
2853295844df24dff0a1f59e1104795e640b54c2efchrismair * @author Chris Mair
2953295844df24dff0a1f59e1104795e640b54c2efchrismair */
3053295844df24dff0a1f59e1104795e640b54c2efchrismairpublic final class StorCommandHandlerTest extends AbstractCommandHandlerTest {
3153295844df24dff0a1f59e1104795e640b54c2efchrismair
3253295844df24dff0a1f59e1104795e640b54c2efchrismair    private StorCommandHandler commandHandler;
3353295844df24dff0a1f59e1104795e640b54c2efchrismair
3453295844df24dff0a1f59e1104795e640b54c2efchrismair    /**
3553295844df24dff0a1f59e1104795e640b54c2efchrismair     * Perform initialization before each test
3653295844df24dff0a1f59e1104795e640b54c2efchrismair     *
3753295844df24dff0a1f59e1104795e640b54c2efchrismair     * @see org.mockftpserver.stub.command.AbstractCommandHandlerTest#setUp()
3853295844df24dff0a1f59e1104795e640b54c2efchrismair     */
3953295844df24dff0a1f59e1104795e640b54c2efchrismair    protected void setUp() throws Exception {
4053295844df24dff0a1f59e1104795e640b54c2efchrismair        super.setUp();
4153295844df24dff0a1f59e1104795e640b54c2efchrismair        commandHandler = new StorCommandHandler();
4253295844df24dff0a1f59e1104795e640b54c2efchrismair        commandHandler.setReplyTextBundle(replyTextBundle);
4353295844df24dff0a1f59e1104795e640b54c2efchrismair    }
4453295844df24dff0a1f59e1104795e640b54c2efchrismair
4553295844df24dff0a1f59e1104795e640b54c2efchrismair    /**
4653295844df24dff0a1f59e1104795e640b54c2efchrismair     * Test the handleCommand() method, as well as the getFileContents() and clearFileContents() methods
4753295844df24dff0a1f59e1104795e640b54c2efchrismair     */
4853295844df24dff0a1f59e1104795e640b54c2efchrismair    public void testHandleCommand() throws Exception {
4953295844df24dff0a1f59e1104795e640b54c2efchrismair        final String DATA = "ABC";
5053295844df24dff0a1f59e1104795e640b54c2efchrismair
5153295844df24dff0a1f59e1104795e640b54c2efchrismair        session.sendReply(ReplyCodes.SEND_DATA_INITIAL_OK, replyTextFor(ReplyCodes.SEND_DATA_INITIAL_OK));
5253295844df24dff0a1f59e1104795e640b54c2efchrismair        session.openDataConnection();
5353295844df24dff0a1f59e1104795e640b54c2efchrismair        session.readData();
5453295844df24dff0a1f59e1104795e640b54c2efchrismair        control(session).setReturnValue(DATA.getBytes());
5553295844df24dff0a1f59e1104795e640b54c2efchrismair        session.closeDataConnection();
5653295844df24dff0a1f59e1104795e640b54c2efchrismair        session.sendReply(ReplyCodes.SEND_DATA_FINAL_OK, replyTextFor(ReplyCodes.SEND_DATA_FINAL_OK));
5753295844df24dff0a1f59e1104795e640b54c2efchrismair        replay(session);
5853295844df24dff0a1f59e1104795e640b54c2efchrismair
5953295844df24dff0a1f59e1104795e640b54c2efchrismair        Command command = new Command(CommandNames.STOR, array(FILENAME1));
6053295844df24dff0a1f59e1104795e640b54c2efchrismair        commandHandler.handleCommand(command, session);
6153295844df24dff0a1f59e1104795e640b54c2efchrismair        verify(session);
6253295844df24dff0a1f59e1104795e640b54c2efchrismair
6353295844df24dff0a1f59e1104795e640b54c2efchrismair        verifyNumberOfInvocations(commandHandler, 1);
6453295844df24dff0a1f59e1104795e640b54c2efchrismair        verifyTwoDataElements(commandHandler.getInvocation(0), StorCommandHandler.PATHNAME_KEY, FILENAME1,
6553295844df24dff0a1f59e1104795e640b54c2efchrismair                StorCommandHandler.FILE_CONTENTS_KEY, DATA.getBytes());
6653295844df24dff0a1f59e1104795e640b54c2efchrismair    }
6753295844df24dff0a1f59e1104795e640b54c2efchrismair
6853295844df24dff0a1f59e1104795e640b54c2efchrismair    /**
6953295844df24dff0a1f59e1104795e640b54c2efchrismair     * Test the handleCommand() method, when no pathname parameter has been specified
7053295844df24dff0a1f59e1104795e640b54c2efchrismair     */
7153295844df24dff0a1f59e1104795e640b54c2efchrismair    public void testHandleCommand_MissingPathnameParameter() throws Exception {
7253295844df24dff0a1f59e1104795e640b54c2efchrismair        testHandleCommand_InvalidParameters(commandHandler, CommandNames.STOR, EMPTY);
7353295844df24dff0a1f59e1104795e640b54c2efchrismair    }
7453295844df24dff0a1f59e1104795e640b54c2efchrismair
7553295844df24dff0a1f59e1104795e640b54c2efchrismair}
76