Skip to content

Commit

Permalink
Test advertised capabilities with protocol V0 and allow*Sha1InWant
Browse files Browse the repository at this point in the history
The advertised capabilities with protocol V0 were untested
leading to potential regressions when advertising what
SHA1 should or should not be on the list of capabilities.

Verify that allow-tip-sha1-in-want and allow-reachable-sha1-in-want
are properly advertised with the allow*Sha1InWant is set in
jgit.config.

Change-Id: Id48af2bc19280f2dcb26aa8e8765cde8f2ce7a06
(cherry picked from commit 5583f6a)
  • Loading branch information
pszlazak authored and msohn committed Nov 21, 2024
1 parent 5b1513a commit 079dbe8
Showing 1 changed file with 42 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertThrows;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
Expand Down Expand Up @@ -563,6 +564,47 @@ private void checkUnadvertisedIfUnallowed(String configSection,
assertThat(lines, hasItems("ls-refs", "fetch", "server-option"));
}

@Test
public void testV0CapabilitiesAllowAnySha1InWant() throws Exception {
checkAvertisedCapabilityProtocolV0IfAllowed("uploadpack",
"allowanysha1inwant", "allow-reachable-sha1-in-want",
"allow-tip-sha1-in-want");
}

@Test
public void testV0CapabilitiesAllowReachableSha1InWant() throws Exception {
checkAvertisedCapabilityProtocolV0IfAllowed("uploadpack",
"allowreachablesha1inwant", "allow-reachable-sha1-in-want");
}

@Test
public void testV0CapabilitiesAllowTipSha1InWant() throws Exception {
checkAvertisedCapabilityProtocolV0IfAllowed("uploadpack",
"allowtipsha1inwant", "allow-tip-sha1-in-want");
}

private void checkAvertisedCapabilityProtocolV0IfAllowed(
String configSection, String configName, String... capabilities)
throws Exception {
server.getConfig().setBoolean(configSection, null, configName, true);
ByteArrayInputStream recvStream = uploadPackSetup(
TransferConfig.ProtocolVersion.V0.version(), null,
PacketLineIn.end());
PacketLineIn pckIn = new PacketLineIn(recvStream);

String line;
while (!PacketLineIn.isEnd((line = pckIn.readString()))) {
if (line.contains("capabilities")) {
List<String> linesCapabilities = Arrays.asList(line.substring(
line.indexOf(" ", line.indexOf("capabilities")) + 1)
.split(" "));
assertThat(linesCapabilities, hasItems(capabilities));
return;
}
}
fail("Server side protocol did not contain any capabilities'");
}

@Test
public void testV2CapabilitiesAllowFilter() throws Exception {
checkAdvertisedIfAllowed("uploadpack", "allowfilter", "filter");
Expand Down

0 comments on commit 079dbe8

Please sign in to comment.