package loadr;
import java.io.PrintStream;
import java.util.HashMap;
import java.util.Map;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.startsWith;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
import org.mockito.Matchers;
import org.mockito.Mockito;
import static org.mockito.Mockito.verify;
/**
*
* @author airhacks.com
*/
public class AppTest {
@Test
public void extractApplicationName() {
String expected = "duke";
String actual = App.extractApplicationName(" ./test-deployment/" + expected + ".war");
assertThat(actual, is(expected));
}
@Test
public void extractApplicationNameWithoutEnding() {
String expected = "duke";
String actual = App.extractApplicationName(expected);
assertThat(actual, is(expected));
}
@Test
public void archiveSingleArgument() {
PrintStream stream = Mockito.mock(PrintStream.class);
System.setOut(stream);
App.main(new String[]{"something.war"});
verify(stream).println(Matchers.argThat(startsWith("loadr")));
}
@Test
public void arrayToMapEvenArgumentsNumber() {
String[] args = {"-d", "war.war", "-h", "http://airhacks.com", "-l", "list", "-s http://localhost:4949"};
Map<String, String> argumentMap = App.arrayToMap(args);
assertNotNull(argumentMap);
System.out.println("argumentMap = " + argumentMap);
assertThat(argumentMap.get("-d"), is("war.war"));
assertThat(argumentMap.get("-h"), is("http://airhacks.com"));
assertThat(argumentMap.get("-l"), is("list"));
}
@Test
public void extractListArgument() {
String LIST_ARGUMENT = "-l";
String[] args = {LIST_ARGUMENT};
Map<String, String> argumentMap = App.arrayToMap(args);
assertThat(argumentMap.size(), is(1));
assertTrue(argumentMap.containsKey("-l"));
assertTrue(argumentMap.get("-l").isEmpty());
}
@Test
public void extractPostArgument() {
final String post = "-post";
String POST_ARGUMENT = post;
String[] args = {POST_ARGUMENT};
Map<String, String> argumentMap = App.arrayToMap(args);
assertThat(argumentMap.size(), is(1));
assertTrue(argumentMap.containsKey(post));
assertTrue(argumentMap.get(post).isEmpty());
}
@Test
public void extractPostAndHookArgument() {
final String post = "-post";
final String hook = "-h";
final String uri = "http://localhost";
String[] args = {hook, uri, post};
Map<String, String> argumentMap = App.arrayToMap(args);
assertThat(argumentMap.size(), is(2));
assertTrue(argumentMap.containsKey(post));
assertTrue(argumentMap.containsKey(hook));
assertTrue(argumentMap.containsValue(uri));
assertTrue(argumentMap.get(post).isEmpty());
final String actualUri = argumentMap.get(hook);
assertThat(actualUri, is(uri));
}
@Test
public void extractServerURI() {
final String expected = "http://localhost:4949";
Map<String, String> map = new HashMap<>();
map.put("-s", expected);
String serverURI = App.extractServerURI(map);
assertThat(serverURI, is(expected));
map.clear();
serverURI = App.extractServerURI(map);
assertThat(serverURI, is(App.DEFAULT_SERVER_URI));
}
@Test
public void mapToAction() {
Map<String, String> arguments = new HashMap<>();
arguments.put("-d", "archive");
Arguments action = App.argumentsToAction(arguments);
assertThat(action, is(Arguments.DEPLOY));
arguments.clear();
arguments.put("-u", "archive");
action = App.argumentsToAction(arguments);
assertThat(action, is(Arguments.UNDEPLOY));
arguments.clear();
arguments.put("-l", null);
action = App.argumentsToAction(arguments);
assertThat(action, is(Arguments.LIST));
arguments.clear();
arguments.put("-UNKNOWN-", null);
action = App.argumentsToAction(arguments);
assertThat(action, is(Arguments.USAGE));
}
}