package dw.cli.itest;
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.util.ArrayList;
import java.util.List;
import dw.cli.Output;
import dw.cli.Program;
import dw.xmlrpc.itest.TestParams;
public class TestHelper {
protected final TestParams params = new TestParams("dokuwiki-2017-02-19", "Release 2017-02-19 \"Frusterick Manners\"", 10, 2);
protected final String dateRegex = "[A-Za-z]{3} [A-Za-z]{3} [0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2} [A-Z]{3}? [0-9]{4}";
protected void assertNotNullOrEmpty(String str){
assertNotNull(str);
assertFalse(str.equals(""));
}
protected void assertNotZero(int number){
assertFalse(number == 0);
}
protected Output runWithArguments(String command, String... extraArguments) throws Exception{
String[] arguments = buildArguments(TestParams.user, TestParams.password, command, extraArguments);
return Program.run(arguments);
}
protected Output runWithUrl(String url, String command, String... extraArguments) throws Exception {
String[] arguments = buildArguments(TestParams.user, TestParams.password, command, url, extraArguments);
return Program.run(arguments);
}
protected Output runWithoutGenericArguments(String command, String... extraArguments) throws Exception {
List<String> args = new ArrayList<String>();
args.add(command);
for(String extraArg : extraArguments){
args.add(extraArg);
}
return Program.run(args.toArray(new String[]{}));
}
protected Output runWithArgumentAsWriterUser(String command, String... extraArguments) throws Exception {
String[] arguments = buildArguments(TestParams.writerLogin, TestParams.writerPwd, command, extraArguments);
return Program.run(arguments);
}
protected Output runWithArgumentAsPermissionLessUser(String command, String...extraArguments) throws Exception {
String[] arguments = buildArguments("badUser", "badPassword", command, extraArguments);
return Program.run(arguments);
}
private String[] buildArguments(String user, String password, String command, String... extraArguments){
return buildArguments(user, password, command, params.url, extraArguments);
}
private String[] buildArguments(String user, String password, String command, String url, String... extraArguments){
List<String> args = new ArrayList<String>();
args.add("-u"); args.add(user);
args.add("-p"); args.add(password);
args.add("--url"); args.add(url);
args.add(command);
for(String extraArg : extraArguments){
args.add(extraArg);
}
return args.toArray(new String[]{});
}
protected void assertSuccess(String expectedOutput, Output actualOutput){
assertEquals(expectedOutput, actualOutput.out);
assertGenericSuccess(actualOutput);
}
protected void assertSuccessRegex(String expectedOutput, Output actualOutput){
assertTrue(actualOutput.out.matches(expectedOutput));
assertGenericSuccess(actualOutput);
}
protected void assertGenericSuccess(Output actualOutput){
assertEquals("", actualOutput.err);
assertEquals(0, actualOutput.exitCode);
}
protected void assertGenericError(Output actualOutput){
assertNotNullOrEmpty(actualOutput.err);
assertEquals("", actualOutput.out);
assertNotZero(actualOutput.exitCode);
}
protected void assertLastModificationSummary(String expectedSummary, Output actualOutput) {
String lastModification = actualOutput.out.split("\n")[0];
String actualSummary = lastModification.split(" - ")[1];
assertEquals(expectedSummary, actualSummary);
}
}