CdupCommandHandlerTest.groovy revision 5e9a0227eb376a4d67ada00c7ea54d3f7962cefd
15e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair/*
25e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair * Copyright 2008 the original author or authors.
35e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair *
45e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair * Licensed under the Apache License, Version 2.0 (the "License");
55e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair * you may not use this file except in compliance with the License.
65e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair * You may obtain a copy of the License at
75e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair *
85e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair *      http://www.apache.org/licenses/LICENSE-2.0
95e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair *
105e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair * Unless required by applicable law or agreed to in writing, software
115e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair * distributed under the License is distributed on an "AS IS" BASIS,
125e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
135e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair * See the License for the specific language governing permissions and
145e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair * limitations under the License.
155e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair */
165e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismairpackage org.mockftpserver.fake.command
175e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair
185e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismairimport org.mockftpserver.core.command.Command
195e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismairimport org.mockftpserver.core.command.CommandHandler
205e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismairimport org.mockftpserver.core.command.CommandNames
215e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismairimport org.mockftpserver.core.command.ReplyCodes
225e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismairimport org.mockftpserver.core.session.SessionKeys
235e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair
245e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair/**
255e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair * Tests for CdupCommandHandler
265e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair *
275e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair * @version $Revision$ - $Date$
285e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair *
295e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair * @author Chris Mair
305e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair */
315e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismairclass CdupCommandHandlerTest extends AbstractLoginRequiredCommandHandlerTest {
325e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair
335e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair    def DIR = "/usr"
345e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair    def SUBDIR = "${DIR}/sub"
355e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair
365e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair    void testHandleCommand() {
375e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair        setCurrentDirectory(SUBDIR)
385e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair        commandHandler.handleCommand(createCommand([]), session)
395e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair        assertSessionReply(ReplyCodes.CDUP_OK)
405e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair        assert session.getAttribute(SessionKeys.CURRENT_DIRECTORY) == DIR
415e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair    }
425e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair
435e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair    void testHandleCommand_NoParentDirectory() {
445e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair        setCurrentDirectory('/')
455e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair        commandHandler.handleCommand(createCommand([]), session)
465e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair        assertSessionReply(ReplyCodes.EXISTING_FILE_ERROR, '/')
475e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair        assert session.getAttribute(SessionKeys.CURRENT_DIRECTORY) == '/'
485e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair    }
495e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair
505e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair    //-------------------------------------------------------------------------
515e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair    // Helper Methods
525e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair    //-------------------------------------------------------------------------
535e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair
545e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair    CommandHandler createCommandHandler() {
555e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair        new CdupCommandHandler()
565e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair    }
575e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair
585e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair    Command createValidCommand() {
595e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair        return new Command(CommandNames.CDUP, [])
605e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair    }
615e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair
625e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair    void setUp() {
635e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair        super.setUp()
645e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair        assert fileSystem.createDirectory(SUBDIR)
655e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair    }
665e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair
675e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair}