1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 package org.eclipse.jgit.transport.http;
44
45 import static java.util.Arrays.asList;
46 import static org.junit.Assert.assertTrue;
47 import static org.junit.Assert.fail;
48 import static org.mockito.Mockito.mock;
49 import static org.mockito.Mockito.when;
50
51 import java.net.HttpURLConnection;
52 import java.util.Collections;
53 import java.util.HashMap;
54 import java.util.LinkedList;
55 import java.util.List;
56 import java.util.Map;
57
58 import org.junit.Before;
59 import org.junit.Test;
60
61 public class JDKHttpConnectionTest {
62
63 private Map<String, List<String>> headers = new HashMap<>();
64
65 private HttpURLConnection u;
66
67 private JDKHttpConnection c;
68
69 @Before
70 public void setup() {
71 u = mock(HttpURLConnection.class);
72 c = new JDKHttpConnection(u);
73 headers.put("ABC", asList("x"));
74 }
75
76 @Test
77 public void testSingle() {
78 when(u.getHeaderFields()).thenReturn(headers);
79 assertValues("AbC", "x");
80 }
81
82 @Test
83 public void testMultiple1() {
84 headers.put("abc", asList("a"));
85 headers.put("aBC", asList("d", "e"));
86 headers.put("ABc", Collections.emptyList());
87 headers.put("AbC", (List<String>) null);
88 when(u.getHeaderFields()).thenReturn(headers);
89 assertValues("AbC", "a", "d", "e", "x");
90 }
91
92 @Test
93 public void testMultiple2() {
94 headers.put("ab", asList("y", "z", "z"));
95 when(u.getHeaderFields()).thenReturn(headers);
96 assertValues("ab", "z", "y", "z");
97 assertValues("abc", "x");
98 assertValues("aBc", "x");
99 assertValues("AbCd");
100 }
101
102 @Test
103 public void testCommaSeparatedList() {
104 headers.put("abc", asList("a,b,c", "d"));
105 when(u.getHeaderFields()).thenReturn(headers);
106 assertValues("Abc", "a,b,c", "x", "d");
107 }
108
109 private void assertValues(String key, String... values) {
110 List<String> l = new LinkedList<>();
111 List<String> hf = c.getHeaderFields(key);
112 if (hf != null) {
113 l.addAll(hf);
114 }
115 for (String v : values) {
116 if (!l.remove(v)) {
117 fail("value " + v + " not found");
118 }
119 }
120 assertTrue("found unexpected entries " + l, l.isEmpty());
121 }
122
123 }