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.core.command; 1793102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair 18dfa40a06dff44f29d8d5e1d3186055ad325fc7b9chrismairimport org.slf4j.Logger; 19dfa40a06dff44f29d8d5e1d3186055ad325fc7b9chrismairimport org.slf4j.LoggerFactory; 2093102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismairimport org.mockftpserver.core.util.AssertFailedException; 2193102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair 2293102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair/** 2393102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair * Tests for the StaticReplyCommandHandler class 2493102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair * 254ca3386623ce60063f27955ad1b2b1b6cbba8b09chrismair * @version $Revision$ - $Date$ 2693102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair * 2793102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair * @author Chris Mair 2893102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair */ 2940658190151b7ded3489ff89c301b470155c95f4chrismairpublic final class StaticReplyCommandHandlerTest extends AbstractCommandHandlerTestCase { 3093102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair 31dfa40a06dff44f29d8d5e1d3186055ad325fc7b9chrismair private static final Logger LOG = LoggerFactory.getLogger(StaticReplyCommandHandlerTest.class); 3293102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair private static final int REPLY_CODE = 999; 3393102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair private static final String REPLY_TEXT = "some text 123"; 3493102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair private static final Command COMMAND = new Command("ANY", EMPTY); 3593102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair 3693102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair private StaticReplyCommandHandler commandHandler; 3793102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair 3893102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair /** 3993102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair * Test the constructor that takes a replyCode, passing in a null 4093102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair */ 4193102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair public void testConstructor_String_InvalidReplyCode() { 4293102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair try { 4393102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair new StaticReplyCommandHandler(-1); 4493102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair fail("Expected AssertFailedException"); 4593102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair } 4693102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair catch (AssertFailedException expected) { 4793102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair LOG.info("Expected: " + expected); 4893102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair } 4993102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair } 5093102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair 5193102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair /** 5293102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair * Test the constructor that takes a replyCode and replyText, passing in a null replyCode 5393102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair */ 5493102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair public void testConstructor_StringString_InvalidReplyCode() { 5593102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair try { 5693102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair new StaticReplyCommandHandler(-99, "text"); 5793102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair fail("Expected AssertFailedException"); 5893102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair } 5993102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair catch (AssertFailedException expected) { 6093102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair LOG.info("Expected: " + expected); 6193102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair } 6293102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair } 6393102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair 6493102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair /** 6593102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair * Test the setReplyCode() method, passing in a null 6693102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair */ 6793102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair public void testSetReplyCode_Invalid() { 6893102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair try { 6993102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair commandHandler.setReplyCode(-1); 7093102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair fail("Expected AssertFailedException"); 7193102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair } 7293102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair catch (AssertFailedException expected) { 7393102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair LOG.info("Expected: " + expected); 7493102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair } 7593102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair } 7693102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair 7793102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair /** 7893102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair * Test the handleCommand() method when the replyText attribute has not been set. 7993102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair * So, use whatever replyText has been configured in the replyCodeMapping 8093102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair * @throws Exception 8193102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair */ 8293102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair public void testHandleCommand_ReplyTextNotSet() throws Exception { 8393102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair commandHandler.setReplyCode(250); 8493102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair 8593102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair session.sendReply(250, replyTextFor(250)); 8693102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair replay(session); 8793102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair 8893102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair commandHandler.handleCommand(COMMAND, session); 8993102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair verify(session); 9093102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair 9193102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair verifyNumberOfInvocations(commandHandler, 1); 9293102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair verifyNoDataElements(commandHandler.getInvocation(0)); 9393102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair } 9493102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair 9593102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair /** 9693102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair * Test the handleCommand() method, when the replyCode and replyText are both set 9793102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair * @throws Exception 9893102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair */ 9993102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair public void testHandleCommand_SetReplyText() throws Exception { 10093102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair commandHandler.setReplyCode(REPLY_CODE); 10193102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair commandHandler.setReplyText(REPLY_TEXT); 10293102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair 10393102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair session.sendReply(REPLY_CODE, REPLY_TEXT); 10493102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair replay(session); 10593102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair 10693102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair commandHandler.handleCommand(COMMAND, session); 10793102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair verify(session); 10893102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair 10993102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair verifyNumberOfInvocations(commandHandler, 1); 11093102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair verifyNoDataElements(commandHandler.getInvocation(0)); 11193102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair } 11293102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair 11393102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair /** 11493102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair * Test the handleCommand() method when the replyCode attribute has not been set 11593102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair * @throws Exception 11693102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair */ 11793102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair public void testHandleCommand_ReplyCodeNotSet() throws Exception { 11893102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair 11993102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair try { 12093102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair commandHandler.handleCommand(COMMAND, session); 12193102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair fail("Expected AssertFailedException"); 12293102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair } 12393102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair catch (AssertFailedException expected) { 12493102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair LOG.info("Expected: " + expected); 12593102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair } 12693102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair 12793102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair verifyNumberOfInvocations(commandHandler, 1); 12893102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair verifyNoDataElements(commandHandler.getInvocation(0)); 12993102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair } 13093102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair 13193102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair /** 13240658190151b7ded3489ff89c301b470155c95f4chrismair * @see AbstractCommandHandlerTestCase#setUp() 13393102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair */ 13493102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair protected void setUp() throws Exception { 13593102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair super.setUp(); 13693102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair commandHandler = new StaticReplyCommandHandler(); 13793102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair commandHandler.setReplyTextBundle(replyTextBundle); 13893102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair } 13993102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair 14093102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair} 141