147712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair/* 247712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair * Copyright 2008 the original author or authors. 347712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair * 447712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair * Licensed under the Apache License, Version 2.0 (the "License"); 547712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair * you may not use this file except in compliance with the License. 647712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair * You may obtain a copy of the License at 747712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair * 847712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair * http://www.apache.org/licenses/LICENSE-2.0 947712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair * 1047712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair * Unless required by applicable law or agreed to in writing, software 1147712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair * distributed under the License is distributed on an "AS IS" BASIS, 1247712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1347712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair * See the License for the specific language governing permissions and 1447712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair * limitations under the License. 1547712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair */ 1647712ff43a2b7a33f58fc18afd01929a2e4c626fchrismairpackage org.mockftpserver.fake.command 1747712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair 1847712ff43a2b7a33f58fc18afd01929a2e4c626fchrismairimport org.mockftpserver.core.command.Command 1947712ff43a2b7a33f58fc18afd01929a2e4c626fchrismairimport org.mockftpserver.core.command.CommandHandler 2047712ff43a2b7a33f58fc18afd01929a2e4c626fchrismairimport org.mockftpserver.core.command.CommandNames 2147712ff43a2b7a33f58fc18afd01929a2e4c626fchrismairimport org.mockftpserver.core.command.ReplyCodes 22ef13cb2302efe30bdff397e11aae379cbb419b9bchrismairimport org.mockftpserver.fake.filesystem.FileSystemException 233275b5ae2d141fda9e96af90c55d2f2f375c1093chrismairimport org.mockftpserver.fake.filesystem.Permissions 24d150a70ca8f8ad6cc300cf56174c8846066a4ad4chrismair 2547712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair/** 2647712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair * Tests for DeleCommandHandler 2747712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair * 2847712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair * @version $Revision$ - $Date$ 2947712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair * 3047712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair * @author Chris Mair 3147712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair */ 325303c6ae1dde5f399fe48803e677942fc4326344chrismairclass DeleCommandHandlerTest extends AbstractFakeCommandHandlerTestCase { 3347712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair 343275b5ae2d141fda9e96af90c55d2f2f375c1093chrismair static final DIR = '/' 353275b5ae2d141fda9e96af90c55d2f2f375c1093chrismair static final FILENAME = "f.txt" 363275b5ae2d141fda9e96af90c55d2f2f375c1093chrismair static final FILE = p(DIR, FILENAME) 3747712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair 3847712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair void testHandleCommand() { 39d150a70ca8f8ad6cc300cf56174c8846066a4ad4chrismair createFile(FILE) 401ca7eb7f6c60913fb6edf267a79e3991d14ae3f7chrismair handleCommand([FILE]) 416fed98e9c695a9024ede347900c2689979ab5785chrismair assertSessionReply(ReplyCodes.DELE_OK, ['dele', FILE]) 4247712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair assert fileSystem.exists(FILE) == false 4347712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair } 4447712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair 4547712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair void testHandleCommand_PathIsRelative() { 46d150a70ca8f8ad6cc300cf56174c8846066a4ad4chrismair createFile(FILE) 4747712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair setCurrentDirectory("/") 481ca7eb7f6c60913fb6edf267a79e3991d14ae3f7chrismair handleCommand([FILENAME]) 496fed98e9c695a9024ede347900c2689979ab5785chrismair assertSessionReply(ReplyCodes.DELE_OK, ['dele', FILENAME]) 5047712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair assert fileSystem.exists(FILE) == false 5147712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair } 5247712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair 5347712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair void testHandleCommand_PathDoesNotExistInFileSystem() { 541ca7eb7f6c60913fb6edf267a79e3991d14ae3f7chrismair handleCommand([FILE]) 55c4a22299b897279a8518308b9067da84af077281chrismair assertSessionReply(ReplyCodes.READ_FILE_ERROR, ['filesystem.isNotAFile', FILE]) 5647712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair } 5747712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair 5847712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair void testHandleCommand_PathSpecifiesADirectory() { 59d150a70ca8f8ad6cc300cf56174c8846066a4ad4chrismair createDirectory(FILE) 601ca7eb7f6c60913fb6edf267a79e3991d14ae3f7chrismair handleCommand([FILE]) 61c4a22299b897279a8518308b9067da84af077281chrismair assertSessionReply(ReplyCodes.READ_FILE_ERROR, ['filesystem.isNotAFile', FILE]) 6247712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair assert fileSystem.exists(FILE) 6347712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair } 6447712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair 6547712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair void testHandleCommand_MissingPathParameter() { 6647712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair testHandleCommand_MissingRequiredParameter([]) 6747712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair } 6847712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair 6947712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair void testHandleCommand_DeleteThrowsException() { 70d150a70ca8f8ad6cc300cf56174c8846066a4ad4chrismair createFile(FILE) 71ef13cb2302efe30bdff397e11aae379cbb419b9bchrismair// overrideMethodToThrowFileSystemException("delete") 72ef13cb2302efe30bdff397e11aae379cbb419b9bchrismair fileSystem.deleteMethodException = new FileSystemException("bad", ERROR_MESSAGE_KEY) 7347712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair handleCommand([FILE]) 74c4a22299b897279a8518308b9067da84af077281chrismair assertSessionReply(ReplyCodes.READ_FILE_ERROR, ERROR_MESSAGE_KEY) 7547712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair } 7647712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair 773275b5ae2d141fda9e96af90c55d2f2f375c1093chrismair void testHandleCommand_NoWriteAccessToParentDirectory() { 783275b5ae2d141fda9e96af90c55d2f2f375c1093chrismair createFile(FILE) 793275b5ae2d141fda9e96af90c55d2f2f375c1093chrismair fileSystem.getEntry(DIR).permissions = new Permissions('r-xr-xr-x') 801ca7eb7f6c60913fb6edf267a79e3991d14ae3f7chrismair handleCommand([FILE]) 81c4a22299b897279a8518308b9067da84af077281chrismair assertSessionReply(ReplyCodes.READ_FILE_ERROR, ['filesystem.cannotWrite', DIR]) 823275b5ae2d141fda9e96af90c55d2f2f375c1093chrismair assert fileSystem.exists(FILE) 833275b5ae2d141fda9e96af90c55d2f2f375c1093chrismair } 843275b5ae2d141fda9e96af90c55d2f2f375c1093chrismair 8547712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair //------------------------------------------------------------------------- 8647712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair // Helper Methods 8747712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair //------------------------------------------------------------------------- 8847712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair 8947712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair CommandHandler createCommandHandler() { 9047712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair new DeleCommandHandler() 9147712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair } 9247712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair 9347712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair Command createValidCommand() { 9447712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair return new Command(CommandNames.DELE, [FILE]) 9547712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair } 9647712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair 9747712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair}