1e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair/*
2e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * Copyright 2007 the original author or authors.
3e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair *
4e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * Licensed under the Apache License, Version 2.0 (the "License");
5e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * you may not use this file except in compliance with the License.
6e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * You may obtain a copy of the License at
7e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair *
8e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair *      http://www.apache.org/licenses/LICENSE-2.0
9e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair *
10e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * Unless required by applicable law or agreed to in writing, software
11e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * distributed under the License is distributed on an "AS IS" BASIS,
12e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * See the License for the specific language governing permissions and
14e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * limitations under the License.
15e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair */
16e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismairpackage org.mockftpserver.stub.command;
17e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair
18e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismairimport org.mockftpserver.core.command.Command;
19e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismairimport org.mockftpserver.core.command.CommandNames;
20e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismairimport org.mockftpserver.core.command.ReplyCodes;
21e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismairimport org.mockftpserver.stub.command.UserCommandHandler;
22e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair
23e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair/**
24e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * Tests for the UserCommandHandler class
25e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair *
26e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * @version $Revision$ - $Date$
27e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair *
28e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * @author Chris Mair
29e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair */
30e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismairpublic final class UserCommandHandlerTest extends AbstractCommandHandlerTest {
31e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair
32e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair    private static final String USERNAME1 = "user1";
33e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair    private static final String USERNAME2 = "user2";
34e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair
35e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair    private UserCommandHandler commandHandler;
36e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair    private Command command1;
37e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair    private Command command2;
38e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair
39e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair    /**
40e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair     * Test the handleCommand() method
41e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair     */
42e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair    public void testHandleCommand() throws Exception {
43e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair
44e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair        session.sendReply(ReplyCodes.USER_NEED_PASSWORD_OK, replyTextFor(ReplyCodes.USER_NEED_PASSWORD_OK));
45e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair        session.sendReply(ReplyCodes.USER_LOGGED_IN_OK, replyTextFor(ReplyCodes.USER_LOGGED_IN_OK));
46e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair        replay(session);
47e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair
48e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair        commandHandler.handleCommand(command1, session);
49e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair        commandHandler.setPasswordRequired(false);
50e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair        commandHandler.handleCommand(command2, session);
51e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair        verify(session);
52e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair
53e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair        verifyNumberOfInvocations(commandHandler, 2);
54e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair        verifyOneDataElement(commandHandler.getInvocation(0), UserCommandHandler.USERNAME_KEY, USERNAME1);
55e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair        verifyOneDataElement(commandHandler.getInvocation(1), UserCommandHandler.USERNAME_KEY, USERNAME2);
56e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair    }
57e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair
58e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair    /**
59e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair     * Test the handleCommand() method, when no username parameter has been specified
60e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair     */
61e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair    public void testHandleCommand_MissingUsernameParameter() throws Exception {
62e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair        testHandleCommand_InvalidParameters(commandHandler, CommandNames.USER, EMPTY);
63e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair    }
64e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair
65e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair    /**
66e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair     * Test the setPasswordRequired() and isPasswordRequired() methods
67e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair     */
68e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair    public void testSetPasswordRequired() {
69e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair        assertTrue("initial state", commandHandler.isPasswordRequired());
70e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair        commandHandler.setPasswordRequired(false);
71e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair        assertFalse("after set false", commandHandler.isPasswordRequired());
72e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair    }
73e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair
74e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair    /**
75e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair     * Perform initialization before each test
76e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair     *
77e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair     * @see org.mockftpserver.stub.command.AbstractCommandHandlerTest#setUp()
78e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair     */
79e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair    protected void setUp() throws Exception {
80e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair        super.setUp();
81e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair        commandHandler = new UserCommandHandler();
82e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair        command1 = new Command(CommandNames.USER, array(USERNAME1));
83e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair        command2 = new Command(CommandNames.USER, array(USERNAME2));
84e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair        commandHandler.setReplyTextBundle(replyTextBundle);
85e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair    }
86e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair
87e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair}
88