1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.vfs.provider.zip.test;
18
19 import junit.framework.Test;
20 import org.apache.commons.AbstractVfsTestCase;
21 import org.apache.commons.vfs.FileObject;
22 import org.apache.commons.vfs.FileSystemManager;
23 import org.apache.commons.vfs.impl.DefaultFileSystemManager;
24 import org.apache.commons.vfs.provider.zip.ZipFileProvider;
25 import org.apache.commons.vfs.test.AbstractProviderTestConfig;
26 import org.apache.commons.vfs.test.ProviderTestConfig;
27 import org.apache.commons.vfs.test.ProviderTestSuite;
28
29 /***
30 * Tests for the Zip file system, using a zip file nested inside another zip file.
31 *
32 * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
33 */
34 public class NestedZipTestCase
35 extends AbstractProviderTestConfig
36 implements ProviderTestConfig
37 {
38 /***
39 * Creates the test suite for nested zip files.
40 */
41 public static Test suite() throws Exception
42 {
43 return new ProviderTestSuite(new NestedZipTestCase());
44 }
45
46 /***
47 * Prepares the file system manager.
48 */
49 public void prepare(final DefaultFileSystemManager manager)
50 throws Exception
51 {
52 manager.addProvider("zip", new ZipFileProvider());
53 manager.addExtensionMap("zip", "zip");
54 manager.addMimeTypeMap("application/zip", "zip");
55 }
56
57 /***
58 * Returns the base folder for tests.
59 */
60 public FileObject getBaseTestFolder(final FileSystemManager manager) throws Exception
61 {
62
63 final String zipFilePath = AbstractVfsTestCase.getTestResource("nested.zip").getAbsolutePath();
64 String uri = "zip:" + zipFilePath + "!/test.zip";
65 final FileObject zipFile = manager.resolveFile(uri);
66
67
68 final FileObject nestedFS = manager.createFileSystem(zipFile);
69 return nestedFS.resolveFile("/");
70 }
71 }