1a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair/* 2a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair * Copyright 2008 the original author or authors. 3a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair * 4a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair * Licensed under the Apache License, Version 2.0 (the "License"); 5a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair * you may not use this file except in compliance with the License. 6a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair * You may obtain a copy of the License at 7a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair * 8a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair * http://www.apache.org/licenses/LICENSE-2.0 9a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair * 10a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair * Unless required by applicable law or agreed to in writing, software 11a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair * distributed under the License is distributed on an "AS IS" BASIS, 12a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair * See the License for the specific language governing permissions and 14a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair * limitations under the License. 15a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair */ 16a0ad464efff5f5e2d2523a3522cce6823ce05858chrismairpackage org.mockftpserver.fake.example; 17a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair 18a0ad464efff5f5e2d2523a3522cce6823ce05858chrismairimport org.mockftpserver.fake.FakeFtpServer; 19a0ad464efff5f5e2d2523a3522cce6823ce05858chrismairimport org.mockftpserver.fake.UserAccount; 20a0ad464efff5f5e2d2523a3522cce6823ce05858chrismairimport org.mockftpserver.fake.filesystem.FileEntry; 21a0ad464efff5f5e2d2523a3522cce6823ce05858chrismairimport org.mockftpserver.fake.filesystem.FileSystem; 22a0ad464efff5f5e2d2523a3522cce6823ce05858chrismairimport org.mockftpserver.fake.filesystem.UnixFakeFileSystem; 23a0ad464efff5f5e2d2523a3522cce6823ce05858chrismairimport org.mockftpserver.stub.example.RemoteFile; 24a0ad464efff5f5e2d2523a3522cce6823ce05858chrismairimport org.mockftpserver.test.AbstractTest; 25a0ad464efff5f5e2d2523a3522cce6823ce05858chrismairimport org.mockftpserver.test.IntegrationTest; 26a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair 27a0ad464efff5f5e2d2523a3522cce6823ce05858chrismairimport java.io.IOException; 28a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair 29a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair/** 30a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair * Example test using FakeFtpServer, with programmatic configuration. 31a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair */ 32a0ad464efff5f5e2d2523a3522cce6823ce05858chrismairpublic class RemoteFileTest extends AbstractTest implements IntegrationTest { 33a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair 34a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair private static final int PORT = 9981; 35a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair private static final String HOME_DIR = "/"; 36a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair private static final String FILE = "/dir/sample.txt"; 37a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair private static final String CONTENTS = "abcdef 1234567890"; 38a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair 39a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair private RemoteFile remoteFile; 40a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair private FakeFtpServer fakeFtpServer; 41a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair 42a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair public void testReadFile() throws Exception { 43a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair String contents = remoteFile.readFile(FILE); 44a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair assertEquals("contents", CONTENTS, contents); 45a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair } 46a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair 47a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair public void testReadFileThrowsException() { 48a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair try { 49a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair remoteFile.readFile("NoSuchFile.txt"); 50a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair fail("Expected IOException"); 51a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair } 52a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair catch (IOException expected) { 53a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair // Expected this 54a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair } 55a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair } 56a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair 57a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair protected void setUp() throws Exception { 58a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair super.setUp(); 59a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair remoteFile = new RemoteFile(); 60a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair remoteFile.setServer("localhost"); 61a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair remoteFile.setPort(PORT); 62a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair fakeFtpServer = new FakeFtpServer(); 63a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair fakeFtpServer.setServerControlPort(PORT); 64a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair 65a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair FileSystem fileSystem = new UnixFakeFileSystem(); 66a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair fileSystem.add(new FileEntry(FILE, CONTENTS)); 67a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair fakeFtpServer.setFileSystem(fileSystem); 68a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair 69a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair UserAccount userAccount = new UserAccount(RemoteFile.USERNAME, RemoteFile.PASSWORD, HOME_DIR); 70a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair fakeFtpServer.addUserAccount(userAccount); 71a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair 72a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair fakeFtpServer.start(); 73a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair } 74a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair 75a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair /** 76a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair * @see org.mockftpserver.test.AbstractTest#tearDown() 77a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair */ 78a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair protected void tearDown() throws Exception { 79a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair super.tearDown(); 80a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair fakeFtpServer.stop(); 81a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair } 82a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair 83a0ad464efff5f5e2d2523a3522cce6823ce05858chrismair}