1
2
3
4
5
6
7
8
9
10 package org.eclipse.jgit.gpg.bc.internal;
11
12 import static org.junit.Assert.assertFalse;
13 import static org.junit.Assert.assertTrue;
14
15 import java.util.Locale;
16
17 import org.junit.Test;
18
19 public class BouncyCastleGpgKeyLocatorTest {
20
21 private static final String USER_ID = "Heinrich Heine <heinrichh@uni-duesseldorf.de>";
22
23 private static boolean match(String userId, String pattern) {
24 return BouncyCastleGpgKeyLocator.containsSigningKey(userId, pattern);
25 }
26
27 @Test
28 public void testFullMatch() throws Exception {
29 assertTrue(match(USER_ID,
30 "=Heinrich Heine <heinrichh@uni-duesseldorf.de>"));
31 assertFalse(match(USER_ID, "=Heinrich Heine"));
32 assertFalse(match(USER_ID, "= "));
33 assertFalse(match(USER_ID, "=heinrichh@uni-duesseldorf.de"));
34 }
35
36 @Test
37 public void testEmpty() throws Exception {
38 assertFalse(match(USER_ID, ""));
39 assertFalse(match(USER_ID, null));
40 assertFalse(match("", ""));
41 assertFalse(match(null, ""));
42 assertFalse(match(null, null));
43 assertFalse(match("", "something"));
44 assertFalse(match(null, "something"));
45 }
46
47 @Test
48 public void testFullEmail() throws Exception {
49 assertTrue(match(USER_ID, "<heinrichh@uni-duesseldorf.de>"));
50 assertTrue(match(USER_ID + " ", "<heinrichh@uni-duesseldorf.de>"));
51 assertFalse(match(USER_ID, "<>"));
52 assertFalse(match(USER_ID, "<h>"));
53 assertFalse(match(USER_ID, "<heinrichh>"));
54 assertFalse(match(USER_ID, "<uni-duesseldorf>"));
55 assertFalse(match(USER_ID, "<h@u>"));
56 assertFalse(match(USER_ID, "<HeinrichH@uni-duesseldorf.de>"));
57 assertFalse(match(USER_ID.substring(0, USER_ID.length() - 1),
58 "<heinrichh@uni-duesseldorf.de>"));
59 assertFalse(match("", "<>"));
60 assertFalse(match("", "<heinrichh@uni-duesseldorf.de>"));
61 }
62
63 @Test
64 public void testPartialEmail() throws Exception {
65 assertTrue(match(USER_ID, "@heinrichh@uni-duesseldorf.de"));
66 assertTrue(match(USER_ID, "@heinrichh"));
67 assertTrue(match(USER_ID, "@duesseldorf"));
68 assertTrue(match(USER_ID, "@uni-d"));
69 assertTrue(match(USER_ID, "@h"));
70 assertTrue(match(USER_ID, "@."));
71 assertTrue(match(USER_ID, "@h@u"));
72 assertFalse(match(USER_ID, "@ "));
73 assertFalse(match(USER_ID, "@"));
74 assertFalse(match(USER_ID, "@Heine"));
75 assertFalse(match(USER_ID, "@HeinrichH"));
76 assertFalse(match(USER_ID, "@Heinrich"));
77 assertFalse(match("", "@"));
78 assertFalse(match("", "@h"));
79 }
80
81 private void substringTests(String prefix) throws Exception {
82 assertTrue(match(USER_ID, prefix + "heinrichh@uni-duesseldorf.de"));
83 assertTrue(match(USER_ID, prefix + "heinrich"));
84 assertTrue(match(USER_ID, prefix + "HEIN"));
85 assertTrue(match(USER_ID, prefix + "Heine <"));
86 assertTrue(match(USER_ID, prefix + "UNI"));
87 assertTrue(match(USER_ID, prefix + "uni"));
88 assertTrue(match(USER_ID, prefix + "rich He"));
89 assertTrue(match(USER_ID, prefix + "h@u"));
90 assertTrue(match(USER_ID, prefix + USER_ID));
91 assertTrue(match(USER_ID, prefix + USER_ID.toUpperCase(Locale.ROOT)));
92 assertFalse(match(USER_ID, prefix + ""));
93 assertFalse(match(USER_ID, prefix + " "));
94 assertFalse(match(USER_ID, prefix + "yy"));
95 assertFalse(match("", prefix + ""));
96 assertFalse(match("", prefix + "uni"));
97 }
98
99 @Test
100 public void testSubstringPlain() throws Exception {
101 substringTests("");
102 }
103
104 @Test
105 public void testSubstringAsterisk() throws Exception {
106 substringTests("*");
107 }
108
109 @Test
110 public void testExplicitFingerprint() throws Exception {
111 assertFalse(match("John Fade <j.fade@example.com>", "0xfade"));
112 assertFalse(match("John Fade <0xfade@example.com>", "0xfade"));
113 assertFalse(match("", "0xfade"));
114 }
115
116 @Test
117 public void testImplicitFingerprint() throws Exception {
118 assertTrue(match("John Fade <j.fade@example.com>", "fade"));
119 assertTrue(match("John Fade <0xfade@example.com>", "fade"));
120 assertTrue(match("John Fade <j.fade@example.com>", "FADE"));
121 assertTrue(match("John Fade <0xfade@example.com>", "FADE"));
122 }
123
124 @Test
125 public void testZeroX() throws Exception {
126 assertTrue(match("John Fade <0xfade@example.com>", "0x"));
127 assertTrue(match("John Fade <0xfade@example.com>", "*0x"));
128 assertTrue(match("John Fade <0xfade@example.com>", "*0xfade"));
129 assertTrue(match("John Fade <0xfade@example.com>", "*0xFADE"));
130 assertTrue(match("John Fade <0xfade@example.com>", "@0xfade"));
131 assertFalse(match("John Fade <0xfade@example.com>", "@0xFADE"));
132 assertFalse(match("", "0x"));
133 }
134 }