aboutsummaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit.test/tst/org/eclipse/jgit
diff options
context:
space:
mode:
authorShawn Pearce <spearce@spearce.org>2011-12-02 10:01:22 -0500
committerCode Review <codereview-daemon@eclipse.org>2011-12-02 10:01:22 -0500
commite0f2be968b147ff7043684a7715d2fe852553db4 (patch)
treefe0c139b43d33be076aeb757ffc3795e6f609a6c /org.eclipse.jgit.test/tst/org/eclipse/jgit
parentcea935ab1b6caf52b31dfd4eae9696dfcc0593a2 (diff)
parent00514bde50de77380082e57da7a3cde2d714c733 (diff)
downloadjgit-e0f2be968b147ff7043684a7715d2fe852553db4.tar.gz
jgit-e0f2be968b147ff7043684a7715d2fe852553db4.zip
Merge "Add percent-encoding of reserved characters in URIish"
Diffstat (limited to 'org.eclipse.jgit.test/tst/org/eclipse/jgit')
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/URIishTest.java230
1 files changed, 218 insertions, 12 deletions
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/URIishTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/URIishTest.java
index d797dd435e..b5a753bbba 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/URIishTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/URIishTest.java
@@ -88,8 +88,10 @@ public class URIishTest {
URIish u = new URIish(str);
assertNull(u.getScheme());
assertFalse(u.isRemote());
+ assertEquals(str, u.getRawPath());
assertEquals(str, u.getPath());
assertEquals(str, u.toString());
+ assertEquals(str, u.toASCIIString());
assertEquals(u, new URIish(str));
}
@@ -99,8 +101,10 @@ public class URIishTest {
URIish u = new URIish(str);
assertNull(u.getScheme());
assertFalse(u.isRemote());
+ assertEquals(str, u.getRawPath());
assertEquals(str, u.getPath());
assertEquals(str, u.toString());
+ assertEquals(str, u.toASCIIString());
assertEquals(u, new URIish(str));
}
@@ -110,8 +114,10 @@ public class URIishTest {
URIish u = new URIish(str);
assertNull(u.getScheme());
assertFalse(u.isRemote());
+ assertEquals("D:\\m y", u.getRawPath());
assertEquals("D:\\m y", u.getPath());
assertEquals("D:\\m y", u.toString());
+ assertEquals("D:\\m y", u.toASCIIString());
assertEquals(u, new URIish(str));
}
@@ -121,8 +127,10 @@ public class URIishTest {
URIish u = new URIish(str);
assertNull(u.getScheme());
assertFalse(u.isRemote());
+ assertEquals(str, u.getRawPath());
assertEquals(str, u.getPath());
assertEquals(str, u.toString());
+ assertEquals(str, u.toASCIIString());
assertEquals(u, new URIish(str));
}
@@ -132,8 +140,10 @@ public class URIishTest {
URIish u = new URIish(str);
assertNull(u.getScheme());
assertFalse(u.isRemote());
+ assertEquals("\\\\some\\place", u.getRawPath());
assertEquals("\\\\some\\place", u.getPath());
assertEquals("\\\\some\\place", u.toString());
+ assertEquals("\\\\some\\place", u.toASCIIString());
assertEquals(u, new URIish(str));
}
@@ -143,8 +153,49 @@ public class URIishTest {
URIish u = new URIish(str);
assertEquals("file", u.getScheme());
assertFalse(u.isRemote());
+ assertEquals("/home/m y", u.getRawPath());
assertEquals("/home/m y", u.getPath());
- assertEquals(str, u.toString());
+ assertEquals("file:///home/m y", u.toString());
+ assertEquals("file:///home/m%20y", u.toASCIIString());
+ assertEquals(u, new URIish(str));
+ }
+
+ @Test
+ public void testURIEncode_00() throws Exception {
+ final String str = "file:///home/m%00y";
+ URIish u = new URIish(str);
+ assertEquals("file", u.getScheme());
+ assertFalse(u.isRemote());
+ assertEquals("/home/m%00y", u.getRawPath());
+ assertEquals("/home/m\u0000y", u.getPath());
+ assertEquals("file:///home/m%00y", u.toString());
+ assertEquals("file:///home/m%00y", u.toASCIIString());
+ assertEquals(u, new URIish(str));
+ }
+
+ @Test
+ public void testURIEncode_0a() throws Exception {
+ final String str = "file:///home/m%0ay";
+ URIish u = new URIish(str);
+ assertEquals("file", u.getScheme());
+ assertFalse(u.isRemote());
+ assertEquals("/home/m%0ay", u.getRawPath());
+ assertEquals("/home/m\ny", u.getPath());
+ assertEquals("file:///home/m%0ay", u.toString());
+ assertEquals("file:///home/m%0ay", u.toASCIIString());
+ assertEquals(u, new URIish(str));
+ }
+
+ @Test
+ public void testURIEncode_unicode() throws Exception {
+ final String str = "file:///home/m%c3%a5y";
+ URIish u = new URIish(str);
+ assertEquals("file", u.getScheme());
+ assertFalse(u.isRemote());
+ assertEquals("/home/m%c3%a5y", u.getRawPath());
+ assertEquals("/home/m\u00e5y", u.getPath());
+ assertEquals("file:///home/m%c3%a5y", u.toString());
+ assertEquals("file:///home/m%c3%a5y", u.toASCIIString());
assertEquals(u, new URIish(str));
}
@@ -154,8 +205,10 @@ public class URIishTest {
URIish u = new URIish(str);
assertEquals("file", u.getScheme());
assertFalse(u.isRemote());
+ assertEquals("D:/m y", u.getRawPath());
assertEquals("D:/m y", u.getPath());
- assertEquals(str, u.toString());
+ assertEquals("file:///D:/m y", u.toString());
+ assertEquals("file:///D:/m%20y", u.toASCIIString());
assertEquals(u, new URIish(str));
}
@@ -166,8 +219,10 @@ public class URIishTest {
assertEquals("git", u.getScheme());
assertTrue(u.isRemote());
assertEquals("example.com", u.getHost());
+ assertEquals("/home/m y", u.getRawPath());
assertEquals("/home/m y", u.getPath());
- assertEquals(str, u.toString());
+ assertEquals("git://example.com/home/m y", u.toString());
+ assertEquals("git://example.com/home/m%20y", u.toASCIIString());
assertEquals(u, new URIish(str));
}
@@ -178,9 +233,11 @@ public class URIishTest {
assertEquals("git", u.getScheme());
assertTrue(u.isRemote());
assertEquals("example.com", u.getHost());
+ assertEquals("/home/m y", u.getRawPath());
assertEquals("/home/m y", u.getPath());
assertEquals(333, u.getPort());
- assertEquals(str, u.toString());
+ assertEquals("git://example.com:333/home/m y", u.toString());
+ assertEquals("git://example.com:333/home/m%20y", u.toASCIIString());
assertEquals(u, new URIish(str));
}
@@ -190,10 +247,12 @@ public class URIishTest {
URIish u = new URIish(str);
assertEquals("git", u.getScheme());
assertTrue(u.isRemote());
+ assertEquals("D:/m y", u.getRawPath());
assertEquals("D:/m y", u.getPath());
assertEquals(338, u.getPort());
assertEquals("example.com", u.getHost());
- assertEquals(str, u.toString());
+ assertEquals("git://example.com:338/D:/m y", u.toString());
+ assertEquals("git://example.com:338/D:/m%20y", u.toASCIIString());
assertEquals(u, new URIish(str));
}
@@ -203,10 +262,27 @@ public class URIishTest {
URIish u = new URIish(str);
assertEquals("git", u.getScheme());
assertTrue(u.isRemote());
+ assertEquals("D:/m y", u.getRawPath());
assertEquals("D:/m y", u.getPath());
assertEquals("example.com", u.getHost());
assertEquals(-1, u.getPort());
+ assertEquals("git://example.com/D:/m y", u.toString());
+ assertEquals("git://example.com/D:/m%20y", u.toASCIIString());
+ assertEquals(u, new URIish(str));
+ }
+
+ @Test
+ public void testScpStyleNoURIDecoding() throws Exception {
+ final String str = "example.com:some/p%20ath";
+ URIish u = new URIish(str);
+ assertNull(u.getScheme());
+ assertTrue(u.isRemote());
+ assertEquals("some/p%20ath", u.getRawPath());
+ assertEquals("some/p%20ath", u.getPath());
+ assertEquals("example.com", u.getHost());
+ assertEquals(-1, u.getPort());
assertEquals(str, u.toString());
+ assertEquals(str, u.toASCIIString());
assertEquals(u, new URIish(str));
}
@@ -216,10 +292,12 @@ public class URIishTest {
URIish u = new URIish(str);
assertNull(u.getScheme());
assertTrue(u.isRemote());
+ assertEquals("some/p ath", u.getRawPath());
assertEquals("some/p ath", u.getPath());
assertEquals("example.com", u.getHost());
assertEquals(-1, u.getPort());
assertEquals(str, u.toString());
+ assertEquals(str, u.toASCIIString());
assertEquals(u, new URIish(str));
}
@@ -229,10 +307,12 @@ public class URIishTest {
URIish u = new URIish(str);
assertNull(u.getScheme());
assertTrue(u.isRemote());
+ assertEquals("/some/p ath", u.getRawPath());
assertEquals("/some/p ath", u.getPath());
assertEquals("example.com", u.getHost());
assertEquals(-1, u.getPort());
assertEquals(str, u.toString());
+ assertEquals(str, u.toASCIIString());
assertEquals(u, new URIish(str));
}
@@ -242,11 +322,13 @@ public class URIishTest {
URIish u = new URIish(str);
assertNull(u.getScheme());
assertTrue(u.isRemote());
+ assertEquals("some/p ath", u.getRawPath());
assertEquals("some/p ath", u.getPath());
assertEquals("user", u.getUser());
assertEquals("example.com", u.getHost());
assertEquals(-1, u.getPort());
assertEquals(str, u.toString());
+ assertEquals(str, u.toASCIIString());
assertEquals(u, new URIish(str));
}
@@ -256,10 +338,12 @@ public class URIishTest {
URIish u = new URIish(str);
assertEquals("git+ssh", u.getScheme());
assertTrue(u.isRemote());
+ assertEquals("/some/p ath", u.getRawPath());
assertEquals("/some/p ath", u.getPath());
assertEquals("example.com", u.getHost());
assertEquals(-1, u.getPort());
- assertEquals(str, u.toString());
+ assertEquals("git+ssh://example.com/some/p ath", u.toString());
+ assertEquals("git+ssh://example.com/some/p%20ath", u.toASCIIString());
assertEquals(u, new URIish(str));
}
@@ -269,10 +353,12 @@ public class URIishTest {
URIish u = new URIish(str);
assertEquals("ssh+git", u.getScheme());
assertTrue(u.isRemote());
+ assertEquals("/some/p ath", u.getRawPath());
assertEquals("/some/p ath", u.getPath());
assertEquals("example.com", u.getHost());
assertEquals(-1, u.getPort());
- assertEquals(str, u.toString());
+ assertEquals("ssh+git://example.com/some/p ath", u.toString());
+ assertEquals("ssh+git://example.com/some/p%20ath", u.toASCIIString());
assertEquals(u, new URIish(str));
}
@@ -282,10 +368,12 @@ public class URIishTest {
URIish u = new URIish(str);
assertEquals("ssh", u.getScheme());
assertTrue(u.isRemote());
+ assertEquals("/some/p ath", u.getRawPath());
assertEquals("/some/p ath", u.getPath());
assertEquals("example.com", u.getHost());
assertEquals(-1, u.getPort());
- assertEquals(str, u.toString());
+ assertEquals("ssh://example.com/some/p ath", u.toString());
+ assertEquals("ssh://example.com/some/p%20ath", u.toASCIIString());
assertEquals(u, new URIish(str));
}
@@ -295,12 +383,15 @@ public class URIishTest {
URIish u = new URIish(str);
assertEquals("ssh", u.getScheme());
assertTrue(u.isRemote());
+ assertEquals("/some/p ath", u.getRawPath());
assertEquals("/some/p ath", u.getPath());
assertEquals("example.com", u.getHost());
assertEquals("user", u.getUser());
assertNull(u.getPass());
assertEquals(33, u.getPort());
- assertEquals(str, u.toString());
+ assertEquals("ssh://user@example.com:33/some/p ath", u.toString());
+ assertEquals("ssh://user@example.com:33/some/p%20ath",
+ u.toASCIIString());
assertEquals(u, new URIish(str));
}
@@ -310,13 +401,18 @@ public class URIishTest {
URIish u = new URIish(str);
assertEquals("ssh", u.getScheme());
assertTrue(u.isRemote());
+ assertEquals("/some/p ath", u.getRawPath());
assertEquals("/some/p ath", u.getPath());
assertEquals("example.com", u.getHost());
assertEquals("user", u.getUser());
assertEquals("pass", u.getPass());
assertEquals(33, u.getPort());
- assertEquals(str, u.toPrivateString());
+ assertEquals("ssh://user:pass@example.com:33/some/p ath",
+ u.toPrivateString());
+ assertEquals("ssh://user:pass@example.com:33/some/p%20ath",
+ u.toPrivateASCIIString());
assertEquals(u.setPass(null).toPrivateString(), u.toString());
+ assertEquals(u.setPass(null).toPrivateASCIIString(), u.toASCIIString());
assertEquals(u, new URIish(str));
}
@@ -326,13 +422,62 @@ public class URIishTest {
URIish u = new URIish(str);
assertEquals("ssh", u.getScheme());
assertTrue(u.isRemote());
+ assertEquals("/some/p ath", u.getRawPath());
assertEquals("/some/p ath", u.getPath());
assertEquals("example.com", u.getHost());
assertEquals("DOMAIN\\user", u.getUser());
assertEquals("pass", u.getPass());
assertEquals(33, u.getPort());
- assertEquals(str, u.toPrivateString());
+ assertEquals("ssh://DOMAIN\\user:pass@example.com:33/some/p ath",
+ u.toPrivateString());
+ assertEquals("ssh://DOMAIN\\user:pass@example.com:33/some/p%20ath",
+ u.toPrivateASCIIString());
+ assertEquals(u.setPass(null).toPrivateString(), u.toString());
+ assertEquals(u.setPass(null).toPrivateASCIIString(), u.toASCIIString());
+ assertEquals(u, new URIish(str));
+ }
+
+ @Test
+ public void testSshProtoWithEscapedADUserPassAndPort() throws Exception {
+ final String str = "ssh://DOMAIN%5c\u00fcser:pass@example.com:33/some/p ath";
+ URIish u = new URIish(str);
+ assertEquals("ssh", u.getScheme());
+ assertTrue(u.isRemote());
+ assertEquals("/some/p ath", u.getRawPath());
+ assertEquals("/some/p ath", u.getPath());
+ assertEquals("example.com", u.getHost());
+ assertEquals("DOMAIN\\\u00fcser", u.getUser());
+ assertEquals("pass", u.getPass());
+ assertEquals(33, u.getPort());
+ assertEquals("ssh://DOMAIN\\\u00fcser:pass@example.com:33/some/p ath",
+ u.toPrivateString());
+ assertEquals(
+ "ssh://DOMAIN\\%c3%bcser:pass@example.com:33/some/p%20ath",
+ u.toPrivateASCIIString());
+ assertEquals(u.setPass(null).toPrivateString(), u.toString());
+ assertEquals(u.setPass(null).toPrivateASCIIString(), u.toASCIIString());
+ assertEquals(u, new URIish(str));
+ }
+
+ @Test
+ public void testURIEncodeDecode() throws Exception {
+ final String str = "ssh://%3ax%25:%40%41x@example.com:33/some%c3%a5/p%20a th";
+ URIish u = new URIish(str);
+ assertEquals("ssh", u.getScheme());
+ assertTrue(u.isRemote());
+ assertEquals("/some%c3%a5/p%20a th", u.getRawPath());
+ assertEquals("/some\u00e5/p a th", u.getPath());
+ assertEquals("example.com", u.getHost());
+ assertEquals(":x%", u.getUser());
+ assertEquals("@Ax", u.getPass());
+ assertEquals(33, u.getPort());
+ assertEquals("ssh://%3ax%25:%40Ax@example.com:33/some%c3%a5/p%20a th",
+ u.toPrivateString());
+ assertEquals(
+ "ssh://%3ax%25:%40Ax@example.com:33/some%c3%a5/p%20a%20th",
+ u.toPrivateASCIIString());
assertEquals(u.setPass(null).toPrivateString(), u.toString());
+ assertEquals(u.setPass(null).toPrivateASCIIString(), u.toASCIIString());
assertEquals(u, new URIish(str));
}
@@ -342,13 +487,17 @@ public class URIishTest {
URIish u = new URIish(str);
assertEquals("git", u.getScheme());
assertTrue(u.isRemote());
+ assertEquals("~some/p ath", u.getRawPath());
assertEquals("~some/p ath", u.getPath());
assertEquals("example.com", u.getHost());
assertNull(u.getUser());
assertNull(u.getPass());
assertEquals(-1, u.getPort());
- assertEquals(str, u.toPrivateString());
+ assertEquals("git://example.com/~some/p ath", u.toPrivateString());
+ assertEquals("git://example.com/~some/p%20ath",
+ u.toPrivateASCIIString());
assertEquals(u.setPass(null).toPrivateString(), u.toString());
+ assertEquals(u.setPass(null).toPrivateASCIIString(), u.toASCIIString());
assertEquals(u, new URIish(str));
}
@@ -359,13 +508,16 @@ public class URIishTest {
URIish u = new URIish(str);
assertEquals("git", u.getScheme());
assertTrue(u.isRemote());
+ assertEquals("~some/p ath", u.getRawPath());
assertEquals("~some/p ath", u.getPath());
assertEquals("example.com", u.getHost());
assertNull(u.getUser());
assertNull(u.getPass());
assertEquals(-1, u.getPort());
assertEquals(str, u.toPrivateString());
+ assertEquals(str, u.toPrivateASCIIString());
assertEquals(u.setPass(null).toPrivateString(), u.toString());
+ assertEquals(u.setPass(null).toPrivateASCIIString(), u.toASCIIString());
assertEquals(u, new URIish(str));
}
@@ -375,13 +527,16 @@ public class URIishTest {
URIish u = new URIish(str);
assertNull(u.getScheme());
assertFalse(u.isRemote());
+ assertEquals("/~some/p ath", u.getRawPath());
assertEquals("/~some/p ath", u.getPath());
assertNull(u.getHost());
assertNull(u.getUser());
assertNull(u.getPass());
assertEquals(-1, u.getPort());
assertEquals(str, u.toPrivateString());
+ assertEquals(str, u.toPrivateASCIIString());
assertEquals(u.setPass(null).toPrivateString(), u.toString());
+ assertEquals(u.setPass(null).toPrivateASCIIString(), u.toASCIIString());
assertEquals(u, new URIish(str));
}
@@ -416,6 +571,33 @@ public class URIishTest {
}
@Test
+ public void testGetSet() throws Exception {
+ final String str = "ssh://DOMAIN\\user:pass@example.com:33/some/p ath%20";
+ URIish u = new URIish(str);
+ u = u.setHost(u.getHost());
+ u = u.setPass(u.getPass());
+ u = u.setPort(u.getPort());
+ assertEquals("ssh", u.getScheme());
+ assertTrue(u.isRemote());
+ u = u.setRawPath(u.getRawPath());
+ assertEquals("/some/p ath%20", u.getRawPath());
+ u = u.setPath(u.getPath());
+ assertEquals("/some/p ath ", u.getRawPath());
+ assertEquals("/some/p ath ", u.getPath());
+ assertEquals("example.com", u.getHost());
+ assertEquals("DOMAIN\\user", u.getUser());
+ assertEquals("pass", u.getPass());
+ assertEquals(33, u.getPort());
+ assertEquals("ssh://DOMAIN\\user:pass@example.com:33/some/p ath ",
+ u.toPrivateString());
+ assertEquals("ssh://DOMAIN\\user:pass@example.com:33/some/p%20ath%20",
+ u.toPrivateASCIIString());
+ assertEquals(u.setPass(null).toPrivateString(), u.toString());
+ assertEquals(u.setPass(null).toPrivateASCIIString(), u.toASCIIString());
+ assertEquals(u, new URIish(str));
+ }
+
+ @Test
public void testGetValidWithEmptySlashDotGitHumanishName()
throws IllegalArgumentException, URISyntaxException {
String humanishName = new URIish("/a/b/.git").getHumanishName();
@@ -537,6 +719,7 @@ public class URIishTest {
URIish u = new URIish(str);
assertEquals("http", u.getScheme());
assertTrue(u.isRemote());
+ assertEquals("/some/path", u.getRawPath());
assertEquals("/some/path", u.getPath());
assertEquals("host.xy", u.getHost());
assertEquals(80, u.getPort());
@@ -556,6 +739,27 @@ public class URIishTest {
assertEquals(u, new URIish(str));
}
+ /**
+ * Exemplify what happens with the special case of encoding '/' as %2F. Web
+ * services in general parse path components before decoding the characters.
+ *
+ * @throws URISyntaxException
+ */
+ @Test
+ public void testPathSeparator() throws URISyntaxException {
+ String str = "http://user:secret@host.xy:80/some%2Fpath";
+ URIish u = new URIish(str);
+ assertEquals("http", u.getScheme());
+ assertTrue(u.isRemote());
+ assertEquals("/some%2Fpath", u.getRawPath());
+ assertEquals("/some/path", u.getPath());
+ assertEquals("host.xy", u.getHost());
+ assertEquals(80, u.getPort());
+ assertEquals("user", u.getUser());
+ assertEquals("secret", u.getPass());
+ assertEquals(u, new URIish(str));
+ }
+
@Test
public void testFileProtocol() throws IllegalArgumentException,
URISyntaxException, IOException {
@@ -565,6 +769,7 @@ public class URIishTest {
assertFalse(u.isRemote());
assertNull(u.getHost());
assertNull(u.getPass());
+ assertEquals("/a/b.txt", u.getRawPath());
assertEquals("/a/b.txt", u.getPath());
assertEquals(-1, u.getPort());
assertNull(u.getUser());
@@ -586,6 +791,7 @@ public class URIishTest {
assertFalse(u.isRemote());
assertNull(u.getHost());
assertNull(u.getPass());
+ assertEquals("/a/b.txt", u.getRawPath());
assertEquals("/a/b.txt", u.getPath());
assertEquals(-1, u.getPort());
assertNull(u.getUser());