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