aboutsummaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/UploadPackTest.java
diff options
context:
space:
mode:
authorIvan Frade <ifrade@google.com>2018-10-17 16:52:30 -0700
committerIvan Frade <ifrade@google.com>2018-10-19 16:55:56 -0700
commit8d4f8d55d3d14b51983f951568a2f4e4ff64b324 (patch)
tree6394f4bc0166e81f7553ba31f8274959925ef997 /org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/UploadPackTest.java
parent40f5b28545989f7e200f6e0b2007459d63279103 (diff)
downloadjgit-8d4f8d55d3d14b51983f951568a2f4e4ff64b324.tar.gz
jgit-8d4f8d55d3d14b51983f951568a2f4e4ff64b324.zip
UploadPack: Return correct peer user agent on v2 requests
UploadPack.getPeerUserAgent() doesn't produce the expected results for protocol v2 requests. In v2, the agent reported in the request (in an "agent=" line) is not in the clientCapabilities but in a field on its own. This makes getPeerUserAgent default to the transport user agent. Making "agent" a shared property between protocol v0/v1 and v2 fixes the problem, simplifies the function and harmonizes the implementation between protocol versions. In a follow up commit the "agent" will be identified on parsing time, instead of taking it from the client capabilities. Change-Id: Idf9825ec4e0b81a1458c8e3701f3e28aafd8a32a Signed-off-by: Ivan Frade <ifrade@google.com>
Diffstat (limited to 'org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/UploadPackTest.java')
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/UploadPackTest.java70
1 files changed, 58 insertions, 12 deletions
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/UploadPackTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/UploadPackTest.java
index aaef45883a..b74dcca583 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/UploadPackTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/UploadPackTest.java
@@ -429,17 +429,7 @@ public class UploadPackTest {
RefFilter refFilter, ProtocolV2Hook hook, String... inputLines)
throws Exception {
- ByteArrayOutputStream send = new ByteArrayOutputStream();
- PacketLineOut pckOut = new PacketLineOut(send);
- for (String line : inputLines) {
- if (line == PacketLineIn.END) {
- pckOut.end();
- } else if (line == PacketLineIn.DELIM) {
- pckOut.writeDelim();
- } else {
- pckOut.writeString(line);
- }
- }
+ ByteArrayInputStream send = linesAsInputStream(inputLines);
server.getConfig().setString("protocol", null, "version", "2");
UploadPack up = new UploadPack(server);
@@ -453,11 +443,28 @@ public class UploadPackTest {
}
ByteArrayOutputStream recv = new ByteArrayOutputStream();
- up.upload(new ByteArrayInputStream(send.toByteArray()), recv, null);
+ up.upload(send, recv, null);
return new ByteArrayInputStream(recv.toByteArray());
}
+ private static ByteArrayInputStream linesAsInputStream(String... inputLines)
+ throws IOException {
+ try (ByteArrayOutputStream send = new ByteArrayOutputStream()) {
+ PacketLineOut pckOut = new PacketLineOut(send);
+ for (String line : inputLines) {
+ if (line == PacketLineIn.END) {
+ pckOut.end();
+ } else if (line == PacketLineIn.DELIM) {
+ pckOut.writeDelim();
+ } else {
+ pckOut.writeString(line);
+ }
+ }
+ return new ByteArrayInputStream(send.toByteArray());
+ }
+ }
+
/*
* Invokes UploadPack with protocol v2 and sends it the given lines.
* Returns UploadPack's output stream, not including the capability
@@ -1552,6 +1559,45 @@ public class UploadPackTest {
assertTrue(client.hasObject(three.toObjectId()));
}
+ @Test
+ public void testGetPeerAgentProtocolV0() throws Exception {
+ RevCommit one = remote.commit().message("1").create();
+ remote.update("one", one);
+
+ UploadPack up = new UploadPack(server);
+ ByteArrayInputStream send = linesAsInputStream(
+ "want " + one.getName() + " agent=JGit-test/1.2.3\n",
+ PacketLineIn.END,
+ "have 11cedf1b796d44207da702f7d420684022fc0f09\n", "done\n");
+
+ ByteArrayOutputStream recv = new ByteArrayOutputStream();
+ up.upload(send, recv, null);
+
+ assertEquals(up.getPeerUserAgent(), "JGit-test/1.2.3");
+ }
+
+ @Test
+ public void testGetPeerAgentProtocolV2() throws Exception {
+ server.getConfig().setString("protocol", null, "version", "2");
+
+ RevCommit one = remote.commit().message("1").create();
+ remote.update("one", one);
+
+ UploadPack up = new UploadPack(server);
+ up.setExtraParameters(Sets.of("version=2"));
+
+ ByteArrayInputStream send = linesAsInputStream(
+ "command=fetch\n", "agent=JGit-test/1.2.4\n",
+ PacketLineIn.DELIM, "want " + one.getName() + "\n",
+ "have 11cedf1b796d44207da702f7d420684022fc0f09\n", "done\n",
+ PacketLineIn.END);
+
+ ByteArrayOutputStream recv = new ByteArrayOutputStream();
+ up.upload(send, recv, null);
+
+ assertEquals(up.getPeerUserAgent(), "JGit-test/1.2.4");
+ }
+
private static class RejectAllRefFilter implements RefFilter {
@Override
public Map<String, Ref> filter(Map<String, Ref> refs) {