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 23d3d88694d35ecd5908d3e0f7cc3c1e4d69eb37f2chrismairimport org.mockftpserver.fake.filesystem.Permissions 24d150a70ca8f8ad6cc300cf56174c8846066a4ad4chrismair 255e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair/** 265e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair * Tests for CdupCommandHandler 275e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair * 285e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair * @version $Revision$ - $Date$ 295e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair * 305e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair * @author Chris Mair 315e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair */ 325303c6ae1dde5f399fe48803e677942fc4326344chrismairclass CdupCommandHandlerTest extends AbstractFakeCommandHandlerTestCase { 335e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair 345e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair def DIR = "/usr" 355e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair def SUBDIR = "${DIR}/sub" 365e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair 375e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair void testHandleCommand() { 385e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair setCurrentDirectory(SUBDIR) 391ca7eb7f6c60913fb6edf267a79e3991d14ae3f7chrismair handleCommand([]) 406fed98e9c695a9024ede347900c2689979ab5785chrismair assertSessionReply(ReplyCodes.CDUP_OK, ['cdup', DIR]) 415e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair assert session.getAttribute(SessionKeys.CURRENT_DIRECTORY) == DIR 425e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair } 435e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair 445e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair void testHandleCommand_NoParentDirectory() { 455e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair setCurrentDirectory('/') 461ca7eb7f6c60913fb6edf267a79e3991d14ae3f7chrismair handleCommand([]) 47c4a22299b897279a8518308b9067da84af077281chrismair assertSessionReply(ReplyCodes.READ_FILE_ERROR, ['filesystem.parentDirectoryDoesNotExist', '/']) 485e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair assert session.getAttribute(SessionKeys.CURRENT_DIRECTORY) == '/' 495e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair } 505e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair 51d3d88694d35ecd5908d3e0f7cc3c1e4d69eb37f2chrismair void testHandleCommand_NoExecuteAccessToDirectory() { 52d3d88694d35ecd5908d3e0f7cc3c1e4d69eb37f2chrismair setCurrentDirectory(SUBDIR) 53d3d88694d35ecd5908d3e0f7cc3c1e4d69eb37f2chrismair def dir = fileSystem.getEntry(DIR) 54d3d88694d35ecd5908d3e0f7cc3c1e4d69eb37f2chrismair dir.permissions = new Permissions('rw-rw-rw-') 551ca7eb7f6c60913fb6edf267a79e3991d14ae3f7chrismair handleCommand([]) 56c4a22299b897279a8518308b9067da84af077281chrismair assertSessionReply(ReplyCodes.READ_FILE_ERROR, ['filesystem.cannotExecute', DIR]) 57d3d88694d35ecd5908d3e0f7cc3c1e4d69eb37f2chrismair assert session.getAttribute(SessionKeys.CURRENT_DIRECTORY) == SUBDIR 58d3d88694d35ecd5908d3e0f7cc3c1e4d69eb37f2chrismair } 59d3d88694d35ecd5908d3e0f7cc3c1e4d69eb37f2chrismair 605e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair //------------------------------------------------------------------------- 615e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair // Helper Methods 625e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair //------------------------------------------------------------------------- 635e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair 645e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair CommandHandler createCommandHandler() { 655e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair new CdupCommandHandler() 665e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair } 675e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair 685e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair Command createValidCommand() { 695e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair return new Command(CommandNames.CDUP, []) 705e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair } 715e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair 725e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair void setUp() { 735e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair super.setUp() 74d150a70ca8f8ad6cc300cf56174c8846066a4ad4chrismair createDirectory(SUBDIR) 755e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair } 765e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair 775e9a0227eb376a4d67ada00c7ea54d3f7962cefdchrismair}