1 package com.atlassian.asap.core.validator;
2
3 import com.atlassian.asap.core.exception.InvalidHeaderException;
4 import org.junit.Test;
5 import org.junit.runner.RunWith;
6 import org.mockito.runners.MockitoJUnitRunner;
7
8 @RunWith(MockitoJUnitRunner.class)
9 public class ValidatedKeyIdTest {
10 private static final String VALID_KEY_ID = "some/issuer/has/a/key";
11
12 @Test
13 public void shouldAcceptValidKeyId() throws Exception {
14 ValidatedKeyId.validate(VALID_KEY_ID);
15 }
16
17 @Test(expected = InvalidHeaderException.class)
18 public void shouldRejectBlankKid() throws Exception {
19 ValidatedKeyId.validate(" ");
20 }
21
22 @Test(expected = InvalidHeaderException.class)
23 public void shouldRejectKidWithDirectoryTraversalComponents() throws Exception {
24 ValidatedKeyId.validate("dir1/../dir2");
25 }
26
27 @Test(expected = InvalidHeaderException.class)
28 public void shouldRejectKidWithLeadingSlash() throws Exception {
29 ValidatedKeyId.validate("/dir1/dir2");
30 }
31
32 @Test(expected = InvalidHeaderException.class)
33 public void shouldRejectKidWithUrlEscapedChars() throws Exception {
34 ValidatedKeyId.validate("dir/some%thing");
35 }
36
37 @Test(expected = InvalidHeaderException.class)
38 public void shouldRejectKidWithNullChar() throws Exception {
39 ValidatedKeyId.validate("dir/some\u0000thing");
40 }
41
42 @Test(expected = InvalidHeaderException.class)
43 public void shouldRejectKidWithQuestionMark() throws Exception {
44 ValidatedKeyId.validate("dir/some?thing");
45 }
46
47 @Test(expected = InvalidHeaderException.class)
48 public void shouldRejectKidWithFragmentSeparator() throws Exception {
49 ValidatedKeyId.validate("dir/some#thing");
50 }
51
52 @Test(expected = InvalidHeaderException.class)
53 public void shouldRejectKidLeadingDoubleSlash() throws Exception {
54 ValidatedKeyId.validate("//bar");
55 }
56
57 @Test(expected = InvalidHeaderException.class)
58 public void shouldRejectKidDoubleSlash() throws Exception {
59 ValidatedKeyId.validate("foo//bar/baz");
60 }
61
62 @Test(expected = InvalidHeaderException.class)
63 public void shouldRejectKidBackSlash() throws Exception {
64 ValidatedKeyId.validate("\\foo/bar");
65 }
66
67 @Test(expected = InvalidHeaderException.class)
68 public void shouldRejectKidBackSlashWithTraversal() throws Exception {
69 ValidatedKeyId.validate("foo\\..\\bar");
70 }
71 }