package dw.cli.utest;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.net.URL;
import dw.cli.CliOptions;
import dw.cli.OptionParser;
public class Test_OptionParser {
@org.junit.Test
public void canParseGenericOptions() throws Exception{
String[] args = new String[]{"-u", "toto", "-p", "123456", "--url", "http://myUrl", "getTitle", "arg0"};
OptionParser parser = new OptionParser(args);
parser.parse();
System.out.println(parser.getHelpMessage());
assertTrue(parser.success());
assertNotNull(parser.getHelpMessage());
CliOptions options = parser.getCliOptions();
assertEquals("toto", options.user);
assertEquals("123456", options.password);
assertEquals(new URL("http://myUrl"), options.url);
assertFalse(options.debug);
assertEquals("getTitle", options.command);
assertEquals(1, options.commandArguments.length);
assertEquals("arg0", options.commandArguments[0]);
}
@org.junit.Test
public void canParseCommandFlags() throws Exception {
String[] args = new String[]{"--url", "http://myUrl", "someCommand", "arg0", "-l", "3"};
OptionParser parser = new OptionParser(args);
parser.parse();
assertTrue(parser.success());
CliOptions options = parser.getCliOptions();
assertEquals("someCommand", options.command);
assertEquals(3, options.commandArguments.length);
assertEquals("arg0", options.commandArguments[0]);
assertEquals("-l", options.commandArguments[1]);
assertEquals("3", options.commandArguments[2]);
}
@org.junit.Test
public void canParseDebugSwitch() throws Exception {
String[] args = new String[]{"--url", "http://myUrl", "--debug", "someCommand", "arg0", "-l", "3"};
OptionParser parser = new OptionParser(args);
parser.parse();
assertTrue(parser.success());
assertTrue(parser.getCliOptions().debug);
}
@org.junit.Test
public void failsIfAnArgumentIsMissingItsValue() throws Exception{
String[] args = new String[]{"-u", "toto", "-p", "123456", "--url"};
OptionParser parser = new OptionParser(args);
parser.parse();
assertFalse(parser.success());
}
@org.junit.Test
public void canReadPasswordInteractively() throws Exception {
String[] args = new String[]{"-u", "toto", "--password-interactive", "--url", "http://myUrl", "getTitle", "arg0"};
OptionParser parser = new OptionParser(args, new MockPasswordReader("abcdef"));
parser.parse();
assertEquals(true, parser.success());
CliOptions options = parser.getCliOptions();
assertEquals("abcdef", options.password);
assertEquals("toto", options.user);
assertEquals(new URL("http://myUrl"), options.url);
assertEquals("getTitle", options.command);
}
@org.junit.Test
public void failsIfBothFlagsPasswordAndInteractivePassword() throws Exception {
String[] args = new String[]{"-u", "toto", "-p", "123456", "--password-interactive", "--url", "http://myUrl", "getTitle", "arg0"};
OptionParser parser = new OptionParser(args);
parser.parse();
assertFalse(parser.success());
}
}