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.UserCommandHandler; 2277391c2a01ce1fed085906743cc240a4d58edd92chrismair 2377391c2a01ce1fed085906743cc240a4d58edd92chrismair/** 2477391c2a01ce1fed085906743cc240a4d58edd92chrismair * Tests for the UserCommandHandler class 2577391c2a01ce1fed085906743cc240a4d58edd92chrismair * 2677391c2a01ce1fed085906743cc240a4d58edd92chrismair * @version $Revision$ - $Date$ 2777391c2a01ce1fed085906743cc240a4d58edd92chrismair * 2877391c2a01ce1fed085906743cc240a4d58edd92chrismair * @author Chris Mair 2977391c2a01ce1fed085906743cc240a4d58edd92chrismair */ 3077391c2a01ce1fed085906743cc240a4d58edd92chrismairpublic final class UserCommandHandlerTest extends AbstractCommandHandlerTest { 3177391c2a01ce1fed085906743cc240a4d58edd92chrismair 3277391c2a01ce1fed085906743cc240a4d58edd92chrismair private static final String USERNAME1 = "user1"; 3377391c2a01ce1fed085906743cc240a4d58edd92chrismair private static final String USERNAME2 = "user2"; 3477391c2a01ce1fed085906743cc240a4d58edd92chrismair 3577391c2a01ce1fed085906743cc240a4d58edd92chrismair private UserCommandHandler commandHandler; 3677391c2a01ce1fed085906743cc240a4d58edd92chrismair private Command command1; 3777391c2a01ce1fed085906743cc240a4d58edd92chrismair private Command command2; 3877391c2a01ce1fed085906743cc240a4d58edd92chrismair 3977391c2a01ce1fed085906743cc240a4d58edd92chrismair /** 4077391c2a01ce1fed085906743cc240a4d58edd92chrismair * Test the handleCommand() method 4177391c2a01ce1fed085906743cc240a4d58edd92chrismair */ 4277391c2a01ce1fed085906743cc240a4d58edd92chrismair public void testHandleCommand() throws Exception { 4377391c2a01ce1fed085906743cc240a4d58edd92chrismair 4477391c2a01ce1fed085906743cc240a4d58edd92chrismair session.sendReply(ReplyCodes.USER_NEED_PASSWORD_OK, replyTextFor(ReplyCodes.USER_NEED_PASSWORD_OK)); 4577391c2a01ce1fed085906743cc240a4d58edd92chrismair session.sendReply(ReplyCodes.USER_LOGGED_IN_OK, replyTextFor(ReplyCodes.USER_LOGGED_IN_OK)); 4677391c2a01ce1fed085906743cc240a4d58edd92chrismair replay(session); 4777391c2a01ce1fed085906743cc240a4d58edd92chrismair 4877391c2a01ce1fed085906743cc240a4d58edd92chrismair commandHandler.handleCommand(command1, session); 4977391c2a01ce1fed085906743cc240a4d58edd92chrismair commandHandler.setPasswordRequired(false); 5077391c2a01ce1fed085906743cc240a4d58edd92chrismair commandHandler.handleCommand(command2, session); 5177391c2a01ce1fed085906743cc240a4d58edd92chrismair verify(session); 5277391c2a01ce1fed085906743cc240a4d58edd92chrismair 5377391c2a01ce1fed085906743cc240a4d58edd92chrismair verifyNumberOfInvocations(commandHandler, 2); 5477391c2a01ce1fed085906743cc240a4d58edd92chrismair verifyOneDataElement(commandHandler.getInvocation(0), UserCommandHandler.USERNAME_KEY, USERNAME1); 5577391c2a01ce1fed085906743cc240a4d58edd92chrismair verifyOneDataElement(commandHandler.getInvocation(1), UserCommandHandler.USERNAME_KEY, USERNAME2); 5677391c2a01ce1fed085906743cc240a4d58edd92chrismair } 5777391c2a01ce1fed085906743cc240a4d58edd92chrismair 5877391c2a01ce1fed085906743cc240a4d58edd92chrismair /** 5977391c2a01ce1fed085906743cc240a4d58edd92chrismair * Test the handleCommand() method, when no username parameter has been specified 6077391c2a01ce1fed085906743cc240a4d58edd92chrismair */ 6177391c2a01ce1fed085906743cc240a4d58edd92chrismair public void testHandleCommand_MissingUsernameParameter() throws Exception { 6277391c2a01ce1fed085906743cc240a4d58edd92chrismair testHandleCommand_InvalidParameters(commandHandler, CommandNames.USER, EMPTY); 6377391c2a01ce1fed085906743cc240a4d58edd92chrismair } 6477391c2a01ce1fed085906743cc240a4d58edd92chrismair 6577391c2a01ce1fed085906743cc240a4d58edd92chrismair /** 6677391c2a01ce1fed085906743cc240a4d58edd92chrismair * Test the setPasswordRequired() and isPasswordRequired() methods 6777391c2a01ce1fed085906743cc240a4d58edd92chrismair */ 6877391c2a01ce1fed085906743cc240a4d58edd92chrismair public void testSetPasswordRequired() { 6977391c2a01ce1fed085906743cc240a4d58edd92chrismair assertTrue("initial state", commandHandler.isPasswordRequired()); 7077391c2a01ce1fed085906743cc240a4d58edd92chrismair commandHandler.setPasswordRequired(false); 7177391c2a01ce1fed085906743cc240a4d58edd92chrismair assertFalse("after set false", commandHandler.isPasswordRequired()); 7277391c2a01ce1fed085906743cc240a4d58edd92chrismair } 7377391c2a01ce1fed085906743cc240a4d58edd92chrismair 7477391c2a01ce1fed085906743cc240a4d58edd92chrismair /** 7577391c2a01ce1fed085906743cc240a4d58edd92chrismair * Perform initialization before each test 7677391c2a01ce1fed085906743cc240a4d58edd92chrismair * 7777391c2a01ce1fed085906743cc240a4d58edd92chrismair * @see org.mockftpserver.stub.command.AbstractCommandHandlerTest#setUp() 7877391c2a01ce1fed085906743cc240a4d58edd92chrismair */ 7977391c2a01ce1fed085906743cc240a4d58edd92chrismair protected void setUp() throws Exception { 8077391c2a01ce1fed085906743cc240a4d58edd92chrismair super.setUp(); 8177391c2a01ce1fed085906743cc240a4d58edd92chrismair commandHandler = new UserCommandHandler(); 8277391c2a01ce1fed085906743cc240a4d58edd92chrismair command1 = new Command(CommandNames.USER, array(USERNAME1)); 8377391c2a01ce1fed085906743cc240a4d58edd92chrismair command2 = new Command(CommandNames.USER, array(USERNAME2)); 8477391c2a01ce1fed085906743cc240a4d58edd92chrismair commandHandler.setReplyTextBundle(replyTextBundle); 8577391c2a01ce1fed085906743cc240a4d58edd92chrismair } 8677391c2a01ce1fed085906743cc240a4d58edd92chrismair 8777391c2a01ce1fed085906743cc240a4d58edd92chrismair} 88