DeleCommandHandlerTest.groovy revision 6fed98e9c695a9024ede347900c2689979ab5785
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
2247712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair
2347712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair/**
2447712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair * Tests for DeleCommandHandler
2547712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair *
2647712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair * @version $Revision$ - $Date$
2747712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair *
2847712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair * @author Chris Mair
2947712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair */
3047712ff43a2b7a33f58fc18afd01929a2e4c626fchrismairclass DeleCommandHandlerTest extends AbstractLoginRequiredCommandHandlerTest {
3147712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair
3247712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair    def FILENAME = "f.txt"
3347712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair    def FILE = "/" + FILENAME
3447712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair
3547712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair    void testHandleCommand() {
3647712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair        assert fileSystem.createFile(FILE)
3747712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair        commandHandler.handleCommand(createCommand([FILE]), session)
386fed98e9c695a9024ede347900c2689979ab5785chrismair        assertSessionReply(ReplyCodes.DELE_OK, ['dele', FILE])
3947712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair        assert fileSystem.exists(FILE) == false
4047712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair    }
4147712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair
4247712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair    void testHandleCommand_PathIsRelative() {
4347712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair        assert fileSystem.createFile(FILE)
4447712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair        setCurrentDirectory("/")
4547712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair        commandHandler.handleCommand(createCommand([FILENAME]), session)
466fed98e9c695a9024ede347900c2689979ab5785chrismair        assertSessionReply(ReplyCodes.DELE_OK, ['dele', FILENAME])
4747712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair        assert fileSystem.exists(FILE) == false
4847712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair    }
4947712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair
5047712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair    void testHandleCommand_PathDoesNotExistInFileSystem() {
5147712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair        commandHandler.handleCommand(createCommand([FILE]), session)
5247712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair        assertSessionReply(ReplyCodes.EXISTING_FILE_ERROR, FILE)
5347712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair    }
5447712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair
5547712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair    void testHandleCommand_PathSpecifiesADirectory() {
5647712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair        assert fileSystem.createDirectory(FILE)
5747712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair        commandHandler.handleCommand(createCommand([FILE]), session)
5847712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair        assertSessionReply(ReplyCodes.EXISTING_FILE_ERROR, FILE)
5947712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair        assert fileSystem.exists(FILE)
6047712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair    }
6147712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair
6247712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair    void testHandleCommand_MissingPathParameter() {
6347712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair        testHandleCommand_MissingRequiredParameter([])
6447712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair    }
6547712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair
6647712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair    void testHandleCommand_DeleteThrowsException() {
6747712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair        overrideMethodToThrowFileSystemException("delete")
6847712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair        handleCommand([FILE])
6947712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair        assertSessionReply(ReplyCodes.EXISTING_FILE_ERROR)
7047712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair    }
7147712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair
7247712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair    //-------------------------------------------------------------------------
7347712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair    // Helper Methods
7447712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair    //-------------------------------------------------------------------------
7547712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair
7647712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair    CommandHandler createCommandHandler() {
7747712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair        new DeleCommandHandler()
7847712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair    }
7947712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair
8047712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair    Command createValidCommand() {
8147712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair        return new Command(CommandNames.DELE, [FILE])
8247712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair    }
8347712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair
8447712ff43a2b7a33f58fc18afd01929a2e4c626fchrismair}