View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *      http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
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  }