1e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair/* 2e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * Copyright 2007 the original author or authors. 3e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * 4e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * Licensed under the Apache License, Version 2.0 (the "License"); 5e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * you may not use this file except in compliance with the License. 6e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * You may obtain a copy of the License at 7e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * 8e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * http://www.apache.org/licenses/LICENSE-2.0 9e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * 10e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * Unless required by applicable law or agreed to in writing, software 11e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * distributed under the License is distributed on an "AS IS" BASIS, 12e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * See the License for the specific language governing permissions and 14e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * limitations under the License. 15e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair */ 16e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismairpackage org.mockftpserver.stub.command; 17e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair 18e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismairimport org.mockftpserver.core.command.Command; 19e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismairimport org.mockftpserver.core.command.CommandNames; 20e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismairimport org.mockftpserver.core.command.ReplyCodes; 21e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismairimport org.mockftpserver.stub.command.UserCommandHandler; 22e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair 23e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair/** 24e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * Tests for the UserCommandHandler class 25e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * 26e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * @version $Revision$ - $Date$ 27e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * 28e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * @author Chris Mair 29e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair */ 30e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismairpublic final class UserCommandHandlerTest extends AbstractCommandHandlerTest { 31e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair 32e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair private static final String USERNAME1 = "user1"; 33e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair private static final String USERNAME2 = "user2"; 34e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair 35e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair private UserCommandHandler commandHandler; 36e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair private Command command1; 37e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair private Command command2; 38e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair 39e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair /** 40e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * Test the handleCommand() method 41e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair */ 42e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair public void testHandleCommand() throws Exception { 43e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair 44e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair session.sendReply(ReplyCodes.USER_NEED_PASSWORD_OK, replyTextFor(ReplyCodes.USER_NEED_PASSWORD_OK)); 45e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair session.sendReply(ReplyCodes.USER_LOGGED_IN_OK, replyTextFor(ReplyCodes.USER_LOGGED_IN_OK)); 46e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair replay(session); 47e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair 48e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair commandHandler.handleCommand(command1, session); 49e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair commandHandler.setPasswordRequired(false); 50e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair commandHandler.handleCommand(command2, session); 51e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair verify(session); 52e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair 53e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair verifyNumberOfInvocations(commandHandler, 2); 54e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair verifyOneDataElement(commandHandler.getInvocation(0), UserCommandHandler.USERNAME_KEY, USERNAME1); 55e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair verifyOneDataElement(commandHandler.getInvocation(1), UserCommandHandler.USERNAME_KEY, USERNAME2); 56e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair } 57e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair 58e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair /** 59e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * Test the handleCommand() method, when no username parameter has been specified 60e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair */ 61e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair public void testHandleCommand_MissingUsernameParameter() throws Exception { 62e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair testHandleCommand_InvalidParameters(commandHandler, CommandNames.USER, EMPTY); 63e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair } 64e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair 65e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair /** 66e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * Test the setPasswordRequired() and isPasswordRequired() methods 67e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair */ 68e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair public void testSetPasswordRequired() { 69e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair assertTrue("initial state", commandHandler.isPasswordRequired()); 70e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair commandHandler.setPasswordRequired(false); 71e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair assertFalse("after set false", commandHandler.isPasswordRequired()); 72e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair } 73e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair 74e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair /** 75e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * Perform initialization before each test 76e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * 77e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * @see org.mockftpserver.stub.command.AbstractCommandHandlerTest#setUp() 78e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair */ 79e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair protected void setUp() throws Exception { 80e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair super.setUp(); 81e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair commandHandler = new UserCommandHandler(); 82e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair command1 = new Command(CommandNames.USER, array(USERNAME1)); 83e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair command2 = new Command(CommandNames.USER, array(USERNAME2)); 84e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair commandHandler.setReplyTextBundle(replyTextBundle); 85e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair } 86e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair 87e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair} 88