177391c2a01ce1fed085906743cc240a4d58edd92chrismair/*
277391c2a01ce1fed085906743cc240a4d58edd92chrismair * Copyright 2007 the original author or authors.
377391c2a01ce1fed085906743cc240a4d58edd92chrismair *
477391c2a01ce1fed085906743cc240a4d58edd92chrismair * Licensed under the Apache License, Version 2.0 (the "License");
577391c2a01ce1fed085906743cc240a4d58edd92chrismair * you may not use this file except in compliance with the License.
677391c2a01ce1fed085906743cc240a4d58edd92chrismair * You may obtain a copy of the License at
777391c2a01ce1fed085906743cc240a4d58edd92chrismair *
877391c2a01ce1fed085906743cc240a4d58edd92chrismair *      http://www.apache.org/licenses/LICENSE-2.0
977391c2a01ce1fed085906743cc240a4d58edd92chrismair *
1077391c2a01ce1fed085906743cc240a4d58edd92chrismair * Unless required by applicable law or agreed to in writing, software
1177391c2a01ce1fed085906743cc240a4d58edd92chrismair * distributed under the License is distributed on an "AS IS" BASIS,
1277391c2a01ce1fed085906743cc240a4d58edd92chrismair * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1377391c2a01ce1fed085906743cc240a4d58edd92chrismair * See the License for the specific language governing permissions and
1477391c2a01ce1fed085906743cc240a4d58edd92chrismair * limitations under the License.
1577391c2a01ce1fed085906743cc240a4d58edd92chrismair */
1677391c2a01ce1fed085906743cc240a4d58edd92chrismairpackage org.mockftpserver.stub.command;
1777391c2a01ce1fed085906743cc240a4d58edd92chrismair
1877391c2a01ce1fed085906743cc240a4d58edd92chrismairimport org.mockftpserver.core.command.Command;
1977391c2a01ce1fed085906743cc240a4d58edd92chrismairimport org.mockftpserver.core.command.CommandNames;
2077391c2a01ce1fed085906743cc240a4d58edd92chrismairimport org.mockftpserver.core.command.ReplyCodes;
2177391c2a01ce1fed085906743cc240a4d58edd92chrismairimport org.mockftpserver.stub.command.StorCommandHandler;
2277391c2a01ce1fed085906743cc240a4d58edd92chrismair
2377391c2a01ce1fed085906743cc240a4d58edd92chrismair/**
2477391c2a01ce1fed085906743cc240a4d58edd92chrismair * Tests for the StorCommandHandler class
2577391c2a01ce1fed085906743cc240a4d58edd92chrismair *
2677391c2a01ce1fed085906743cc240a4d58edd92chrismair * @version $Revision$ - $Date$
2777391c2a01ce1fed085906743cc240a4d58edd92chrismair *
2877391c2a01ce1fed085906743cc240a4d58edd92chrismair * @author Chris Mair
2977391c2a01ce1fed085906743cc240a4d58edd92chrismair */
3077391c2a01ce1fed085906743cc240a4d58edd92chrismairpublic final class StorCommandHandlerTest extends AbstractCommandHandlerTest {
3177391c2a01ce1fed085906743cc240a4d58edd92chrismair
3277391c2a01ce1fed085906743cc240a4d58edd92chrismair    private StorCommandHandler commandHandler;
3377391c2a01ce1fed085906743cc240a4d58edd92chrismair
3477391c2a01ce1fed085906743cc240a4d58edd92chrismair    /**
3577391c2a01ce1fed085906743cc240a4d58edd92chrismair     * Perform initialization before each test
3677391c2a01ce1fed085906743cc240a4d58edd92chrismair     *
3777391c2a01ce1fed085906743cc240a4d58edd92chrismair     * @see org.mockftpserver.stub.command.AbstractCommandHandlerTest#setUp()
3877391c2a01ce1fed085906743cc240a4d58edd92chrismair     */
3977391c2a01ce1fed085906743cc240a4d58edd92chrismair    protected void setUp() throws Exception {
4077391c2a01ce1fed085906743cc240a4d58edd92chrismair        super.setUp();
4177391c2a01ce1fed085906743cc240a4d58edd92chrismair        commandHandler = new StorCommandHandler();
4277391c2a01ce1fed085906743cc240a4d58edd92chrismair        commandHandler.setReplyTextBundle(replyTextBundle);
4377391c2a01ce1fed085906743cc240a4d58edd92chrismair    }
4477391c2a01ce1fed085906743cc240a4d58edd92chrismair
4577391c2a01ce1fed085906743cc240a4d58edd92chrismair    /**
4677391c2a01ce1fed085906743cc240a4d58edd92chrismair     * Test the handleCommand() method, as well as the getFileContents() and clearFileContents() methods
4777391c2a01ce1fed085906743cc240a4d58edd92chrismair     */
4877391c2a01ce1fed085906743cc240a4d58edd92chrismair    public void testHandleCommand() throws Exception {
4977391c2a01ce1fed085906743cc240a4d58edd92chrismair        final String DATA = "ABC";
5077391c2a01ce1fed085906743cc240a4d58edd92chrismair
5177391c2a01ce1fed085906743cc240a4d58edd92chrismair        session.sendReply(ReplyCodes.SEND_DATA_INITIAL_OK, replyTextFor(ReplyCodes.SEND_DATA_INITIAL_OK));
5277391c2a01ce1fed085906743cc240a4d58edd92chrismair        session.openDataConnection();
5377391c2a01ce1fed085906743cc240a4d58edd92chrismair        session.readData();
5477391c2a01ce1fed085906743cc240a4d58edd92chrismair        control(session).setReturnValue(DATA.getBytes());
5577391c2a01ce1fed085906743cc240a4d58edd92chrismair        session.closeDataConnection();
5677391c2a01ce1fed085906743cc240a4d58edd92chrismair        session.sendReply(ReplyCodes.SEND_DATA_FINAL_OK, replyTextFor(ReplyCodes.SEND_DATA_FINAL_OK));
5777391c2a01ce1fed085906743cc240a4d58edd92chrismair        replay(session);
5877391c2a01ce1fed085906743cc240a4d58edd92chrismair
5977391c2a01ce1fed085906743cc240a4d58edd92chrismair        Command command = new Command(CommandNames.STOR, array(FILENAME1));
6077391c2a01ce1fed085906743cc240a4d58edd92chrismair        commandHandler.handleCommand(command, session);
6177391c2a01ce1fed085906743cc240a4d58edd92chrismair        verify(session);
6277391c2a01ce1fed085906743cc240a4d58edd92chrismair
6377391c2a01ce1fed085906743cc240a4d58edd92chrismair        verifyNumberOfInvocations(commandHandler, 1);
6477391c2a01ce1fed085906743cc240a4d58edd92chrismair        verifyTwoDataElements(commandHandler.getInvocation(0), StorCommandHandler.PATHNAME_KEY, FILENAME1,
6577391c2a01ce1fed085906743cc240a4d58edd92chrismair                StorCommandHandler.FILE_CONTENTS_KEY, DATA.getBytes());
6677391c2a01ce1fed085906743cc240a4d58edd92chrismair    }
6777391c2a01ce1fed085906743cc240a4d58edd92chrismair
6877391c2a01ce1fed085906743cc240a4d58edd92chrismair    /**
6977391c2a01ce1fed085906743cc240a4d58edd92chrismair     * Test the handleCommand() method, when no pathname parameter has been specified
7077391c2a01ce1fed085906743cc240a4d58edd92chrismair     */
7177391c2a01ce1fed085906743cc240a4d58edd92chrismair    public void testHandleCommand_MissingPathnameParameter() throws Exception {
7277391c2a01ce1fed085906743cc240a4d58edd92chrismair        testHandleCommand_InvalidParameters(commandHandler, CommandNames.STOR, EMPTY);
7377391c2a01ce1fed085906743cc240a4d58edd92chrismair    }
7477391c2a01ce1fed085906743cc240a4d58edd92chrismair
7577391c2a01ce1fed085906743cc240a4d58edd92chrismair}
76