100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair/* 200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * Copyright 2008 the original author or authors. 300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * 400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * Licensed under the Apache License, Version 2.0 (the "License"); 500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * you may not use this file except in compliance with the License. 600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * You may obtain a copy of the License at 700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * 800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * http://www.apache.org/licenses/LICENSE-2.0 900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * 1000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * Unless required by applicable law or agreed to in writing, software 1100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * distributed under the License is distributed on an "AS IS" BASIS, 1200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * See the License for the specific language governing permissions and 1400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * limitations under the License. 1500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair */ 1600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismairpackage org.mockftpserver.fake.command 1700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 1800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismairimport org.mockftpserver.core.command.Command 1900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismairimport org.mockftpserver.core.command.CommandHandler 2000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismairimport org.mockftpserver.core.command.CommandNames 2100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismairimport org.mockftpserver.core.command.ReplyCodes 2200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismairimport org.mockftpserver.core.session.SessionKeys 2300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismairimport org.mockftpserver.fake.filesystem.Permissions 2400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 2500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair/** 2600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * Tests for RnfrCommandHandler 2700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * 2800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * @version $Revision$ - $Date$ 2900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * 3000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * @author Chris Mair 3100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair */ 3200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismairclass RnfrCommandHandlerTest extends AbstractFakeCommandHandlerTestCase { 3300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 3400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair private static final FILE = "/file.txt" 3500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair private static final DIR = "/subdir" 3600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 3700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair void testHandleCommand() { 3800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair createFile(FILE) 3900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair handleCommand([FILE]) 4000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assertSessionReply(ReplyCodes.RNFR_OK, 'rnfr') 4100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert session.getAttribute(SessionKeys.RENAME_FROM) == FILE 4200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair } 4300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 4400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair void testHandleCommand_PathIsRelative() { 4500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair createFile(FILE) 4600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair session.setAttribute(SessionKeys.CURRENT_DIRECTORY, "/") 4700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair handleCommand(["file.txt"]) 4800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assertSessionReply(ReplyCodes.RNFR_OK, 'rnfr') 4900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert session.getAttribute(SessionKeys.RENAME_FROM) == FILE 5000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair } 5100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 5200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair void testHandleCommand_PathDoesNotExistInFileSystem() { 5300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair handleCommand([FILE]) 5400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assertSessionReply(ReplyCodes.READ_FILE_ERROR, ['filesystem.doesNotExist', FILE]) 5500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert session.getAttribute(SessionKeys.RENAME_FROM) == null 5600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair } 5700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 5800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair void testHandleCommand_PathSpecifiesADirectory() { 5900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair createDirectory(DIR) 6000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair handleCommand([DIR]) 6100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assertSessionReply(ReplyCodes.RNFR_OK, 'rnfr') 6200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert session.getAttribute(SessionKeys.RENAME_FROM) == DIR 6300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair } 6400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 6500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair void testHandleCommand_NoReadAccessToFile() { 6600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair createFile(FILE) 6700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair fileSystem.getEntry(FILE).permissions = new Permissions('-wx-wx-wx') 6800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair handleCommand([FILE]) 6900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assertSessionReply(ReplyCodes.READ_FILE_ERROR, ['filesystem.cannotRead', FILE]) 7000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair } 7100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 7200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair void testHandleCommand_MissingPathParameter() { 7300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair testHandleCommand_MissingRequiredParameter([]) 7400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair } 7500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 7600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair //------------------------------------------------------------------------- 7700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair // Helper Methods 7800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair //------------------------------------------------------------------------- 7900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 8000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair CommandHandler createCommandHandler() { 8100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair new RnfrCommandHandler() 8200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair } 8300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 8400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair Command createValidCommand() { 8500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair return new Command(CommandNames.RNFR, [FILE]) 8600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair } 8700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 8800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair}