@Test
public void updatesParameterFieldsInImportDialogWhenURIIsUpdated()
throws Exception {
importWizard.openWizard();
RepoPropertiesPage propertiesPage = importWizard.openRepoPropertiesPage();
propertiesPage.setURI("git://www.jgit.org/EGIT");
propertiesPage.assertSourceParams(null, "www.jgit.org", "/EGIT", "git",
"", true, "", "", false, false);
propertiesPage.appendToURI("X");
propertiesPage.assertSourceParams(null, "www.jgit.org", "/EGITX",
"git", "", true, "", "", false, false);
propertiesPage.setURI("git://www.jgit.org/EGIT");
propertiesPage.assertSourceParams(null, "www.jgit.org", "/EGIT", "git",
"", true, "", "", false, false);
propertiesPage.setURI("git://user:hi@www.jgit.org/EGIT");
propertiesPage.assertSourceParams(
" User not supported on git protocol.", "www.jgit.org",
"/EGIT", "git", "", true, "", "", false, false);
// UI doesn't change URI even when password is entered in clear text as
// part of URI. Opinions on this may vary.
propertiesPage.assertURI("git://user:hi@www.jgit.org/EGIT");
propertiesPage.setURI("ssh://user@www.jgit.org/EGIT");
propertiesPage.assertSourceParams(null, "www.jgit.org", "/EGIT",
"ssh", "", true, "user", "", true, true);
propertiesPage.setURI("ssh://user@www.jgit.org/EGIT");
propertiesPage.assertSourceParams(null, "www.jgit.org", "/EGIT",
"ssh", "", true, "user", "", true, true);
propertiesPage.setURI("ssh://user:hi@www.jgit.org:33/EGIT");
propertiesPage.assertSourceParams(null, "www.jgit.org", "/EGIT",
"ssh", "33", true, "user", "hi", true, true);
propertiesPage.setURI("ssh:///EGIT");
propertiesPage.assertSourceParams(" Host required for ssh protocol.",
"", "/EGIT", "ssh", "", true, "", "", true, true);
propertiesPage.setURI("file:///some/place");
if (Platform.getOS().equals(Platform.OS_WIN32))
propertiesPage.assertSourceParams(" "
+ System.getProperty("user.dir")
+ "\\.\\some\\place does not exist.", "", "/some/place",
"file", "", false, "", "", false, false);
else
propertiesPage.assertSourceParams(" /some/place does not exist.",
"", "/some/place", "file", "", false, "", "", false, false);
// Now try changing some fields other than URI and see how the URI field
// gets changed
propertiesPage.setURI("ssh://user@www.jgit.org/EGIT");
// ..change host
bot.textWithLabel("Host:").setText("example.com");
propertiesPage.assertURI("ssh://user@example.com/EGIT");
propertiesPage.assertSourceParams(null, "example.com", "/EGIT",
"ssh", "", true, "user", "", true, true);
// ..change user
bot.textWithLabel("User:").setText("gitney");
propertiesPage.assertURI("ssh://gitney@example.com/EGIT");
propertiesPage.assertSourceParams(null, "example.com", "/EGIT",
"ssh", "", true, "gitney", "", true, true);
// ..change password
bot.textWithLabel("Password:").setText("fsck");
// Password is not written into the URL here!
propertiesPage.assertURI("ssh://gitney@example.com/EGIT");
propertiesPage.assertSourceParams(null, "example.com", "/EGIT",
"ssh", "", true, "gitney", "fsck", true, true);
// change port number
bot.textWithLabel("Port:").setText("99");
propertiesPage.assertURI("ssh://gitney@example.com:99/EGIT");
propertiesPage.assertSourceParams(null, "example.com", "/EGIT",
"ssh", "99", true, "gitney", "fsck", true, true);
// change protocol to another with user/password capability
bot.comboBoxWithLabel("Protocol:").setSelection("ftp");
propertiesPage.assertURI("ftp://gitney@example.com:99/EGIT");
propertiesPage.assertSourceParams(null, "example.com", "/EGIT", "ftp",
"99", true, "gitney", "fsck", true, true);
// change protocol to one without user/password capability
bot.comboBoxWithLabel("Protocol:").setSelection("git");
propertiesPage.assertURI("git://example.com:99/EGIT");
propertiesPage.assertSourceParams(null, "example.com", "/EGIT",
"git", "99", true, "", "", false, false);
// change protocol to one without host capability
bot.comboBoxWithLabel("Protocol:").setSelection("file");
propertiesPage.assertURI("file:///EGIT");
propertiesPage.assertSourceParams(" /EGIT does not exist.", "",
"/EGIT",
"file", "", false,
"", "", false, false);
// Local protocol with file: prefix. We need to make sure the
// local path exists as a directory so we choose user.home as
// that one should exist.
if (Platform.getOS().equals(Platform.OS_WIN32))
propertiesPage.setURI("file:///" + System.getProperty("user.home"));
else
propertiesPage.setURI("file://" + System.getProperty("user.home"));
propertiesPage.assertSourceParams(null, "", System.getProperty(
"user.home"), "file", "", false, "", "",
false, false);
// Local protocol without file: prefix
propertiesPage.setURI(System.getProperty("user.home"));
propertiesPage.assertSourceParams(null, "", System.getProperty(
"user.home"), "file", "", false, "", "",
false, false);
// On windows the use can choose forward or backward slashes, so add
// a case for forward slashes using the non prefixed local protocol.
if (Platform.getOS().equals(Platform.OS_WIN32)) {
propertiesPage.setURI(System.getProperty("user.home"));
propertiesPage.assertSourceParams(null, "", System.getProperty(
"user.home"), "file", "", false, "", "",
false, false);
}
bot.button("Cancel").click();
}