DeleCommandHandlerTest.groovy revision 3275b5ae2d141fda9e96af90c55d2f2f375c1093
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 223275b5ae2d141fda9e96af90c55d2f2f375c1093chrismairimport org.mockftpserver.fake.filesystem.Permissions 23d150a70ca8f8ad6cc300cf56174c8846066a4ad4chrismair 2447712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair/** 2547712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair * Tests for DeleCommandHandler 2647712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair * 2747712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair * @version $Revision$ - $Date$ 2847712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair * 2947712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair * @author Chris Mair 3047712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair */ 316950d7499a1865c24b29d555591130114dbc25c0chrismairclass DeleCommandHandlerTest extends AbstractFakeCommandHandlerTest { 3247712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair 333275b5ae2d141fda9e96af90c55d2f2f375c1093chrismair static final DIR = '/' 343275b5ae2d141fda9e96af90c55d2f2f375c1093chrismair static final FILENAME = "f.txt" 353275b5ae2d141fda9e96af90c55d2f2f375c1093chrismair static final FILE = p(DIR, FILENAME) 3647712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair 3747712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair void testHandleCommand() { 38d150a70ca8f8ad6cc300cf56174c8846066a4ad4chrismair createFile(FILE) 3947712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair commandHandler.handleCommand(createCommand([FILE]), session) 406fed98e9c695a9024ede347900c2689979ab5785chrismair assertSessionReply(ReplyCodes.DELE_OK, ['dele', FILE]) 4147712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair assert fileSystem.exists(FILE) == false 4247712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair } 4347712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair 4447712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair void testHandleCommand_PathIsRelative() { 45d150a70ca8f8ad6cc300cf56174c8846066a4ad4chrismair createFile(FILE) 4647712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair setCurrentDirectory("/") 4747712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair commandHandler.handleCommand(createCommand([FILENAME]), session) 486fed98e9c695a9024ede347900c2689979ab5785chrismair assertSessionReply(ReplyCodes.DELE_OK, ['dele', FILENAME]) 4947712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair assert fileSystem.exists(FILE) == false 5047712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair } 5147712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair 5247712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair void testHandleCommand_PathDoesNotExistInFileSystem() { 5347712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair commandHandler.handleCommand(createCommand([FILE]), session) 54777c1c842d19df00d2529ccf43e4f4c26cfd39fbchrismair assertSessionReply(ReplyCodes.EXISTING_FILE_ERROR, ['filesystem.isNotAFile', FILE]) 5547712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair } 5647712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair 5747712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair void testHandleCommand_PathSpecifiesADirectory() { 58d150a70ca8f8ad6cc300cf56174c8846066a4ad4chrismair createDirectory(FILE) 5947712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair commandHandler.handleCommand(createCommand([FILE]), session) 60777c1c842d19df00d2529ccf43e4f4c26cfd39fbchrismair assertSessionReply(ReplyCodes.EXISTING_FILE_ERROR, ['filesystem.isNotAFile', FILE]) 6147712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair assert fileSystem.exists(FILE) 6247712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair } 6347712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair 6447712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair void testHandleCommand_MissingPathParameter() { 6547712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair testHandleCommand_MissingRequiredParameter([]) 6647712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair } 6747712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair 6847712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair void testHandleCommand_DeleteThrowsException() { 69d150a70ca8f8ad6cc300cf56174c8846066a4ad4chrismair createFile(FILE) 7047712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair overrideMethodToThrowFileSystemException("delete") 7147712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair handleCommand([FILE]) 72777c1c842d19df00d2529ccf43e4f4c26cfd39fbchrismair assertSessionReply(ReplyCodes.EXISTING_FILE_ERROR, ERROR_MESSAGE_KEY) 7347712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair } 7447712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair 753275b5ae2d141fda9e96af90c55d2f2f375c1093chrismair void testHandleCommand_NoWriteAccessToParentDirectory() { 763275b5ae2d141fda9e96af90c55d2f2f375c1093chrismair createFile(FILE) 773275b5ae2d141fda9e96af90c55d2f2f375c1093chrismair fileSystem.getEntry(DIR).permissions = new Permissions('r-xr-xr-x') 783275b5ae2d141fda9e96af90c55d2f2f375c1093chrismair commandHandler.handleCommand(createCommand([FILE]), session) 793275b5ae2d141fda9e96af90c55d2f2f375c1093chrismair assertSessionReply(ReplyCodes.EXISTING_FILE_ERROR, ['filesystem.cannotWrite', DIR]) 803275b5ae2d141fda9e96af90c55d2f2f375c1093chrismair assert fileSystem.exists(FILE) 813275b5ae2d141fda9e96af90c55d2f2f375c1093chrismair } 823275b5ae2d141fda9e96af90c55d2f2f375c1093chrismair 8347712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair //------------------------------------------------------------------------- 8447712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair // Helper Methods 8547712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair //------------------------------------------------------------------------- 8647712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair 8747712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair CommandHandler createCommandHandler() { 8847712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair new DeleCommandHandler() 8947712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair } 9047712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair 9147712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair Command createValidCommand() { 9247712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair return new Command(CommandNames.DELE, [FILE]) 9347712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair } 9447712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair 9547712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair}