193102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair/*
293102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair * Copyright 2007 the original author or authors.
393102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair *
493102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair * Licensed under the Apache License, Version 2.0 (the "License");
593102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair * you may not use this file except in compliance with the License.
693102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair * You may obtain a copy of the License at
793102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair *
893102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair *      http://www.apache.org/licenses/LICENSE-2.0
993102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair *
1093102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair * Unless required by applicable law or agreed to in writing, software
1193102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair * distributed under the License is distributed on an "AS IS" BASIS,
1293102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1393102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair * See the License for the specific language governing permissions and
1493102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair * limitations under the License.
1593102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair */
1693102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismairpackage org.mockftpserver.stub.command;
1793102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair
1840658190151b7ded3489ff89c301b470155c95f4chrismairimport org.mockftpserver.core.command.*;
1940658190151b7ded3489ff89c301b470155c95f4chrismairimport org.mockftpserver.core.command.AbstractCommandHandlerTestCase;
2093102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair
2193102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair/**
2293102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair * Tests for the StorCommandHandler class
235e4167540f70a75ce28b9c69a41db7ee38c22de3chrismair *
2493102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair * @author Chris Mair
255e4167540f70a75ce28b9c69a41db7ee38c22de3chrismair * @version $Revision$ - $Date$
2693102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair */
2740658190151b7ded3489ff89c301b470155c95f4chrismairpublic final class StorCommandHandlerTest extends AbstractCommandHandlerTestCase {
2893102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair
2993102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair    private StorCommandHandler commandHandler;
3093102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair
3193102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair    /**
3293102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair     * Perform initialization before each test
335e4167540f70a75ce28b9c69a41db7ee38c22de3chrismair     *
3440658190151b7ded3489ff89c301b470155c95f4chrismair     * @see org.mockftpserver.core.command.AbstractCommandHandlerTestCase#setUp()
3593102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair     */
3693102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair    protected void setUp() throws Exception {
3793102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair        super.setUp();
3893102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair        commandHandler = new StorCommandHandler();
3993102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair        commandHandler.setReplyTextBundle(replyTextBundle);
4093102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair    }
4193102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair
4293102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair    /**
4393102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair     * Test the handleCommand() method, as well as the getFileContents() and clearFileContents() methods
4493102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair     */
4593102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair    public void testHandleCommand() throws Exception {
4693102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair        final String DATA = "ABC";
4793102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair
485e4167540f70a75ce28b9c69a41db7ee38c22de3chrismair        session.sendReply(ReplyCodes.TRANSFER_DATA_INITIAL_OK, replyTextFor(ReplyCodes.TRANSFER_DATA_INITIAL_OK));
4993102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair        session.openDataConnection();
5093102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair        session.readData();
5193102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair        control(session).setReturnValue(DATA.getBytes());
5293102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair        session.closeDataConnection();
535e4167540f70a75ce28b9c69a41db7ee38c22de3chrismair        session.sendReply(ReplyCodes.TRANSFER_DATA_FINAL_OK, replyTextFor(ReplyCodes.TRANSFER_DATA_FINAL_OK));
5493102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair        replay(session);
5593102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair
5693102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair        Command command = new Command(CommandNames.STOR, array(FILENAME1));
5793102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair        commandHandler.handleCommand(command, session);
5893102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair        verify(session);
5993102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair
6093102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair        verifyNumberOfInvocations(commandHandler, 1);
6193102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair        verifyTwoDataElements(commandHandler.getInvocation(0), StorCommandHandler.PATHNAME_KEY, FILENAME1,
6293102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair                StorCommandHandler.FILE_CONTENTS_KEY, DATA.getBytes());
6393102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair    }
6493102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair
6593102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair    /**
6693102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair     * Test the handleCommand() method, when no pathname parameter has been specified
6793102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair     */
6893102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair    public void testHandleCommand_MissingPathnameParameter() throws Exception {
6993102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair        testHandleCommand_InvalidParameters(commandHandler, CommandNames.STOR, EMPTY);
7093102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair    }
7193102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair
7293102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair}
73