1 package com.atlassian.vcache.internal;
2
3 import org.junit.Rule;
4 import org.junit.Test;
5 import org.junit.rules.ExpectedException;
6
7 import static org.hamcrest.Matchers.is;
8 import static org.junit.Assert.assertThat;
9
10 public class NameValidatorTest
11 {
12 @Rule
13 public ExpectedException thrown = ExpectedException.none();
14
15 @Test
16 public void isValidKeyName_valid() throws Exception
17 {
18 assertThat(NameValidator.isValidKeyName("abcdef"), is(true));
19 assertThat(NameValidator.isValidKeyName("1"), is(true));
20 assertThat(NameValidator.isValidKeyName("dot.dot"), is(true));
21 assertThat(NameValidator.isValidKeyName("slash/allow"), is(true));
22 assertThat(NameValidator.isValidKeyName("minus-minus"), is(true));
23 assertThat(NameValidator.isValidKeyName("under_score"), is(true));
24 assertThat(NameValidator.isValidKeyName("dollar$cents"), is(true));
25 }
26
27 @Test
28 public void isValidKeyName_invalid() throws Exception
29 {
30 assertThat(NameValidator.isValidKeyName(null), is(false));
31 assertThat(NameValidator.isValidKeyName(""), is(false));
32 assertThat(NameValidator.isValidKeyName("pipe|may|be|used|as|the|separator"), is(false));
33 assertThat(NameValidator.isValidKeyName("no spaces"), is(false));
34 assertThat(NameValidator.isValidKeyName("(yet)"), is(false));
35 }
36
37 @Test
38 public void requireValidKeyName_valid()
39 {
40 final String validated = NameValidator.requireValidKeyName("abc");
41 assertThat(validated, is("abc"));
42 }
43
44 @Test
45 public void requireValidKeyName_invalid()
46 {
47 thrown.expect(IllegalArgumentException.class);
48 thrown.expectMessage("Invalid key name: I'll buy that for a $1");
49
50 NameValidator.requireValidKeyName("I'll buy that for a $1");
51 }
52
53 @Test
54 public void isValidCacheName_valid() throws Exception
55 {
56 assertThat(NameValidator.isValidCacheName("abcdef"), is(true));
57 }
58
59 @Test
60 public void isValidCacheName_invalid() throws Exception
61 {
62 assertThat(NameValidator.isValidCacheName("%%%"), is(false));
63 }
64
65 @Test
66 public void requireValidCacheName_valid()
67 {
68 final String validated = NameValidator.requireValidCacheName("war$is-over");
69 assertThat(validated, is("war$is-over"));
70 }
71
72 @Test
73 public void requireValidCacheName_invalid()
74 {
75 thrown.expect(IllegalArgumentException.class);
76 thrown.expectMessage("Invalid cache name: I'll buy that for a $2");
77
78 NameValidator.requireValidCacheName("I'll buy that for a $2");
79 }
80 }