Merge "Bug 484342: Support @ in username in SSH url."

This commit is contained in:
Shawn Pearce 2015-12-15 23:09:29 -05:00 committed by Gerrit Code Review @ Eclipse.org
commit 6297c2e92c
2 changed files with 43 additions and 1 deletions

View File

@ -468,6 +468,48 @@ public void testSshProtoWithUserPassAndPort() throws Exception {
assertEquals(u, new URIish(str));
}
@Test
public void testSshProtoWithEmailUserAndPort() throws Exception {
final String str = "ssh://user.name@email.com@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("user.name@email.com", u.getUser());
assertNull(u.getPass());
assertEquals(33, u.getPort());
assertEquals("ssh://user.name%40email.com@example.com:33/some/p ath",
u.toPrivateString());
assertEquals("ssh://user.name%40email.com@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 testSshProtoWithEmailUserPassAndPort() throws Exception {
final String str = "ssh://user.name@email.com:pass@wor:d@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("user.name@email.com", u.getUser());
assertEquals("pass@wor:d", u.getPass());
assertEquals(33, u.getPort());
assertEquals("ssh://user.name%40email.com:pass%40wor%3ad@example.com:33/some/p ath",
u.toPrivateString());
assertEquals("ssh://user.name%40email.com:pass%40wor%3ad@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 testSshProtoWithADUserPassAndPort() throws Exception {
final String str = "ssh://DOMAIN\\user:pass@example.com:33/some/p ath";

View File

@ -83,7 +83,7 @@ public class URIish implements Serializable {
* capturing groups: the first containing the user and the second containing
* the password
*/
private static final String OPT_USER_PWD_P = "(?:([^/:@]+)(?::([^\\\\/]+))?@)?"; //$NON-NLS-1$
private static final String OPT_USER_PWD_P = "(?:([^/:]+)(?::([^\\\\/]+))?@)?"; //$NON-NLS-1$
/**
* Part of a pattern which matches the host part of URIs. Defines one