package org.eclipse.recommenders.internal.snipmatch.rcp.util;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
import java.util.Collection;
import java.util.LinkedList;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
import com.google.common.collect.Lists;
@RunWith(Parameterized.class)
public class RepositoryUrlValidatorTest {
private final String inputUri;
private final boolean expectedResult;
public RepositoryUrlValidatorTest(String inputString, boolean expectedResult) {
this.inputUri = inputString;
this.expectedResult = expectedResult;
}
@Parameters
public static Collection<Object[]> scenarios() {
LinkedList<Object[]> scenarios = Lists.newLinkedList();
scenarios.add(invalidUri(""));
scenarios.add(invalidUri("///"));
scenarios.add(invalidUri("***"));
scenarios.add(invalidUri("http://"));
scenarios.add(invalidUri("http://foo.com"));
scenarios.add(invalidUri("https:///www.foo.bar/"));
scenarios.add(invalidUri("http://.."));
scenarios.add(invalidUri("ssh:user|example.com:my-project"));
scenarios.add(invalidUri("cvs://folder/"));
scenarios.add(invalidUri("jar://folder/"));
scenarios.add(invalidUri("pop://folder/"));
scenarios.add(invalidUri("telnet://folder/"));
scenarios.add(invalidUri("udp://folder/"));
scenarios.add(validUri("http://foo.com/bar_bar"));
scenarios.add(validUri("https://userid@example.com/"));
scenarios.add(validUri("http://user:password@folder/"));
scenarios.add(validUri("http://foo.xz/bar_bar_(foo)_(again)"));
scenarios.add(validUri("git://host.xz:8001/path/to/repo.git/"));
scenarios.add(validUri("ssh://git@git.example.com/foo/example.git/"));
scenarios.add(validUri("amazon-s3://user@fetch/"));
scenarios.add(validUri("bundle:///"));
scenarios.add(validUri("file:///"));
scenarios.add(validUri("ftp://folder/"));
scenarios.add(validUri("git+ssh://folder/"));
scenarios.add(validUri("sftp://folder/"));
scenarios.add(validUri("ssh+git://folder/"));
return scenarios;
}
private static Object[] invalidUri(String uri) {
return new Object[] { uri, false };
}
private static Object[] validUri(String uri) {
return new Object[] { uri, true };
}
@Test
public void testValidateUri() {
assertThat(RepositoryUrlValidator.isValidUri(inputUri).isOK(), is(expectedResult));
}
}