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