package com.camptocamp.owsproxy;
import java.net.URL;
import java.util.logging.Level;
import java.util.logging.LogManager;
import com.camptocamp.owsproxy.logging.OWSLogHandler;
import com.camptocamp.owsproxy.logging.OWSLogger;
import com.camptocamp.owsproxy.parameters.DevLogFileParameter;
import junit.framework.TestCase;
public class OWSHeadlessClientTest extends TestCase {
@Override
protected void tearDown() throws Exception {
super.tearDown();
LogManager.getLogManager().reset();
LogManager.getLogManager().readConfiguration();
}
public void testParseProgramArgsNoUserName() {
try {
OWSHeadlessClient.parseProgramArgs("http://someurl.com");
fail("Should throw exception");
} catch (IllegalArgumentException e) {
// good
}
try {
OWSHeadlessClient.parseProgramArgs("-proxyHost",
"http://anotherURL.com", "-proxyPort", "3128",
"http://someurl.com");
fail("Should throw exception");
} catch (IllegalArgumentException e) {
// good
}
}
public void testParseProgramArgsHelp() {
try {
OWSHeadlessClient.parseProgramArgs("-h");
fail("Should throw exception");
} catch (IllegalArgumentException e) {
assertEquals("", e.getMessage());
// good
}
}
public void testParseProgramNoArgs() {
try {
OWSHeadlessClient.parseProgramArgs(new String[0]);
fail("Should throw exception");
} catch (IllegalArgumentException e) {
assertEquals("", e.getMessage());
// good
}
}
public void testParseProgramArgsNoURL() {
try {
OWSHeadlessClient.parseProgramArgs("username:password");
fail("Should throw exception");
} catch (IllegalArgumentException e) {
// good
}
try {
OWSHeadlessClient.parseProgramArgs("-proxyHost",
"http://anotherURL.com", "-proxyPort", "3128",
"username:password");
fail("Should throw exception");
} catch (IllegalArgumentException e) {
// good
}
}
public void testParseProgramArgsMultipleColons() {
try {
// a restriction is that password cannot have a colon
OWSHeadlessClient.parseProgramArgs("username:password:doda",
"http://someurl.com");
fail("Should throw exception");
} catch (IllegalArgumentException e) {
// good
}
}
public void testParseProgramArgsProxyHostNoPort() {
try {
OWSHeadlessClient.parseProgramArgs("-proxyHost",
"http://anotherURL.com", "username:password",
"http://someurl.com");
fail("Should throw exception");
} catch (IllegalArgumentException e) {
// good
}
}
public void testParseProgramArgsProxyPortNoHost() {
try {
OWSHeadlessClient.parseProgramArgs("-proxyPort", "3128",
"username:password", "http://someurl.com");
fail("Should throw exception");
} catch (IllegalArgumentException e) {
// good
}
}
public void testParseProgramArgsTwoOptionsTogether() {
try {
OWSHeadlessClient.parseProgramArgs("-proxyHost", "-proxyPort",
"http://anotherURL.com", "3128", "username:password",
"http://someurl.com");
fail("Should throw exception");
} catch (IllegalArgumentException e) {
// good
}
}
public void testParseProgramArgsIllegalURL() {
try {
OWSHeadlessClient.parseProgramArgs("username:password",
"someurl.com");
fail("Should throw exception");
} catch (IllegalArgumentException e) {
// good
}
}
public void testParseProgramArgsProxyUserNoProxyHost() {
try {
OWSHeadlessClient.parseProgramArgs("-proxyUser", "user",
"username:password", "http://someurl.com");
fail("Should throw exception");
} catch (IllegalArgumentException e) {
// good
}
}
public void testParseProgramArgsProxyUser() {
OWSHeadlessClient.parseProgramArgs("-proxyHost",
"http://anotherURL.com", "-proxyPort", "3128", "-proxyUser",
"user:password", "username:password", "http://someurl.com");
}
public void testParseProgramArgsNoPassword() {
assertNotNull(OWSHeadlessClient.parseProgramArgs("username",
"http://someurl.com"));
}
public void testParseProgramArgsWithPassword() {
assertNotNull(OWSHeadlessClient.parseProgramArgs("username:password",
"http://someurl.com"));
}
public void testParseProgramArgsAllOptions() {
assertNotNull(OWSHeadlessClient.parseProgramArgs("-proxyHost",
"http://anotherURL.com", "-proxyPort", "3128",
"username:password", "http://someurl.com"));
}
public void testChangeDevLogLevel() throws Exception {
OWSHeadlessClient.parseProgramArgs("-devLogLevel", "FINER",
"username:password", "http://someurl.com");
assertEquals(OWSLogger.DEV.logger().getLevel(), Level.FINER);
OWSHeadlessClient.parseProgramArgs("-devLogLevel", "severe",
"username:password", "http://someurl.com");
assertEquals(OWSLogger.DEV.logger().getLevel(), Level.SEVERE);
OWSHeadlessClient.parseProgramArgs("-devLogLevel", "400",
"username:password", "http://someurl.com");
assertEquals(OWSLogger.DEV.logger().getLevel(), Level.FINER);
}
public void testChangeDevLogFile() throws Exception {
String logFile = "alternativeFile.log";
OWSHeadlessClient.parseProgramArgs("-devLogFile", logFile,
"username:password", "http://someurl.com");
OWSLogHandler owsHandler = DevLogFileParameter.lookupOWSLogHandler();
assertEquals(logFile, owsHandler.getDevLogFile());
}
public void testChangeUserLogFile() throws Exception {
String logFile = "alternativeFile.log";
OWSHeadlessClient.parseProgramArgs("-userLogFile", logFile,
"username:password", "http://someurl.com");
OWSLogHandler owsHandler = DevLogFileParameter.lookupOWSLogHandler();
assertEquals(logFile, owsHandler.getUserLogFile());
}
public void testChangeLogConfigurationFile() throws Exception {
URL configurationURL = getClass().getResource("loggingTest.properties");
String logConfiguration = configurationURL.getFile();
OWSHeadlessClient.parseProgramArgs("-logConf", logConfiguration,
"username:password", "http://someurl.com");
assertNull(DevLogFileParameter.lookupOWSLogHandler());
}
}