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
44 package org.eclipse.jgit.http.test;
45
46 import static org.junit.Assert.assertEquals;
47 import static org.junit.Assert.assertTrue;
48
49 import java.io.File;
50 import java.io.IOException;
51 import java.net.URI;
52 import java.util.HashMap;
53 import java.util.List;
54
55 import org.eclipse.jetty.servlet.DefaultServlet;
56 import org.eclipse.jetty.servlet.ServletContextHandler;
57 import org.eclipse.jetty.servlet.ServletHolder;
58 import org.eclipse.jgit.junit.TestRepository;
59 import org.eclipse.jgit.junit.http.AccessEvent;
60 import org.eclipse.jgit.lib.Repository;
61 import org.eclipse.jgit.revwalk.RevBlob;
62 import org.eclipse.jgit.revwalk.RevCommit;
63 import org.eclipse.jgit.transport.HttpTransport;
64 import org.eclipse.jgit.transport.Transport;
65 import org.eclipse.jgit.transport.TransportHttp;
66 import org.eclipse.jgit.transport.URIish;
67 import org.eclipse.jgit.transport.http.HttpConnectionFactory;
68 import org.junit.Before;
69 import org.junit.Test;
70
71 public class SetAdditionalHeadersTest extends AllFactoriesHttpTestCase {
72
73 private URIish remoteURI;
74
75 private RevBlob A_txt;
76
77 private RevCommit A, B;
78
79 public SetAdditionalHeadersTest(HttpConnectionFactory cf) {
80 super(cf);
81 }
82
83 @Override
84 @Before
85 public void setUp() throws Exception {
86 super.setUp();
87
88 final TestRepository<Repository> src = createTestRepository();
89 final File srcGit = src.getRepository().getDirectory();
90 final URI base = srcGit.getParentFile().toURI();
91
92 ServletContextHandler app = server.addContext("/git");
93 app.setResourceBase(base.toString());
94 ServletHolder holder = app.addServlet(DefaultServlet.class, "/");
95
96 holder.setInitParameter("aliases", "true");
97 server.setUp();
98
99 remoteURI = toURIish(app, srcGit.getName());
100
101 A_txt = src.blob("A");
102 A = src.commit().add("A_txt", A_txt).create();
103 B = src.commit().parent(A).add("A_txt", "C").add("B", "B").create();
104 src.update(master, B);
105 }
106
107 @Test
108 public void testSetHeaders() throws IOException {
109 Repository dst = createBareRepository();
110
111 assertEquals("http", remoteURI.getScheme());
112
113 try (Transport t = Transport.open(dst, remoteURI)) {
114 assertTrue("isa TransportHttp", t instanceof TransportHttp);
115 assertTrue("isa HttpTransport", t instanceof HttpTransport);
116
117 HashMap<String, String> headers = new HashMap<>();
118 headers.put("Cookie", "someTokenValue=23gBog34");
119 headers.put("AnotherKey", "someValue");
120 ((TransportHttp) t).setAdditionalHeaders(headers);
121 t.openFetch();
122 }
123
124 List<AccessEvent> requests = getRequests();
125 assertEquals(2, requests.size());
126
127 AccessEvent info = requests.get(0);
128 assertEquals("GET", info.getMethod());
129 assertEquals(info.getRequestHeader("Cookie"), "someTokenValue=23gBog34");
130 assertEquals(info.getRequestHeader("AnotherKey"), "someValue");
131 assertEquals(200, info.getStatus());
132
133 info = requests.get(1);
134 assertEquals("GET", info.getMethod());
135 assertEquals(info.getRequestHeader("Cookie"), "someTokenValue=23gBog34");
136 assertEquals(info.getRequestHeader("AnotherKey"), "someValue");
137 assertEquals(200, info.getStatus());
138 }
139
140 }