RntoCommandHandlerTest.groovy revision 9b31560d2bb49af587fe31dbc4f272d726eec298
1016b6dd21f1a552e28f4c6894b586b770241b0edchrismair/* 2016b6dd21f1a552e28f4c6894b586b770241b0edchrismair * Copyright 2008 the original author or authors. 3016b6dd21f1a552e28f4c6894b586b770241b0edchrismair * 4016b6dd21f1a552e28f4c6894b586b770241b0edchrismair * Licensed under the Apache License, Version 2.0 (the "License"); 5016b6dd21f1a552e28f4c6894b586b770241b0edchrismair * you may not use this file except in compliance with the License. 6016b6dd21f1a552e28f4c6894b586b770241b0edchrismair * You may obtain a copy of the License at 7016b6dd21f1a552e28f4c6894b586b770241b0edchrismair * 8016b6dd21f1a552e28f4c6894b586b770241b0edchrismair * http://www.apache.org/licenses/LICENSE-2.0 9016b6dd21f1a552e28f4c6894b586b770241b0edchrismair * 10016b6dd21f1a552e28f4c6894b586b770241b0edchrismair * Unless required by applicable law or agreed to in writing, software 11016b6dd21f1a552e28f4c6894b586b770241b0edchrismair * distributed under the License is distributed on an "AS IS" BASIS, 12016b6dd21f1a552e28f4c6894b586b770241b0edchrismair * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13016b6dd21f1a552e28f4c6894b586b770241b0edchrismair * See the License for the specific language governing permissions and 14016b6dd21f1a552e28f4c6894b586b770241b0edchrismair * limitations under the License. 15016b6dd21f1a552e28f4c6894b586b770241b0edchrismair */ 16016b6dd21f1a552e28f4c6894b586b770241b0edchrismairpackage org.mockftpserver.fake.command 17016b6dd21f1a552e28f4c6894b586b770241b0edchrismair 18016b6dd21f1a552e28f4c6894b586b770241b0edchrismairimport org.mockftpserver.core.command.Command 19016b6dd21f1a552e28f4c6894b586b770241b0edchrismairimport org.mockftpserver.core.command.CommandHandler 2070cc38904cf8c9abc6f9994cec83e2b7685a607dchrismairimport org.mockftpserver.core.command.CommandNames 2170cc38904cf8c9abc6f9994cec83e2b7685a607dchrismairimport org.mockftpserver.core.command.ReplyCodes 229b31560d2bb49af587fe31dbc4f272d726eec298chrismairimport org.mockftpserver.core.session.SessionKeys 2370cc38904cf8c9abc6f9994cec83e2b7685a607dchrismairimport org.mockftpserver.fake.filesystem.FileSystemException 2470cc38904cf8c9abc6f9994cec83e2b7685a607dchrismair 25016b6dd21f1a552e28f4c6894b586b770241b0edchrismair/** 26016b6dd21f1a552e28f4c6894b586b770241b0edchrismair * Tests for RntoCommandHandler 279b31560d2bb49af587fe31dbc4f272d726eec298chrismair * 287d4a3a2990f1a386eaf9d50cf05a9d45fab32de6chrismair * @version $Revision$ - $Date$ 29016b6dd21f1a552e28f4c6894b586b770241b0edchrismair * 30016b6dd21f1a552e28f4c6894b586b770241b0edchrismair * @author Chris Mair 31016b6dd21f1a552e28f4c6894b586b770241b0edchrismair */ 32ad98f727deebfd941b446f0f82337b2244e43b6cchrismairclass RntoCommandHandlerTest extends AbstractLoginRequiredCommandHandlerTest { 33016b6dd21f1a552e28f4c6894b586b770241b0edchrismair 34016b6dd21f1a552e28f4c6894b586b770241b0edchrismair def FROM_FILE = "/from.txt" 35016b6dd21f1a552e28f4c6894b586b770241b0edchrismair def TO_FILE = "/file.txt" 369b31560d2bb49af587fe31dbc4f272d726eec298chrismair 37016b6dd21f1a552e28f4c6894b586b770241b0edchrismair void testHandleCommand() { 38016b6dd21f1a552e28f4c6894b586b770241b0edchrismair assert fileSystem.createFile(FROM_FILE) 399b31560d2bb49af587fe31dbc4f272d726eec298chrismair commandHandler.handleCommand(createCommand([TO_FILE]), session) 40016b6dd21f1a552e28f4c6894b586b770241b0edchrismair assertSessionReply(ReplyCodes.RNTO_OK) 41016b6dd21f1a552e28f4c6894b586b770241b0edchrismair assert !fileSystem.exists(FROM_FILE), FROM_FILE 42016b6dd21f1a552e28f4c6894b586b770241b0edchrismair assert fileSystem.exists(TO_FILE), TO_FILE 43016b6dd21f1a552e28f4c6894b586b770241b0edchrismair assert session.getAttribute(SessionKeys.RENAME_FROM) == null 449b31560d2bb49af587fe31dbc4f272d726eec298chrismair } 459b31560d2bb49af587fe31dbc4f272d726eec298chrismair 46cb6dfe65d98c626326091432c4824764f38ab032chrismair void testHandleCommand_PathIsRelative() { 47cb6dfe65d98c626326091432c4824764f38ab032chrismair assert fileSystem.createFile(FROM_FILE) 48cb6dfe65d98c626326091432c4824764f38ab032chrismair session.setAttribute(SessionKeys.CURRENT_DIRECTORY, "/") 499b31560d2bb49af587fe31dbc4f272d726eec298chrismair commandHandler.handleCommand(createCommand(["file.txt"]), session) 50cb6dfe65d98c626326091432c4824764f38ab032chrismair assertSessionReply(ReplyCodes.RNTO_OK) 51cb6dfe65d98c626326091432c4824764f38ab032chrismair assert !fileSystem.exists(FROM_FILE), FROM_FILE 52cb6dfe65d98c626326091432c4824764f38ab032chrismair assert fileSystem.exists(TO_FILE), TO_FILE 53cb6dfe65d98c626326091432c4824764f38ab032chrismair assert session.getAttribute(SessionKeys.RENAME_FROM) == null 549b31560d2bb49af587fe31dbc4f272d726eec298chrismair } 559b31560d2bb49af587fe31dbc4f272d726eec298chrismair 56016b6dd21f1a552e28f4c6894b586b770241b0edchrismair void testHandleCommand_FromFileNotSetInSession() { 57016b6dd21f1a552e28f4c6894b586b770241b0edchrismair session.removeAttribute(SessionKeys.RENAME_FROM) 58016b6dd21f1a552e28f4c6894b586b770241b0edchrismair testHandleCommand_MissingRequiredSessionAttribute() 599b31560d2bb49af587fe31dbc4f272d726eec298chrismair } 60016b6dd21f1a552e28f4c6894b586b770241b0edchrismair 61016b6dd21f1a552e28f4c6894b586b770241b0edchrismair void testHandleCommand_ToFilenameNotValid() { 62016b6dd21f1a552e28f4c6894b586b770241b0edchrismair assert fileSystem.createFile(FROM_FILE) 639b31560d2bb49af587fe31dbc4f272d726eec298chrismair commandHandler.handleCommand(createCommand(["///"]), session) 64016b6dd21f1a552e28f4c6894b586b770241b0edchrismair assertSessionReply(ReplyCodes.FILENAME_NOT_VALID, "///") 65016b6dd21f1a552e28f4c6894b586b770241b0edchrismair assert session.getAttribute(SessionKeys.RENAME_FROM) == FROM_FILE 669b31560d2bb49af587fe31dbc4f272d726eec298chrismair } 679b31560d2bb49af587fe31dbc4f272d726eec298chrismair 68016b6dd21f1a552e28f4c6894b586b770241b0edchrismair void testHandleCommand_ToFilenameSpecifiesADirectory() { 69016b6dd21f1a552e28f4c6894b586b770241b0edchrismair assert fileSystem.createDirectory(TO_FILE) 709b31560d2bb49af587fe31dbc4f272d726eec298chrismair commandHandler.handleCommand(createCommand([TO_FILE]), session) 71016b6dd21f1a552e28f4c6894b586b770241b0edchrismair assertSessionReply(ReplyCodes.NEW_FILE_ERROR, TO_FILE) 72016b6dd21f1a552e28f4c6894b586b770241b0edchrismair assert session.getAttribute(SessionKeys.RENAME_FROM) == FROM_FILE 739b31560d2bb49af587fe31dbc4f272d726eec298chrismair } 749b31560d2bb49af587fe31dbc4f272d726eec298chrismair 75016b6dd21f1a552e28f4c6894b586b770241b0edchrismair void testHandleCommand_RenameFails() { 769b31560d2bb49af587fe31dbc4f272d726eec298chrismair commandHandler.handleCommand(createCommand([TO_FILE]), session) 77016b6dd21f1a552e28f4c6894b586b770241b0edchrismair assertSessionReply(ReplyCodes.FILENAME_NOT_VALID, TO_FILE) 78016b6dd21f1a552e28f4c6894b586b770241b0edchrismair assert session.getAttribute(SessionKeys.RENAME_FROM) == FROM_FILE 799b31560d2bb49af587fe31dbc4f272d726eec298chrismair } 809b31560d2bb49af587fe31dbc4f272d726eec298chrismair 8170cc38904cf8c9abc6f9994cec83e2b7685a607dchrismair void testHandleCommand_RenameThrowsException() { 8270cc38904cf8c9abc6f9994cec83e2b7685a607dchrismair def newMethod = {String from, String to -> throw new FileSystemException("bad") } 8370cc38904cf8c9abc6f9994cec83e2b7685a607dchrismair overrideMethod(fileSystem, "rename", newMethod) 8470cc38904cf8c9abc6f9994cec83e2b7685a607dchrismair 8570cc38904cf8c9abc6f9994cec83e2b7685a607dchrismair commandHandler.handleCommand(createCommand([TO_FILE]), session) 8670cc38904cf8c9abc6f9994cec83e2b7685a607dchrismair assertSessionReply(ReplyCodes.NEW_FILE_ERROR) 8770cc38904cf8c9abc6f9994cec83e2b7685a607dchrismair assert session.getAttribute(SessionKeys.RENAME_FROM) == FROM_FILE 889b31560d2bb49af587fe31dbc4f272d726eec298chrismair } 8970cc38904cf8c9abc6f9994cec83e2b7685a607dchrismair 90016b6dd21f1a552e28f4c6894b586b770241b0edchrismair void testHandleCommand_MissingPathParameter() { 91016b6dd21f1a552e28f4c6894b586b770241b0edchrismair testHandleCommand_MissingRequiredParameter([]) 92016b6dd21f1a552e28f4c6894b586b770241b0edchrismair } 939b31560d2bb49af587fe31dbc4f272d726eec298chrismair 94016b6dd21f1a552e28f4c6894b586b770241b0edchrismair //------------------------------------------------------------------------- 95016b6dd21f1a552e28f4c6894b586b770241b0edchrismair // Helper Methods 96016b6dd21f1a552e28f4c6894b586b770241b0edchrismair //------------------------------------------------------------------------- 979b31560d2bb49af587fe31dbc4f272d726eec298chrismair 989b31560d2bb49af587fe31dbc4f272d726eec298chrismair CommandHandler createCommandHandler() { 999b31560d2bb49af587fe31dbc4f272d726eec298chrismair new RntoCommandHandler() 1009b31560d2bb49af587fe31dbc4f272d726eec298chrismair } 1019b31560d2bb49af587fe31dbc4f272d726eec298chrismair 102016b6dd21f1a552e28f4c6894b586b770241b0edchrismair Command createValidCommand() { 103016b6dd21f1a552e28f4c6894b586b770241b0edchrismair return new Command(CommandNames.RNTO, [TO_FILE]) 104016b6dd21f1a552e28f4c6894b586b770241b0edchrismair } 105016b6dd21f1a552e28f4c6894b586b770241b0edchrismair 106016b6dd21f1a552e28f4c6894b586b770241b0edchrismair void setUp() { 107016b6dd21f1a552e28f4c6894b586b770241b0edchrismair super.setUp() 108016b6dd21f1a552e28f4c6894b586b770241b0edchrismair session.setAttribute(SessionKeys.RENAME_FROM, FROM_FILE) 109016b6dd21f1a552e28f4c6894b586b770241b0edchrismair } 1109b31560d2bb49af587fe31dbc4f272d726eec298chrismair 111016b6dd21f1a552e28f4c6894b586b770241b0edchrismair}