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