1c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair/*
2c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair * Copyright 2008 the original author or authors.
3c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair *
4c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair * Licensed under the Apache License, Version 2.0 (the "License");
5c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair * you may not use this file except in compliance with the License.
6c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair * You may obtain a copy of the License at
7c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair *
8c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair *      http://www.apache.org/licenses/LICENSE-2.0
9c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair *
10c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair * Unless required by applicable law or agreed to in writing, software
11c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair * distributed under the License is distributed on an "AS IS" BASIS,
12c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair * See the License for the specific language governing permissions and
14c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair * limitations under the License.
15c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair */
16c1de24f1bfa6699e54b069e300af5e4246b34a34chrismairpackage org.mockftpserver.fake.command
17c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair
18c1de24f1bfa6699e54b069e300af5e4246b34a34chrismairimport org.mockftpserver.core.command.Command
19c1de24f1bfa6699e54b069e300af5e4246b34a34chrismairimport org.mockftpserver.core.command.CommandHandler
20c1de24f1bfa6699e54b069e300af5e4246b34a34chrismairimport org.mockftpserver.core.command.CommandNames
21c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair
22c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair/**
23c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair * Tests for StouCommandHandler
24c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair *
25c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair * @version $Revision$ - $Date$
26c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair *
27c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair * @author Chris Mair
28c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair */
29c1de24f1bfa6699e54b069e300af5e4246b34a34chrismairclass StouCommandHandlerTest extends AbstractStoreFileCommandHandlerTest {
30c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair
31c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair    def expectedBaseName
32c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair
33c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair    void testHandleCommand_SpecifyBaseFilename() {
34c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair        setCurrentDirectory(DIR)
35c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair        expectedBaseName = FILENAME
36c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair        testHandleCommand([expectedBaseName], 'stou', CONTENTS)
37c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair    }
38c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair
39c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair    void testHandleCommand_UseDefaultBaseFilename() {
40c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair        setCurrentDirectory(DIR)
41c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair        expectedBaseName = 'Temp'
42c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair        testHandleCommand([expectedBaseName], 'stou', CONTENTS)
43c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair    }
44c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair
45c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair    void testHandleCommand_AbsolutePath() {
46c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair        expectedBaseName = FILENAME
47c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair        testHandleCommand([FILE], 'stou', CONTENTS)
48c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair    }
49c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair
50c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair    void testHandleCommand_NoWriteAccessToExistingFile() {
51c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair        // This command always stores a new (unique) file, so this test does not apply
52c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair    }
53c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair    //-------------------------------------------------------------------------
54c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair    // Helper Methods
55c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair    //-------------------------------------------------------------------------
56c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair
57c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair    CommandHandler createCommandHandler() {
58c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair        new StouCommandHandler()
59c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair    }
60c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair
61c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair    Command createValidCommand() {
62c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair        return new Command(CommandNames.STOU, [])
63c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair    }
64c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair
65c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair    void setUp() {
66c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair        super.setUp()
67c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair        session.dataToRead = CONTENTS.bytes
68c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair    }
69c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair
70c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair    protected String verifyOutputFile() {
71c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair        def names = fileSystem.listNames(DIR)
72c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair        def filename = names.find {name -> name.startsWith(expectedBaseName) }
73c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair        assert filename
74c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair        return p(DIR, filename)
75c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair    }
76c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair
77c1de24f1bfa6699e54b069e300af5e4246b34a34chrismair}