1b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair/*
2b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair * Copyright 2007 the original author or authors.
3b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair *
4b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair * Licensed under the Apache License, Version 2.0 (the "License");
5b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair * you may not use this file except in compliance with the License.
6b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair * You may obtain a copy of the License at
7b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair *
8b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair *      http://www.apache.org/licenses/LICENSE-2.0
9b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair *
10b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair * Unless required by applicable law or agreed to in writing, software
11b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair * distributed under the License is distributed on an "AS IS" BASIS,
12b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair * See the License for the specific language governing permissions and
14b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair * limitations under the License.
15b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair */
16b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismairpackage org.mockftpserver.core.command;
17b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair
18b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismairimport org.apache.log4j.Logger;
19b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismairimport org.easymock.MockControl;
20b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismairimport org.mockftpserver.core.session.Session;
21b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismairimport org.mockftpserver.core.util.AssertFailedException;
22b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismairimport org.mockftpserver.stub.command.AbstractStubCommandHandler;
23b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismairimport org.mockftpserver.test.AbstractTest;
24b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair
25b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismairimport java.util.ListResourceBundle;
26b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismairimport java.util.ResourceBundle;
27b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair
28b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair/**
29b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair * Tests for the AbstractCommandHandler class. The class name is prefixed with an
30b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair * underscore so that it is not filtered out by Maven's Surefire test plugin.
31b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair *
32b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair * @author Chris Mair
33b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair * @version $Revision$ - $Date$
34b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair */
35b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismairpublic final class _AbstractCommandHandlerTest extends AbstractTest {
36b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair
37b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair    private static final Logger LOG = Logger.getLogger(_AbstractTrackingCommandHandlerTest.class);
38b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair    private static final int REPLY_CODE1 = 777;
39b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair    private static final int REPLY_CODE2 = 888;
40b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair    private static final String REPLY_TEXT1 = "reply1 ... abcdef";
41b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair    private static final String REPLY_TEXT2 = "abc {0} def";
42b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair    private static final String MESSAGE_KEY = "key.123";
43b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair    private static final String MESSAGE_TEXT = "message.123";
44b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair
45b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair    private AbstractCommandHandler commandHandler;
46b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair
47b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair    /**
48b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair     * Test the quotes utility method
49b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair     */
50b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair    public void testQuotes() {
51b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair        assertEquals("abc", "\"abc\"", AbstractStubCommandHandler.quotes("abc"));
52b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair        assertEquals("<empty>", "\"\"", AbstractStubCommandHandler.quotes(""));
53b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair    }
54b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair
55b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair    /**
56b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair     * Test the quotes utility method, passing in a null
57b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair     */
58b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair    public void testQuotes_Null() {
59b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair        try {
60b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair            AbstractStubCommandHandler.quotes(null);
61b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair            fail("Expected AssertFailedException");
62b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair        }
63b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair        catch (AssertFailedException expected) {
64b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair            LOG.info("Expected: " + expected);
65b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair        }
66b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair    }
67b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair
68b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair    /**
69b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair     * Test the assertValidReplyCode() method
70b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair     */
71b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair    public void testAssertValidReplyCode() {
72b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair        // These are valid, so expect no exceptions
73b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair        commandHandler.assertValidReplyCode(1);
74b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair        commandHandler.assertValidReplyCode(100);
75b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair
76b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair        // These are invalid
77b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair        testAssertValidReplyCodeWithInvalid(0);
78b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair        testAssertValidReplyCodeWithInvalid(-1);
79b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair    }
80b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair
81b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair    /**
82b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair     * Test the assertValidReplyCode() method , passing in an invalid replyCode value
83b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair     *
84b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair     * @param invalidReplyCode - a reply code that is expected to be invalid
85b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair     */
86b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair    private void testAssertValidReplyCodeWithInvalid(int invalidReplyCode) {
87b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair        try {
88b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair            commandHandler.assertValidReplyCode(invalidReplyCode);
89b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair            fail("Expected AssertFailedException");
90b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair        }
91b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair        catch (AssertFailedException expected) {
92b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair            LOG.info("Expected: " + expected);
93b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair        }
94b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair    }
95b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair
96b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair    //-------------------------------------------------------------------------
97b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair    // Test setup
98b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair    //-------------------------------------------------------------------------
99b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair
100b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair    /**
101b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair     * Perform initialization before each test
102b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair     *
103b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair     * @see org.mockftpserver.test.AbstractTest#setUp()
104b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair     */
105b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair    protected void setUp() throws Exception {
106b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair        super.setUp();
107b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair        Session session = (Session) createMock(Session.class);
108b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair        control(session).setDefaultMatcher(MockControl.ARRAY_MATCHER);
109b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair        commandHandler = new AbstractCommandHandler() {
110b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair            public void handleCommand(Command command, Session session) throws Exception {
111b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair            }
112b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair        };
113b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair        ResourceBundle replyTextBundle = new ListResourceBundle() {
114b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair            protected Object[][] getContents() {
115b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair                return new Object[][]{
116b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair                        {Integer.toString(REPLY_CODE1), REPLY_TEXT1},
117b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair                        {Integer.toString(REPLY_CODE2), REPLY_TEXT2},
118b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair                        {MESSAGE_KEY, MESSAGE_TEXT}
119b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair                };
120b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair            }
121b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair        };
122b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair        commandHandler.setReplyTextBundle(replyTextBundle);
123b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair    }
124b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair
125b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair}