CdupCommandHandlerTest.groovy revision d150a70ca8f8ad6cc300cf56174c8846066a4ad4
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
24d150a70ca8f8ad6cc300cf56174c8846066a4ad4chrismair
255e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair/**
265e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair * Tests for CdupCommandHandler
275e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair *
285e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair * @version $Revision$ - $Date$
295e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair *
305e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair * @author Chris Mair
315e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair */
326950d7499a1865c24b29d555591130114dbc25c0chrismairclass CdupCommandHandlerTest extends AbstractFakeCommandHandlerTest {
335e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair
345e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair    def DIR = "/usr"
355e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair    def SUBDIR = "${DIR}/sub"
365e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair
375e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair    void testHandleCommand() {
385e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair        setCurrentDirectory(SUBDIR)
395e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair        commandHandler.handleCommand(createCommand([]), session)
406fed98e9c695a9024ede347900c2689979ab5785chrismair        assertSessionReply(ReplyCodes.CDUP_OK, ['cdup', DIR])
415e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair        assert session.getAttribute(SessionKeys.CURRENT_DIRECTORY) == DIR
425e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair    }
435e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair
445e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair    void testHandleCommand_NoParentDirectory() {
455e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair        setCurrentDirectory('/')
465e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair        commandHandler.handleCommand(createCommand([]), session)
47777c1c842d19df00d2529ccf43e4f4c26cfd39fbchrismair        assertSessionReply(ReplyCodes.EXISTING_FILE_ERROR, ['filesystem.parentDirectoryDoesNotExist', '/'])
485e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair        assert session.getAttribute(SessionKeys.CURRENT_DIRECTORY) == '/'
495e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair    }
505e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair
515e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair    //-------------------------------------------------------------------------
525e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair    // Helper Methods
535e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair    //-------------------------------------------------------------------------
545e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair
555e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair    CommandHandler createCommandHandler() {
565e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair        new CdupCommandHandler()
575e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair    }
585e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair
595e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair    Command createValidCommand() {
605e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair        return new Command(CommandNames.CDUP, [])
615e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair    }
625e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair
635e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair    void setUp() {
645e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair        super.setUp()
65d150a70ca8f8ad6cc300cf56174c8846066a4ad4chrismair        createDirectory(SUBDIR)
665e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair    }
675e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair
685e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair}