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.junit.http.HttpTestCase;
61 import org.eclipse.jgit.lib.Repository;
62 import org.eclipse.jgit.revwalk.RevBlob;
63 import org.eclipse.jgit.revwalk.RevCommit;
64 import org.eclipse.jgit.transport.HttpTransport;
65 import org.eclipse.jgit.transport.Transport;
66 import org.eclipse.jgit.transport.TransportHttp;
67 import org.eclipse.jgit.transport.URIish;
68 import org.junit.Before;
69 import org.junit.Test;
70
71 public class SetAdditionalHeadersTest extends HttpTestCase {
72
73 private URIish remoteURI;
74
75 private RevBlob A_txt;
76
77 private RevCommit A, B;
78
79
80 @Override
81 @Before
82 public void setUp() throws Exception {
83 super.setUp();
84
85 final TestRepository<Repository> src = createTestRepository();
86 final File srcGit = src.getRepository().getDirectory();
87 final URI base = srcGit.getParentFile().toURI();
88
89 ServletContextHandler app = server.addContext("/git");
90 app.setResourceBase(base.toString());
91 ServletHolder holder = app.addServlet(DefaultServlet.class, "/");
92
93 holder.setInitParameter("aliases", "true");
94 server.setUp();
95
96 remoteURI = toURIish(app, srcGit.getName());
97
98 A_txt = src.blob("A");
99 A = src.commit().add("A_txt", A_txt).create();
100 B = src.commit().parent(A).add("A_txt", "C").add("B", "B").create();
101 src.update(master, B);
102 }
103
104 @Test
105 public void testSetHeaders() throws IOException {
106 Repository dst = createBareRepository();
107
108 assertEquals("http", remoteURI.getScheme());
109
110 Transport t = Transport.open(dst, remoteURI);
111 try {
112 assertTrue("isa TransportHttp", t instanceof TransportHttp);
113 assertTrue("isa HttpTransport", t instanceof HttpTransport);
114
115 HashMap<String, String> headers = new HashMap<>();
116 headers.put("Cookie", "someTokenValue=23gBog34");
117 headers.put("AnotherKey", "someValue");
118 ((TransportHttp) t).setAdditionalHeaders(headers);
119 t.openFetch();
120 } finally {
121 t.close();
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 }