/* The contents of this file are subject to the license and copyright terms
* detailed in the license directory at the root of the source tree (also
* available online at http://fedora-commons.org/license/).
*/
package fedora.client.utility.validate.process;
import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import org.junit.Test;
import fedora.client.utility.validate.process.ValidatorProcessParameters.IteratorType;
import fedora.server.errors.QueryParseException;
import fedora.server.search.Condition;
import fedora.server.search.FieldSearchQuery;
import static junit.framework.Assert.assertEquals;
import static fedora.client.utility.validate.process.ValidatorProcessParameters.PARAMETER_PASSWORD;
import static fedora.client.utility.validate.process.ValidatorProcessParameters.PARAMETER_PIDFILE;
import static fedora.client.utility.validate.process.ValidatorProcessParameters.PARAMETER_QUERY;
import static fedora.client.utility.validate.process.ValidatorProcessParameters.PARAMETER_SERVER_URL;
import static fedora.client.utility.validate.process.ValidatorProcessParameters.PARAMETER_TERMS;
import static fedora.client.utility.validate.process.ValidatorProcessParameters.PARAMETER_USERNAME;
/**
* @author Jim Blake
*/
public class TestValidatorProcessParameters {
private static final String PIDFILE_PATH = "/my/file/path";
@Test
public void simpleTermsSuccess() throws MalformedURLException {
ValidatorProcessParameters parms =
createParms(PARAMETER_USERNAME,
"username",
PARAMETER_PASSWORD,
"password",
PARAMETER_SERVER_URL,
"http://some.url/",
PARAMETER_TERMS,
"terms");
assertEquals("username", "username", parms.getServiceInfo()
.getUsername());
assertEquals("password", "password", parms.getServiceInfo()
.getPassword());
assertEquals("serverurl", new URL("http://some.url/"), parms
.getServiceInfo().getBaseUrl());
assertEquals("iteratorType", IteratorType.FS_QUERY, parms
.getIteratorType());
FieldSearchQuery fsq = parms.getQuery();
assertEquals("queryType", FieldSearchQuery.TERMS_TYPE, fsq.getType());
assertEquals("terms", "terms", fsq.getTerms());
}
@Test
public void simpleQuerySuccess() throws QueryParseException,
MalformedURLException {
ValidatorProcessParameters parms =
createParms(PARAMETER_USERNAME,
"username",
PARAMETER_PASSWORD,
"password",
PARAMETER_SERVER_URL,
"http://some.url/",
PARAMETER_QUERY,
"pid=fred");
assertEquals("username", "username", parms.getServiceInfo()
.getUsername());
assertEquals("password", "password", parms.getServiceInfo()
.getPassword());
assertEquals("serverurl", new URL("http://some.url/"), parms
.getServiceInfo().getBaseUrl());
assertEquals("iteratorType", IteratorType.FS_QUERY, parms
.getIteratorType());
FieldSearchQuery fsq = parms.getQuery();
assertEquals("queryType", FieldSearchQuery.CONDITIONS_TYPE, fsq
.getType());
assertEquals("conditions", Condition.getConditions("pid=fred"), fsq
.getConditions());
}
@Test
public void simplePidfileSuccess() throws QueryParseException, IOException {
File dummyFile = null;
try {
dummyFile =
File.createTempFile("TestValidatorProcessParameter",
"dummyFile");
dummyFile.deleteOnExit();
ValidatorProcessParameters parms =
createParms(PARAMETER_USERNAME,
"username",
PARAMETER_PASSWORD,
"password",
PARAMETER_SERVER_URL,
"http://some.url/",
PARAMETER_PIDFILE,
dummyFile.getPath());
assertEquals("username", "username", parms.getServiceInfo()
.getUsername());
assertEquals("password", "password", parms.getServiceInfo()
.getPassword());
assertEquals("serverurl", new URL("http://some.url/"), parms
.getServiceInfo().getBaseUrl());
assertEquals("iteratorType", IteratorType.PIDFILE, parms
.getIteratorType());
File pidfile = parms.getPidfile();
assertEquals("pidfile", dummyFile, pidfile);
} finally {
if (dummyFile != null || dummyFile.exists()) {
dummyFile.delete();
}
}
}
@Test(expected = ValidatorProcessUsageException.class)
public void unrecognizedKeyword() {
createParms(PARAMETER_USERNAME,
"username",
PARAMETER_PASSWORD,
"password",
PARAMETER_SERVER_URL,
"http://some.url/",
PARAMETER_TERMS,
"terms",
"-junk",
"junk");
}
@Test(expected = ValidatorProcessUsageException.class)
public void valueWithoutKeyword() {
createParms(PARAMETER_USERNAME,
"username",
PARAMETER_PASSWORD,
"password",
"garbage",
PARAMETER_SERVER_URL,
"http://some.url/",
PARAMETER_TERMS,
"terms");
}
@Test(expected = ValidatorProcessUsageException.class)
public void noUsername() {
createParms(PARAMETER_PASSWORD,
"password",
PARAMETER_SERVER_URL,
"http://some.url/",
PARAMETER_TERMS,
"terms");
}
@Test(expected = ValidatorProcessUsageException.class)
public void nullUsername() {
createParms(PARAMETER_USERNAME,
PARAMETER_PASSWORD,
"password",
PARAMETER_SERVER_URL,
"http://some.url/",
PARAMETER_TERMS,
"terms");
}
@Test(expected = ValidatorProcessUsageException.class)
public void noPassword() {
createParms(PARAMETER_USERNAME,
"username",
PARAMETER_SERVER_URL,
"http://some.url/",
PARAMETER_TERMS,
"terms");
}
@Test(expected = ValidatorProcessUsageException.class)
public void noServerUrl() {
createParms(PARAMETER_USERNAME,
"username",
PARAMETER_PASSWORD,
"password",
PARAMETER_TERMS,
"terms");
}
@Test(expected = ValidatorProcessUsageException.class)
public void invalidServerUrl() {
createParms(PARAMETER_USERNAME,
"username",
PARAMETER_PASSWORD,
"password",
PARAMETER_SERVER_URL,
"",
PARAMETER_TERMS,
"terms");
}
@Test(expected = ValidatorProcessUsageException.class)
public void noTermsOrQueryOrPidfile() {
createParms(PARAMETER_USERNAME,
"username",
PARAMETER_PASSWORD,
"password",
PARAMETER_SERVER_URL,
"http://some.url/");
}
@Test(expected = ValidatorProcessUsageException.class)
public void bothTermsAndQuery() {
createParms(PARAMETER_USERNAME,
"username",
PARAMETER_PASSWORD,
"password",
PARAMETER_SERVER_URL,
"http://some.url/",
PARAMETER_TERMS,
"terms",
PARAMETER_QUERY,
"pid=fred");
}
@Test(expected = ValidatorProcessUsageException.class)
public void bothTermsAndPidfile() {
createParms(PARAMETER_USERNAME,
"username",
PARAMETER_PASSWORD,
"password",
PARAMETER_SERVER_URL,
"http://some.url/",
PARAMETER_TERMS,
"terms",
PARAMETER_PIDFILE,
PIDFILE_PATH);
}
@Test(expected = ValidatorProcessUsageException.class)
public void bothQueryAndPidfile() {
createParms(PARAMETER_USERNAME,
"username",
PARAMETER_PASSWORD,
"password",
PARAMETER_SERVER_URL,
"http://some.url/",
PARAMETER_QUERY,
"pid=fred",
PARAMETER_PIDFILE,
PIDFILE_PATH);
}
@Test(expected = ValidatorProcessUsageException.class)
public void invalidQueryString() {
createParms(PARAMETER_USERNAME,
"username",
PARAMETER_PASSWORD,
"password",
PARAMETER_SERVER_URL,
"http://some.url/",
PARAMETER_QUERY,
"pid&fred");
}
@Test(expected = ValidatorProcessUsageException.class)
public void pidfileDoesNotExist() {
createParms(PARAMETER_USERNAME,
"username",
PARAMETER_PASSWORD,
"password",
PARAMETER_SERVER_URL,
"http://some.url/",
PARAMETER_PIDFILE,
"/bogus/pidfile/path");
}
private ValidatorProcessParameters createParms(String... args) {
return new ValidatorProcessParameters(args);
}
}