1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.vfs2.provider.ftp;
18
19 import junit.framework.Test;
20
21 import org.apache.commons.vfs2.FileName;
22 import org.apache.commons.vfs2.FileSystem;
23 import org.apache.commons.vfs2.FileSystemOptions;
24 import org.apache.commons.vfs2.IPv6LocalConnectionTests;
25 import org.apache.commons.vfs2.impl.DefaultFileSystemManager;
26 import org.apache.commons.vfs2.provider.GenericFileName;
27 import org.mockito.Mockito;
28
29 public class FtpProviderIPv6TestCase extends FtpProviderTestCase {
30
31 private static class MockedClientFtpFileProvider extends FtpFileProvider {
32 @Override
33 protected FileSystem doCreateFileSystem(final FileName name, final FileSystemOptions fileSystemOptions) {
34 final GenericFileName rootName = (GenericFileName) name;
35 return new FtpFileSystem(rootName, Mockito.mock(FtpClient.class), fileSystemOptions);
36 }
37 }
38
39 public static Test suite() throws Exception {
40 return getSystemTestUriOverride() == null ?
41 suite(new FtpProviderIPv6TestCase(), FtpProviderIPv6TestCase.class, IPv6LocalConnectionTests.class) :
42 suite(new FtpProviderIPv6TestCase(), FtpProviderIPv6TestCase.class);
43 }
44
45 @Override
46 public void prepare(final DefaultFileSystemManager manager) throws Exception {
47 manager.addProvider("ftp", new MockedClientFtpFileProvider());
48 }
49
50 @org.junit.Test
51 public void testResolveIPv6Url() throws Exception {
52 final String ipv6Url = "ftp://[fe80::1c42:dae:8370:aea6%en1]/file.txt";
53
54 final FtpFileObject fileObject = (FtpFileObject) getManager().resolveFile(ipv6Url, new FileSystemOptions());
55
56 assertEquals("ftp://[fe80::1c42:dae:8370:aea6%en1]/", fileObject.getFileSystem().getRootURI());
57 assertEquals("file.txt", fileObject.getRelPath());
58 }
59 }