153295844df24dff0a1f59e1104795e640b54c2efchrismair/* 253295844df24dff0a1f59e1104795e640b54c2efchrismair * Copyright 2007 the original author or authors. 353295844df24dff0a1f59e1104795e640b54c2efchrismair * 453295844df24dff0a1f59e1104795e640b54c2efchrismair * Licensed under the Apache License, Version 2.0 (the "License"); 553295844df24dff0a1f59e1104795e640b54c2efchrismair * you may not use this file except in compliance with the License. 653295844df24dff0a1f59e1104795e640b54c2efchrismair * You may obtain a copy of the License at 753295844df24dff0a1f59e1104795e640b54c2efchrismair * 853295844df24dff0a1f59e1104795e640b54c2efchrismair * http://www.apache.org/licenses/LICENSE-2.0 953295844df24dff0a1f59e1104795e640b54c2efchrismair * 1053295844df24dff0a1f59e1104795e640b54c2efchrismair * Unless required by applicable law or agreed to in writing, software 1153295844df24dff0a1f59e1104795e640b54c2efchrismair * distributed under the License is distributed on an "AS IS" BASIS, 1253295844df24dff0a1f59e1104795e640b54c2efchrismair * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1353295844df24dff0a1f59e1104795e640b54c2efchrismair * See the License for the specific language governing permissions and 1453295844df24dff0a1f59e1104795e640b54c2efchrismair * limitations under the License. 1553295844df24dff0a1f59e1104795e640b54c2efchrismair */ 1653295844df24dff0a1f59e1104795e640b54c2efchrismairpackage org.mockftpserver.core.command; 1753295844df24dff0a1f59e1104795e640b54c2efchrismair 1853295844df24dff0a1f59e1104795e640b54c2efchrismairimport org.apache.log4j.Logger; 1953295844df24dff0a1f59e1104795e640b54c2efchrismairimport org.mockftpserver.core.command.Command; 2053295844df24dff0a1f59e1104795e640b54c2efchrismairimport org.mockftpserver.core.command.StaticReplyCommandHandler; 2153295844df24dff0a1f59e1104795e640b54c2efchrismairimport org.mockftpserver.core.util.AssertFailedException; 2253295844df24dff0a1f59e1104795e640b54c2efchrismairimport org.mockftpserver.stub.command.AbstractCommandHandlerTest; 2353295844df24dff0a1f59e1104795e640b54c2efchrismair 2453295844df24dff0a1f59e1104795e640b54c2efchrismair/** 2553295844df24dff0a1f59e1104795e640b54c2efchrismair * Tests for the StaticReplyCommandHandler class 2653295844df24dff0a1f59e1104795e640b54c2efchrismair * 2753295844df24dff0a1f59e1104795e640b54c2efchrismair * @version $Revision$ - $Date$ 2853295844df24dff0a1f59e1104795e640b54c2efchrismair * 2953295844df24dff0a1f59e1104795e640b54c2efchrismair * @author Chris Mair 3053295844df24dff0a1f59e1104795e640b54c2efchrismair */ 3153295844df24dff0a1f59e1104795e640b54c2efchrismairpublic final class StaticReplyCommandHandlerTest extends AbstractCommandHandlerTest { 3253295844df24dff0a1f59e1104795e640b54c2efchrismair 3353295844df24dff0a1f59e1104795e640b54c2efchrismair private static final Logger LOG = Logger.getLogger(StaticReplyCommandHandlerTest.class); 3453295844df24dff0a1f59e1104795e640b54c2efchrismair private static final int REPLY_CODE = 999; 3553295844df24dff0a1f59e1104795e640b54c2efchrismair private static final String REPLY_TEXT = "some text 123"; 3653295844df24dff0a1f59e1104795e640b54c2efchrismair private static final Command COMMAND = new Command("ANY", EMPTY); 3753295844df24dff0a1f59e1104795e640b54c2efchrismair 3853295844df24dff0a1f59e1104795e640b54c2efchrismair private StaticReplyCommandHandler commandHandler; 3953295844df24dff0a1f59e1104795e640b54c2efchrismair 4053295844df24dff0a1f59e1104795e640b54c2efchrismair /** 4153295844df24dff0a1f59e1104795e640b54c2efchrismair * Test the constructor that takes a replyCode, passing in a null 4253295844df24dff0a1f59e1104795e640b54c2efchrismair */ 4353295844df24dff0a1f59e1104795e640b54c2efchrismair public void testConstructor_String_InvalidReplyCode() { 4453295844df24dff0a1f59e1104795e640b54c2efchrismair try { 4553295844df24dff0a1f59e1104795e640b54c2efchrismair new StaticReplyCommandHandler(-1); 4653295844df24dff0a1f59e1104795e640b54c2efchrismair fail("Expected AssertFailedException"); 4753295844df24dff0a1f59e1104795e640b54c2efchrismair } 4853295844df24dff0a1f59e1104795e640b54c2efchrismair catch (AssertFailedException expected) { 4953295844df24dff0a1f59e1104795e640b54c2efchrismair LOG.info("Expected: " + expected); 5053295844df24dff0a1f59e1104795e640b54c2efchrismair } 5153295844df24dff0a1f59e1104795e640b54c2efchrismair } 5253295844df24dff0a1f59e1104795e640b54c2efchrismair 5353295844df24dff0a1f59e1104795e640b54c2efchrismair /** 5453295844df24dff0a1f59e1104795e640b54c2efchrismair * Test the constructor that takes a replyCode and replyText, passing in a null replyCode 5553295844df24dff0a1f59e1104795e640b54c2efchrismair */ 5653295844df24dff0a1f59e1104795e640b54c2efchrismair public void testConstructor_StringString_InvalidReplyCode() { 5753295844df24dff0a1f59e1104795e640b54c2efchrismair try { 5853295844df24dff0a1f59e1104795e640b54c2efchrismair new StaticReplyCommandHandler(-99, "text"); 5953295844df24dff0a1f59e1104795e640b54c2efchrismair fail("Expected AssertFailedException"); 6053295844df24dff0a1f59e1104795e640b54c2efchrismair } 6153295844df24dff0a1f59e1104795e640b54c2efchrismair catch (AssertFailedException expected) { 6253295844df24dff0a1f59e1104795e640b54c2efchrismair LOG.info("Expected: " + expected); 6353295844df24dff0a1f59e1104795e640b54c2efchrismair } 6453295844df24dff0a1f59e1104795e640b54c2efchrismair } 6553295844df24dff0a1f59e1104795e640b54c2efchrismair 6653295844df24dff0a1f59e1104795e640b54c2efchrismair /** 6753295844df24dff0a1f59e1104795e640b54c2efchrismair * Test the setReplyCode() method, passing in a null 6853295844df24dff0a1f59e1104795e640b54c2efchrismair */ 6953295844df24dff0a1f59e1104795e640b54c2efchrismair public void testSetReplyCode_Invalid() { 7053295844df24dff0a1f59e1104795e640b54c2efchrismair try { 7153295844df24dff0a1f59e1104795e640b54c2efchrismair commandHandler.setReplyCode(-1); 7253295844df24dff0a1f59e1104795e640b54c2efchrismair fail("Expected AssertFailedException"); 7353295844df24dff0a1f59e1104795e640b54c2efchrismair } 7453295844df24dff0a1f59e1104795e640b54c2efchrismair catch (AssertFailedException expected) { 7553295844df24dff0a1f59e1104795e640b54c2efchrismair LOG.info("Expected: " + expected); 7653295844df24dff0a1f59e1104795e640b54c2efchrismair } 7753295844df24dff0a1f59e1104795e640b54c2efchrismair } 7853295844df24dff0a1f59e1104795e640b54c2efchrismair 7953295844df24dff0a1f59e1104795e640b54c2efchrismair /** 8053295844df24dff0a1f59e1104795e640b54c2efchrismair * Test the handleCommand() method when the replyText attribute has not been set. 8153295844df24dff0a1f59e1104795e640b54c2efchrismair * So, use whatever replyText has been configured in the replyCodeMapping 8253295844df24dff0a1f59e1104795e640b54c2efchrismair * @throws Exception 8353295844df24dff0a1f59e1104795e640b54c2efchrismair */ 8453295844df24dff0a1f59e1104795e640b54c2efchrismair public void testHandleCommand_ReplyTextNotSet() throws Exception { 8553295844df24dff0a1f59e1104795e640b54c2efchrismair commandHandler.setReplyCode(250); 8653295844df24dff0a1f59e1104795e640b54c2efchrismair 8753295844df24dff0a1f59e1104795e640b54c2efchrismair session.sendReply(250, replyTextFor(250)); 8853295844df24dff0a1f59e1104795e640b54c2efchrismair replay(session); 8953295844df24dff0a1f59e1104795e640b54c2efchrismair 9053295844df24dff0a1f59e1104795e640b54c2efchrismair commandHandler.handleCommand(COMMAND, session); 9153295844df24dff0a1f59e1104795e640b54c2efchrismair verify(session); 9253295844df24dff0a1f59e1104795e640b54c2efchrismair 9353295844df24dff0a1f59e1104795e640b54c2efchrismair verifyNumberOfInvocations(commandHandler, 1); 9453295844df24dff0a1f59e1104795e640b54c2efchrismair verifyNoDataElements(commandHandler.getInvocation(0)); 9553295844df24dff0a1f59e1104795e640b54c2efchrismair } 9653295844df24dff0a1f59e1104795e640b54c2efchrismair 9753295844df24dff0a1f59e1104795e640b54c2efchrismair /** 9853295844df24dff0a1f59e1104795e640b54c2efchrismair * Test the handleCommand() method, when the replyCode and replyText are both set 9953295844df24dff0a1f59e1104795e640b54c2efchrismair * @throws Exception 10053295844df24dff0a1f59e1104795e640b54c2efchrismair */ 10153295844df24dff0a1f59e1104795e640b54c2efchrismair public void testHandleCommand_SetReplyText() throws Exception { 10253295844df24dff0a1f59e1104795e640b54c2efchrismair commandHandler.setReplyCode(REPLY_CODE); 10353295844df24dff0a1f59e1104795e640b54c2efchrismair commandHandler.setReplyText(REPLY_TEXT); 10453295844df24dff0a1f59e1104795e640b54c2efchrismair 10553295844df24dff0a1f59e1104795e640b54c2efchrismair session.sendReply(REPLY_CODE, REPLY_TEXT); 10653295844df24dff0a1f59e1104795e640b54c2efchrismair replay(session); 10753295844df24dff0a1f59e1104795e640b54c2efchrismair 10853295844df24dff0a1f59e1104795e640b54c2efchrismair commandHandler.handleCommand(COMMAND, session); 10953295844df24dff0a1f59e1104795e640b54c2efchrismair verify(session); 11053295844df24dff0a1f59e1104795e640b54c2efchrismair 11153295844df24dff0a1f59e1104795e640b54c2efchrismair verifyNumberOfInvocations(commandHandler, 1); 11253295844df24dff0a1f59e1104795e640b54c2efchrismair verifyNoDataElements(commandHandler.getInvocation(0)); 11353295844df24dff0a1f59e1104795e640b54c2efchrismair } 11453295844df24dff0a1f59e1104795e640b54c2efchrismair 11553295844df24dff0a1f59e1104795e640b54c2efchrismair /** 11653295844df24dff0a1f59e1104795e640b54c2efchrismair * Test the handleCommand() method when the replyCode attribute has not been set 11753295844df24dff0a1f59e1104795e640b54c2efchrismair * @throws Exception 11853295844df24dff0a1f59e1104795e640b54c2efchrismair */ 11953295844df24dff0a1f59e1104795e640b54c2efchrismair public void testHandleCommand_ReplyCodeNotSet() throws Exception { 12053295844df24dff0a1f59e1104795e640b54c2efchrismair 12153295844df24dff0a1f59e1104795e640b54c2efchrismair try { 12253295844df24dff0a1f59e1104795e640b54c2efchrismair commandHandler.handleCommand(COMMAND, session); 12353295844df24dff0a1f59e1104795e640b54c2efchrismair fail("Expected AssertFailedException"); 12453295844df24dff0a1f59e1104795e640b54c2efchrismair } 12553295844df24dff0a1f59e1104795e640b54c2efchrismair catch (AssertFailedException expected) { 12653295844df24dff0a1f59e1104795e640b54c2efchrismair LOG.info("Expected: " + expected); 12753295844df24dff0a1f59e1104795e640b54c2efchrismair } 12853295844df24dff0a1f59e1104795e640b54c2efchrismair 12953295844df24dff0a1f59e1104795e640b54c2efchrismair verifyNumberOfInvocations(commandHandler, 1); 13053295844df24dff0a1f59e1104795e640b54c2efchrismair verifyNoDataElements(commandHandler.getInvocation(0)); 13153295844df24dff0a1f59e1104795e640b54c2efchrismair } 13253295844df24dff0a1f59e1104795e640b54c2efchrismair 13353295844df24dff0a1f59e1104795e640b54c2efchrismair /** 13453295844df24dff0a1f59e1104795e640b54c2efchrismair * @see org.mockftpserver.stub.command.AbstractCommandHandlerTest#setUp() 13553295844df24dff0a1f59e1104795e640b54c2efchrismair */ 13653295844df24dff0a1f59e1104795e640b54c2efchrismair protected void setUp() throws Exception { 13753295844df24dff0a1f59e1104795e640b54c2efchrismair super.setUp(); 13853295844df24dff0a1f59e1104795e640b54c2efchrismair commandHandler = new StaticReplyCommandHandler(); 13953295844df24dff0a1f59e1104795e640b54c2efchrismair commandHandler.setReplyTextBundle(replyTextBundle); 14053295844df24dff0a1f59e1104795e640b54c2efchrismair } 14153295844df24dff0a1f59e1104795e640b54c2efchrismair 14253295844df24dff0a1f59e1104795e640b54c2efchrismair} 143