diff options
Diffstat (limited to 'org.eclipse.jgit.http.test')
9 files changed, 125 insertions, 49 deletions
diff --git a/org.eclipse.jgit.http.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.http.test/META-INF/MANIFEST.MF index 6169d0c0f4..fed632d806 100644 --- a/org.eclipse.jgit.http.test/META-INF/MANIFEST.MF +++ b/org.eclipse.jgit.http.test/META-INF/MANIFEST.MF @@ -3,7 +3,7 @@ Bundle-ManifestVersion: 2 Bundle-Name: %plugin_name Automatic-Module-Name: org.eclipse.jgit.http.test Bundle-SymbolicName: org.eclipse.jgit.http.test -Bundle-Version: 4.11.10.qualifier +Bundle-Version: 5.0.4.qualifier Bundle-Vendor: %provider_name Bundle-Localization: plugin Bundle-RequiredExecutionEnvironment: JavaSE-1.8 @@ -25,25 +25,26 @@ Import-Package: javax.servlet;version="[2.5.0,3.2.0)", org.eclipse.jetty.util.log;version="[9.4.5,10.0.0)", org.eclipse.jetty.util.security;version="[9.4.5,10.0.0)", org.eclipse.jetty.util.thread;version="[9.4.5,10.0.0)", - org.eclipse.jgit.errors;version="[4.11.10,4.12.0)", - org.eclipse.jgit.http.server;version="[4.11.10,4.12.0)", - org.eclipse.jgit.http.server.glue;version="[4.11.10,4.12.0)", - org.eclipse.jgit.http.server.resolver;version="[4.11.10,4.12.0)", - org.eclipse.jgit.internal;version="[4.11.10,4.12.0)", - org.eclipse.jgit.internal.storage.dfs;version="[4.11.10,4.12.0)", - org.eclipse.jgit.internal.storage.file;version="[4.11.10,4.12.0)", - org.eclipse.jgit.internal.storage.reftable;version="[4.11.10,4.12.0)", - org.eclipse.jgit.junit;version="[4.11.10,4.12.0)", - org.eclipse.jgit.junit.http;version="[4.11.10,4.12.0)", - org.eclipse.jgit.lib;version="[4.11.10,4.12.0)", - org.eclipse.jgit.nls;version="[4.11.10,4.12.0)", - org.eclipse.jgit.revwalk;version="[4.11.10,4.12.0)", - org.eclipse.jgit.storage.file;version="[4.11.10,4.12.0)", - org.eclipse.jgit.transport;version="[4.11.10,4.12.0)", - org.eclipse.jgit.transport.http;version="[4.11.10,4.12.0)", - org.eclipse.jgit.transport.http.apache;version="[4.11.10,4.12.0)", - org.eclipse.jgit.transport.resolver;version="[4.11.10,4.12.0)", - org.eclipse.jgit.util;version="[4.11.10,4.12.0)", + org.eclipse.jgit.errors;version="[5.0.4,5.1.0)", + org.eclipse.jgit.http.server;version="[5.0.4,5.1.0)", + org.eclipse.jgit.http.server.glue;version="[5.0.4,5.1.0)", + org.eclipse.jgit.http.server.resolver;version="[5.0.4,5.1.0)", + org.eclipse.jgit.internal;version="[5.0.4,5.1.0)", + org.eclipse.jgit.internal.storage.dfs;version="[5.0.4,5.1.0)", + org.eclipse.jgit.internal.storage.file;version="[5.0.4,5.1.0)", + org.eclipse.jgit.internal.storage.reftable;version="[5.0.4,5.1.0)", + org.eclipse.jgit.junit;version="[5.0.4,5.1.0)", + org.eclipse.jgit.junit.http;version="[5.0.4,5.1.0)", + org.eclipse.jgit.lib;version="[5.0.4,5.1.0)", + org.eclipse.jgit.nls;version="[5.0.4,5.1.0)", + org.eclipse.jgit.revwalk;version="[5.0.4,5.1.0)", + org.eclipse.jgit.storage.file;version="[5.0.4,5.1.0)", + org.eclipse.jgit.transport;version="[5.0.4,5.1.0)", + org.eclipse.jgit.transport.http;version="[5.0.4,5.1.0)", + org.eclipse.jgit.transport.http.apache;version="[5.0.4,5.1.0)", + org.eclipse.jgit.transport.resolver;version="[5.0.4,5.1.0)", + org.eclipse.jgit.util;version="[5.0.4,5.1.0)", + org.hamcrest;version="[1.1.0,2.0.0)", org.hamcrest.core;version="[1.1.0,2.0.0)", org.junit;version="[4.12,5.0.0)", org.junit.rules;version="[4.12,5.0.0)", diff --git a/org.eclipse.jgit.http.test/pom.xml b/org.eclipse.jgit.http.test/pom.xml index 16795b5938..87e2f4ccae 100644 --- a/org.eclipse.jgit.http.test/pom.xml +++ b/org.eclipse.jgit.http.test/pom.xml @@ -51,7 +51,7 @@ <parent> <groupId>org.eclipse.jgit</groupId> <artifactId>org.eclipse.jgit-parent</artifactId> - <version>4.11.10-SNAPSHOT</version> + <version>5.0.4-SNAPSHOT</version> </parent> <artifactId>org.eclipse.jgit.http.test</artifactId> diff --git a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/AsIsServiceTest.java b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/AsIsServiceTest.java index e94a792ff2..298bf2170c 100644 --- a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/AsIsServiceTest.java +++ b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/AsIsServiceTest.java @@ -133,7 +133,7 @@ public class AsIsServiceTest extends LocalDiskRepositoryTestCase { private final String host; - R(final String user, final String host) { + R(String user, String host) { super(new Request(null, null) /* can't pass null, sigh */); this.user = user; this.host = host; diff --git a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/DefaultReceivePackFactoryTest.java b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/DefaultReceivePackFactoryTest.java index b24e2dfc7b..ade1e1d2be 100644 --- a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/DefaultReceivePackFactoryTest.java +++ b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/DefaultReceivePackFactoryTest.java @@ -205,7 +205,7 @@ public class DefaultReceivePackFactoryTest extends LocalDiskRepositoryTestCase { private final String host; - R(final String user, final String host) { + R(String user, String host) { super(new Request(null, null) /* can't pass null, sigh */); this.user = user; this.host = host; diff --git a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/DefaultUploadPackFactoryTest.java b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/DefaultUploadPackFactoryTest.java index ce24d64b7b..268c281e29 100644 --- a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/DefaultUploadPackFactoryTest.java +++ b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/DefaultUploadPackFactoryTest.java @@ -161,7 +161,7 @@ public class DefaultUploadPackFactoryTest extends LocalDiskRepositoryTestCase { private final String host; - R(final String user, final String host) { + R(String user, String host) { super(new Request(null, null) /* can't pass null, sigh */); this.user = user; this.host = host; diff --git a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/HttpClientTests.java b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/HttpClientTests.java index 6dbe0e3cdd..ef059bf2a3 100644 --- a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/HttpClientTests.java +++ b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/HttpClientTests.java @@ -43,15 +43,20 @@ package org.eclipse.jgit.http.test; +import static org.hamcrest.Matchers.is; +import static org.hamcrest.Matchers.theInstance; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import java.io.File; +import java.io.OutputStream; import java.net.URI; +import java.net.URL; import java.util.List; import javax.servlet.http.HttpServletRequest; @@ -75,9 +80,13 @@ import org.eclipse.jgit.lib.Repository; import org.eclipse.jgit.lib.StoredConfig; import org.eclipse.jgit.revwalk.RevCommit; import org.eclipse.jgit.transport.FetchConnection; +import org.eclipse.jgit.transport.PacketLineIn; +import org.eclipse.jgit.transport.PacketLineOut; import org.eclipse.jgit.transport.Transport; import org.eclipse.jgit.transport.URIish; import org.eclipse.jgit.transport.UsernamePasswordCredentialsProvider; +import org.eclipse.jgit.transport.http.HttpConnection; +import org.eclipse.jgit.transport.http.JDKHttpConnectionFactory; import org.eclipse.jgit.transport.resolver.RepositoryResolver; import org.eclipse.jgit.transport.resolver.ServiceNotEnabledException; import org.junit.Before; @@ -118,7 +127,7 @@ public class HttpClientTests extends HttpTestCase { smartAuthBasicURI = toURIish(sBasic, srcName); } - private ServletContextHandler dumb(final String path) { + private ServletContextHandler dumb(String path) { final File srcGit = remoteRepository.getRepository().getDirectory(); final URI base = srcGit.getParentFile().toURI(); @@ -130,7 +139,7 @@ public class HttpClientTests extends HttpTestCase { return ctx; } - private ServletContextHandler smart(final String path) { + private ServletContextHandler smart(String path) { GitServlet gs = new GitServlet(); gs.setRepositoryResolver(new RepositoryResolver<HttpServletRequest>() { @Override @@ -151,7 +160,7 @@ public class HttpClientTests extends HttpTestCase { return ctx; } - private static String nameOf(final Repository db) { + private static String nameOf(Repository db) { return db.getDirectory().getName(); } @@ -345,4 +354,82 @@ public class HttpClientTests extends HttpTestCase { assertNotNull(head); } } + + @Test + public void testHttpClientWantsV2ButServerNotConfigured() throws Exception { + JDKHttpConnectionFactory f = new JDKHttpConnectionFactory(); + String url = smartAuthNoneURI.toString() + "/info/refs?service=git-upload-pack"; + HttpConnection c = f.create(new URL(url)); + c.setRequestMethod("GET"); + c.setRequestProperty("Git-Protocol", "version=2"); + c.connect(); + assertThat(c.getResponseCode(), is(200)); + + PacketLineIn pckIn = new PacketLineIn(c.getInputStream()); + + // Check that we get a v0 response. + assertThat(pckIn.readString(), is("# service=git-upload-pack")); + assertThat(pckIn.readString(), theInstance(PacketLineIn.END)); + assertTrue(pckIn.readString().matches("[0-9a-f]{40} HEAD.*")); + } + + @Test + public void testV2HttpFirstResponse() throws Exception { + remoteRepository.getRepository().getConfig().setInt( + "protocol", null, "version", 2); + + JDKHttpConnectionFactory f = new JDKHttpConnectionFactory(); + String url = smartAuthNoneURI.toString() + "/info/refs?service=git-upload-pack"; + HttpConnection c = f.create(new URL(url)); + c.setRequestMethod("GET"); + c.setRequestProperty("Git-Protocol", "version=2"); + c.connect(); + assertThat(c.getResponseCode(), is(200)); + + PacketLineIn pckIn = new PacketLineIn(c.getInputStream()); + assertThat(pckIn.readString(), is("version 2")); + + // What remains are capabilities - ensure that all of them are + // non-empty strings, and that we see END at the end. + String s; + while ((s = pckIn.readString()) != PacketLineIn.END) { + assertTrue(!s.isEmpty()); + } + } + + @Test + public void testV2HttpSubsequentResponse() throws Exception { + remoteRepository.getRepository().getConfig().setInt( + "protocol", null, "version", 2); + + JDKHttpConnectionFactory f = new JDKHttpConnectionFactory(); + String url = smartAuthNoneURI.toString() + "/git-upload-pack"; + HttpConnection c = f.create(new URL(url)); + c.setRequestMethod("POST"); + c.setRequestProperty("Content-Type", "application/x-git-upload-pack-request"); + c.setRequestProperty("Git-Protocol", "version=2"); + c.setDoOutput(true); + c.connect(); + + // Test ls-refs to verify that everything is connected + // properly. Tests for other commands go in + // UploadPackTest.java. + + OutputStream os = c.getOutputStream(); + PacketLineOut pckOut = new PacketLineOut(os); + pckOut.writeString("command=ls-refs"); + pckOut.writeDelim(); + pckOut.end(); + os.close(); + + PacketLineIn pckIn = new PacketLineIn(c.getInputStream()); + + // Just check that we get what looks like a ref advertisement. + String s; + while ((s = pckIn.readString()) != PacketLineIn.END) { + assertTrue(s.matches("[0-9a-f]{40} [A-Za-z/]*")); + } + + assertThat(c.getResponseCode(), is(200)); + } } diff --git a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/ProtocolErrorTest.java b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/ProtocolErrorTest.java index 87d0bad85c..a1baae3b26 100644 --- a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/ProtocolErrorTest.java +++ b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/ProtocolErrorTest.java @@ -149,19 +149,15 @@ public class ProtocolErrorTest extends HttpTestCase { c.setRequestProperty("Content-Type", GitSmartHttpTools.RECEIVE_PACK_REQUEST_TYPE); c.setFixedLengthStreamingMode(reqbin.length); - OutputStream out = c.getOutputStream(); - try { + try (OutputStream out = c.getOutputStream()) { out.write(reqbin); - } finally { - out.close(); } assertEquals(200, c.getResponseCode()); assertEquals(GitSmartHttpTools.RECEIVE_PACK_RESULT_TYPE, c.getContentType()); - InputStream rawin = c.getInputStream(); - try { + try (InputStream rawin = c.getInputStream()) { PacketLineIn pckin = new PacketLineIn(rawin); assertEquals("unpack error " + JGitText.get().packfileIsTruncatedNoParam, @@ -169,8 +165,6 @@ public class ProtocolErrorTest extends HttpTestCase { assertEquals("ng refs/objects/A n/a (unpacker error)", pckin.readString()); assertSame(PacketLineIn.END, pckin.readString()); - } finally { - rawin.close(); } } finally { c.disconnect(); diff --git a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/SetAdditionalHeadersTest.java b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/SetAdditionalHeadersTest.java index ef8daec31f..fbc54f3872 100644 --- a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/SetAdditionalHeadersTest.java +++ b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/SetAdditionalHeadersTest.java @@ -107,8 +107,7 @@ public class SetAdditionalHeadersTest extends HttpTestCase { assertEquals("http", remoteURI.getScheme()); - Transport t = Transport.open(dst, remoteURI); - try { + try (Transport t = Transport.open(dst, remoteURI)) { assertTrue("isa TransportHttp", t instanceof TransportHttp); assertTrue("isa HttpTransport", t instanceof HttpTransport); @@ -117,8 +116,6 @@ public class SetAdditionalHeadersTest extends HttpTestCase { headers.put("AnotherKey", "someValue"); ((TransportHttp) t).setAdditionalHeaders(headers); t.openFetch(); - } finally { - t.close(); } List<AccessEvent> requests = getRequests(); diff --git a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/SmartClientSmartServerTest.java b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/SmartClientSmartServerTest.java index 31832e79c2..65210d15a1 100644 --- a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/SmartClientSmartServerTest.java +++ b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/SmartClientSmartServerTest.java @@ -43,7 +43,7 @@ package org.eclipse.jgit.http.test; -import static java.nio.charset.StandardCharsets.UTF_8; +import static org.eclipse.jgit.lib.Constants.CHARSET; import static org.eclipse.jgit.util.HttpSupport.HDR_CONTENT_ENCODING; import static org.eclipse.jgit.util.HttpSupport.HDR_CONTENT_LENGTH; import static org.eclipse.jgit.util.HttpSupport.HDR_CONTENT_TYPE; @@ -298,10 +298,10 @@ public class SmartClientSmartServerTest extends HttpTestCase { throws IOException, ServletException { final HttpServletResponse r = (HttpServletResponse) response; r.setContentType("text/plain"); - r.setCharacterEncoding("UTF-8"); - PrintWriter w = r.getWriter(); - w.print("OK"); - w.close(); + r.setCharacterEncoding(Constants.CHARACTER_ENCODING); + try (PrintWriter w = r.getWriter()) { + w.print("OK"); + } } @Override @@ -429,11 +429,8 @@ public class SmartClientSmartServerTest extends HttpTestCase { assertTrue("isa TransportHttp", t instanceof TransportHttp); assertTrue("isa HttpTransport", t instanceof HttpTransport); - FetchConnection c = t.openFetch(); - try { + try (FetchConnection c = t.openFetch()) { map = c.getRefsMap(); - } finally { - c.close(); } } @@ -1166,7 +1163,7 @@ public class SmartClientSmartServerTest extends HttpTestCase { public void testInvalidWant() throws Exception { @SuppressWarnings("resource") ObjectId id = new ObjectInserter.Formatter().idFor(Constants.OBJ_BLOB, - "testInvalidWant".getBytes(UTF_8)); + "testInvalidWant".getBytes(CHARSET)); Repository dst = createBareRepository(); try (Transport t = Transport.open(dst, remoteURI); |