package org.antmod.scm;
import java.text.ParseException;
import junit.framework.TestCase;
public class ScmUrlTest extends TestCase {
private final static String SCM_USER = "scmusername";
private final static String SCM_HOST = "somescmhost";
private final static String SCM_CVS_PROTOCOL = "pserver";
private final static String SCM_CVS_PATH = "/cvs/somepath/root";
private final static String SCM_CVS_MODULE = "modulefromcvs";
public void testCvsWindowsPathUrl() {
boolean exceptionOccured = false;
try {
String winPath = "c:/somepath/restofpath";
ScmUrl su = new ScmUrl("scm:cvs:local:ignored:" + winPath);
assertEquals(su.getPath(), winPath);
} catch (ParseException pe) {
fail("Parse exception occured: " + pe);
} catch (IllegalArgumentException iae) {
fail("Illegal argument exception occured: " + iae);
}
}
public void testInvalidTypeUrl() {
boolean exceptionOccured = false;
try {
ScmUrl su = new ScmUrl("scm:invalidScmType:etcetera");
} catch (ParseException pe) {
fail("Parse exception occured: " + pe);
} catch (IllegalArgumentException iae) {
exceptionOccured = true;
}
assertTrue(
"Invalid url type did not throw exception in ScmUrl constructor.",
exceptionOccured);
}
public void testSvnUrls() {
try {
ScmUrl su = new ScmUrl("scm:svn:http://" + SCM_HOST + "/pathtosvn");
assertNull("Password should be null", su.getPassword());
assertNull("User should be null", su.getUser());
assertNull("Module should be null", su.getModule());
assertEquals("svn", su.getType());
assertEquals("http", su.getProtocol());
assertEquals(SCM_HOST, su.getHost());
assertEquals("/pathtosvn", su.getPath());
// now test with module
su = new ScmUrl("scm:svn:http://someuser@" + SCM_HOST + "/pathtosvn:somemodule");
assertEquals("somemodule", su.getModule());
// now test with port number
su = new ScmUrl("scm:svn:http://someuser@" + SCM_HOST + ":8084/pathtosvn:somemodule");
assertEquals("somemodule", su.getModule());
assertTrue(su.getHost().endsWith("8084"));
assertEquals("/pathtosvn", su.getPath());
// now test with username
su = new ScmUrl("scm:svn:http://someuser@" + SCM_HOST + "/pathtosvn");
assertNull("Password should be null", su.getPassword());
assertEquals("someuser", su.getUser());
assertNull("Module should be null", su.getModule());
assertEquals("svn", su.getType());
assertEquals("http", su.getProtocol());
assertEquals(SCM_HOST, su.getHost());
assertEquals("/pathtosvn", su.getPath());
// now test with username and password
su = new ScmUrl("scm:svn:http://someuser:somepassword@" + SCM_HOST + "/pathtosvn");
assertEquals("somepassword", su.getPassword());
assertEquals("someuser", su.getUser());
assertNull("Module should be null", su.getModule());
assertEquals("svn", su.getType());
assertEquals("http", su.getProtocol());
assertEquals(SCM_HOST, su.getHost());
assertEquals("/pathtosvn", su.getPath());
// now test with file protocol
su = new ScmUrl("scm:svn:file:///C:/pathtosvn:somemodule");
assertEquals("somemodule", su.getModule());
assertEquals("C:/pathtosvn", su.getPath());
assertEquals("file", su.getProtocol());
assertNull("Host should be null", su.getHost());
assertNull("Username should be null", su.getUser());
} catch (ParseException pe) {
fail("Parsing subversion url failed: " + pe);
}
}
public void testCvsUrl() {
String validCvsUrl =
"scm:cvs:"
+ SCM_CVS_PROTOCOL
+ ":"
+ SCM_USER
+ "@"
+ SCM_HOST
+ ":"
+ SCM_CVS_PATH;
String validCvsUrlWithModule = validCvsUrl + ":" + SCM_CVS_MODULE;
String validCvsUrlWithPort = "scm:cvs:"
+ SCM_CVS_PROTOCOL
+ ":"
+ SCM_USER
+ "@"
+ SCM_HOST
+ ":2222"
+ SCM_CVS_PATH;;
try {
ScmUrl su = new ScmUrl(validCvsUrl);
assertNull("Password should be null", su.getPassword());
assertEquals("cvs", su.getType());
assertEquals(SCM_CVS_PROTOCOL, su.getProtocol());
assertEquals(SCM_USER, su.getUser());
assertEquals(SCM_HOST, su.getHost());
assertEquals(SCM_CVS_PATH, su.getPath());
assertNull("Module should be null", su.getModule());
su = new ScmUrl(validCvsUrlWithModule);
assertEquals(SCM_CVS_MODULE, su.getModule());
su = new ScmUrl("scm:cvs:pserver:cvsuser@cvshostname:2222/some/cvs/path");
assertTrue("CVS url port number is 2222", su.getHost().endsWith("2222"));
su = new ScmUrl("scm:cvs:pserver:cvsuser@cvshostname:2222/some/cvs/path:somemodule");
assertEquals("CVS url with port contains module name 'somemodule'", su.getModule(), "somemodule");
} catch (ParseException pe) {
fail(
"Valid cvs url string \""
+ validCvsUrl
+ "\" caused exception: "
+ pe);
}
}
}
|