1 package com.atlassian.plugin.util.zip;
2
3 import org.junit.Test;
4
5 import static com.atlassian.plugin.util.zip.AbstractUnzipper.normaliseAndVerify;
6 import static org.apache.commons.io.FilenameUtils.separatorsToSystem;
7 import static org.junit.Assert.assertEquals;
8
9 public class AbstractUnzipperTest {
10 @Test
11 public void testNormaliseAndVerifySimple() {
12 assertEquals("simple", normaliseAndVerify("simple"));
13 }
14
15 @Test
16 public void testNormaliseAndVerifySubdir() {
17 assertEquals(separatorsToSystem("subdir/file"), normaliseAndVerify("subdir/file"));
18 }
19
20 @Test
21 public void testNormaliseAndVerifyRelativeSimple() {
22 assertEquals("test-relative.txt", normaliseAndVerify("something/../test-relative.txt"));
23 }
24
25 @Test
26 public void testNormaliseAndVerifyRelativeComplex() {
27 assertEquals("test-relative.txt", normaliseAndVerify("./something/.././test-relative.txt"));
28 }
29
30 @Test(expected = IllegalArgumentException.class)
31 public void testNormaliseAndVerifyIllegalRelative() {
32 normaliseAndVerify("something/../../test-relative.txt");
33 }
34
35 @Test(expected = IllegalArgumentException.class)
36 public void testNormaliseAndVerifyIllegalRelativeTrailingDots() {
37 normaliseAndVerify("something/../test-relative.txt/..");
38 }
39
40 @Test(expected = IllegalArgumentException.class)
41 public void testNormaliseAndVerifyIllegalRelativeLeadingSlash() {
42 normaliseAndVerify("/something/../../test-relative.txt");
43 }
44
45 @Test(expected = IllegalArgumentException.class)
46 public void testNormaliseAndVerifyIllegalRelativeLeadingDots() {
47 normaliseAndVerify("../test-relative.txt");
48 }
49
50 @Test(expected = IllegalArgumentException.class)
51 public void testNormaliseAndVerifyIllegalRelativeLeadingSeriesOfDots() {
52 normaliseAndVerify("./../test-relative.txt");
53 }
54 }