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