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>");
26 seen.add("Afile<Yo>.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
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 }