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