View Javadoc
1   package org.codehaus.plexus.archiver.zip;
2   
3   import java.io.File;
4   import java.io.IOException;
5   import java.io.InputStream;
6   import java.util.HashMap;
7   import java.util.HashSet;
8   import java.util.Iterator;
9   import java.util.Map;
10  import java.util.Set;
11  
12  import org.codehaus.plexus.archiver.TestSupport;
13  import org.codehaus.plexus.components.io.functions.ResourceAttributeSupplier;
14  import org.codehaus.plexus.components.io.resources.PlexusIoResource;
15  import org.junit.jupiter.api.Test;
16  
17  import static org.junit.jupiter.api.Assertions.assertEquals;
18  import static org.junit.jupiter.api.Assertions.assertTrue;
19  
20  class PlexusArchiverZipFileResourceCollectionTest extends TestSupport {
21  
22      @Test
23      void testFilesWithIllegalHtmlChars() throws Exception {
24          File testZip = new File(getBasedir(), "src/test/resources/archiveWithIllegalHtmlFileName.zip");
25          Set<String> seen = new HashSet<>();
26          seen.add("AFileThatNeedsHtmlEsc%3F&gt");
27          seen.add("Afile&lt;Yo&gt;.txt");
28          seen.add("File With Space.txt");
29          seen.add("FileWith%.txt");
30          PlexusArchiverZipFileResourceCollection prc = new PlexusArchiverZipFileResourceCollection();
31          prc.setFile(testZip);
32          final Iterator<PlexusIoResource> entries = prc.getEntries();
33          while (entries.hasNext()) {
34              final PlexusIoResource next = entries.next();
35              assertTrue(seen.remove(next.getName()), next.getName() + "was not present");
36              final InputStream contents = next.getContents();
37              contents.close();
38          }
39      }
40  
41      @Test
42      void testFileModes() throws IOException {
43          File testZip = new File(getBasedir(), "src/test/resources/zeroFileMode/mixed-file-mode.zip");
44          Map<String, Integer> originalUnixModes = new HashMap<>();
45          originalUnixModes.put("platform-fat", -1);
46          originalUnixModes.put("zero-unix-mode", 0);
47          // ---xrw-r-- the crazy permissions are on purpose so we don't hit some default value
48          originalUnixModes.put("non-zero-unix-mode", 0164);
49          PlexusArchiverZipFileResourceCollection prc = new PlexusArchiverZipFileResourceCollection();
50          prc.setFile(testZip);
51          Iterator<PlexusIoResource> entries = prc.getEntries();
52          while (entries.hasNext()) {
53              PlexusIoResource entry = entries.next();
54              int entryUnixMode =
55                      ((ResourceAttributeSupplier) entry).getAttributes().getOctalMode();
56              int originalUnixMode = originalUnixModes.get(entry.getName());
57              assertEquals(originalUnixMode, entryUnixMode);
58          }
59      }
60  }