Switch cli tests to unified MockTerminal

This is the xplugins side of elastic/elasticsearchelastic/elasticsearch#16966

Original commit: elastic/x-pack-elasticsearch@a2e2faf20a
This commit is contained in:
Ryan Ernst 2016-03-06 13:18:40 -08:00
parent 46cae1b2b1
commit 59ec9302c8
3 changed files with 46 additions and 49 deletions

View File

@ -12,6 +12,7 @@ import java.nio.file.Path;
import org.elasticsearch.common.cli.CliTool.Command;
import org.elasticsearch.common.cli.CliTool.ExitStatus;
import org.elasticsearch.common.cli.CliToolTestCase;
import org.elasticsearch.common.cli.MockTerminal;
import org.elasticsearch.common.cli.UserError;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.env.Environment;
@ -124,12 +125,13 @@ public class LicenseGenerationToolTests extends CliToolTestCase {
private String runLicenseGenerationTool(Path pubKeyPath, Path priKeyPath, License licenseSpec,
ExitStatus expectedExitStatus) throws Exception {
CaptureOutputTerminal outputTerminal = new CaptureOutputTerminal();
MockTerminal outputTerminal = new MockTerminal();
Settings settings = Settings.builder().put("path.home", createTempDir("LicenseGenerationToolTests")).build();
LicenseGenerator licenseGenerator = new LicenseGenerator(outputTerminal, pubKeyPath, priKeyPath, licenseSpec);
assertThat(execute(licenseGenerator, settings), equalTo(expectedExitStatus));
assertThat(outputTerminal.getTerminalOutput().size(), equalTo(1));
return outputTerminal.getTerminalOutput().get(0);
String output = outputTerminal.getOutput();
assertFalse(output, output.isEmpty());
return output;
}
private ExitStatus execute(Command cmd, Settings settings) throws Exception {

View File

@ -14,6 +14,7 @@ import java.util.List;
import org.elasticsearch.common.cli.CliTool.Command;
import org.elasticsearch.common.cli.CliTool.ExitStatus;
import org.elasticsearch.common.cli.CliToolTestCase;
import org.elasticsearch.common.cli.MockTerminal;
import org.elasticsearch.common.cli.UserError;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.unit.TimeValue;
@ -133,14 +134,14 @@ public class LicenseVerificationToolTests extends CliToolTestCase {
}
private String runLicenseVerificationTool(License license, Path publicKeyPath, ExitStatus expectedExitStatus) throws Exception {
CaptureOutputTerminal outputTerminal = new CaptureOutputTerminal();
MockTerminal outputTerminal = new MockTerminal();
Settings settings = Settings.builder().put("path.home", createTempDir("LicenseVerificationToolTests")).build();
LicenseVerifier licenseVerifier = new LicenseVerifier(outputTerminal, license, publicKeyPath);
assertThat(execute(licenseVerifier, settings), equalTo(expectedExitStatus));
if (expectedExitStatus == ExitStatus.OK) {
assertThat(outputTerminal.getTerminalOutput().size(), equalTo(1));
return outputTerminal.getTerminalOutput().get(0);
String output = outputTerminal.getOutput();
assertFalse(output, output.isEmpty());
return output;
} else {
return null;
}

View File

@ -8,6 +8,7 @@ package org.elasticsearch.shield.authc.esusers.tool;
import org.elasticsearch.common.Strings;
import org.elasticsearch.common.cli.CliTool;
import org.elasticsearch.common.cli.CliToolTestCase;
import org.elasticsearch.common.cli.MockTerminal;
import org.elasticsearch.common.cli.Terminal;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.env.Environment;
@ -232,12 +233,12 @@ public class ESUsersToolTests extends CliToolTestCase {
.put("path.home", createTempDir())
.build();
final CaptureOutputTerminal terminal = new CaptureOutputTerminal();
MockTerminal terminal = new MockTerminal();
ESUsersTool.Useradd cmd = new ESUsersTool.Useradd(terminal, "user1", SecuredStringTests.build("changeme"), "plugin_admin");
CliTool.ExitStatus status = execute(cmd, settings);
assertThat(status, is(CliTool.ExitStatus.OK));
assertThat(terminal.getTerminalOutput(), hasSize(0));
assertTrue(terminal.getOutput(), terminal.getOutput().isEmpty());
}
public void testUseraddNonExistantRole() throws Exception {
@ -254,13 +255,12 @@ public class ESUsersToolTests extends CliToolTestCase {
.put("path.home", createTempDir())
.build();
final CaptureOutputTerminal terminal = new CaptureOutputTerminal();
MockTerminal terminal = new MockTerminal();
ESUsersTool.Useradd cmd = new ESUsersTool.Useradd(terminal, "user1", SecuredStringTests.build("changeme"), "plugin_admin_2");
CliTool.ExitStatus status = execute(cmd, settings);
assertThat(status, is(CliTool.ExitStatus.OK));
assertThat(terminal.getTerminalOutput(), hasSize(1));
assertThat(terminal.getTerminalOutput().get(0), containsString("[plugin_admin_2]"));
assertThat(terminal.getOutput(), containsString("[plugin_admin_2]"));
}
public void testUserdelParse() throws Exception {
@ -322,16 +322,14 @@ public class ESUsersToolTests extends CliToolTestCase {
.put("shield.authc.realms.esusers.files.users_roles", userRolesFile)
.put("path.home", createTempDir())
.build();
CaptureOutputTerminal terminal = new CaptureOutputTerminal();
MockTerminal terminal = new MockTerminal();
ESUsersTool.Userdel cmd = new ESUsersTool.Userdel(terminal, "user2");
CliTool.ExitStatus status = execute(cmd, settings);
assertThat(status, is(CliTool.ExitStatus.NO_USER));
List<String> output = terminal.getTerminalOutput();
assertThat(output, hasSize(equalTo(1)));
assertThat(output, hasItem(startsWith("User [user2] doesn't exist")));
assertThat(terminal.getOutput(), startsWith("User [user2] doesn't exist"));
assertFileExists(userFile);
List<String> lines = Files.readAllLines(userFile, StandardCharsets.UTF_8);
@ -620,12 +618,12 @@ public class ESUsersToolTests extends CliToolTestCase {
.put("path.home", createTempDir())
.build();
CaptureOutputTerminal catchTerminalOutput = new CaptureOutputTerminal();
MockTerminal catchTerminalOutput = new MockTerminal();
ESUsersTool.Roles cmd = new ESUsersTool.Roles(catchTerminalOutput, "user", Strings.EMPTY_ARRAY, Strings.EMPTY_ARRAY);
CliTool.ExitStatus status = execute(cmd, settings);
assertThat(status, is(CliTool.ExitStatus.OK));
assertThat(catchTerminalOutput.getTerminalOutput(), hasItem(allOf(containsString("user"), containsString("user,foo,bar"))));
assertThat(catchTerminalOutput.getOutput(), allOf(containsString("user"), containsString("user,foo,bar")));
}
public void testRolesCmdRoleCanBeAddedWhenUserIsNotInRolesFile() throws Exception {
@ -641,7 +639,7 @@ public class ESUsersToolTests extends CliToolTestCase {
.put("path.home", createTempDir())
.build();
CaptureOutputTerminal catchTerminalOutput = new CaptureOutputTerminal();
MockTerminal catchTerminalOutput = new MockTerminal();
ESUsersTool.Roles cmd = new ESUsersTool.Roles(catchTerminalOutput, "user", new String[]{"myrole"}, Strings.EMPTY_ARRAY);
CliTool.ExitStatus status = execute(cmd, settings);
@ -678,14 +676,14 @@ public class ESUsersToolTests extends CliToolTestCase {
.put("path.home", createTempDir())
.build();
CaptureOutputTerminal catchTerminalOutput = new CaptureOutputTerminal();
MockTerminal catchTerminalOutput = new MockTerminal();
ESUsersTool.ListUsersAndRoles cmd = new ESUsersTool.ListUsersAndRoles(catchTerminalOutput, null);
CliTool.ExitStatus status = execute(cmd, settings);
assertThat(status, is(CliTool.ExitStatus.OK));
assertThat(catchTerminalOutput.getTerminalOutput(), hasSize(greaterThanOrEqualTo(2)));
assertThat(catchTerminalOutput.getTerminalOutput(), hasItem(containsString("admin")));
assertThat(catchTerminalOutput.getTerminalOutput(), hasItem(allOf(containsString("user"), containsString("user,foo,bar"))));
String output = catchTerminalOutput.getOutput();
assertThat(output, containsString("admin"));
assertThat(output, allOf(containsString("user"), containsString("user,foo,bar")));
}
public void testListUsersAndRolesCmdListAllUsersWithUnknownRoles() throws Exception {
@ -698,14 +696,14 @@ public class ESUsersToolTests extends CliToolTestCase {
.put("path.home", createTempDir())
.build();
CaptureOutputTerminal catchTerminalOutput = new CaptureOutputTerminal();
MockTerminal catchTerminalOutput = new MockTerminal();
ESUsersTool.ListUsersAndRoles cmd = new ESUsersTool.ListUsersAndRoles(catchTerminalOutput, null);
CliTool.ExitStatus status = execute(cmd, settings);
assertThat(status, is(CliTool.ExitStatus.OK));
assertThat(catchTerminalOutput.getTerminalOutput(), hasSize(greaterThanOrEqualTo(2)));
assertThat(catchTerminalOutput.getTerminalOutput(), hasItem(containsString("admin")));
assertThat(catchTerminalOutput.getTerminalOutput(), hasItem(allOf(containsString("user"), containsString("user,foo*,bar*"))));
String output = catchTerminalOutput.getOutput();
assertThat(output, containsString("admin"));
assertThat(output, allOf(containsString("user"), containsString("user,foo*,bar*")));
}
public void testListUsersAndRolesCmdListSingleUser() throws Exception {
@ -720,14 +718,13 @@ public class ESUsersToolTests extends CliToolTestCase {
.put("path.home", createTempDir())
.build();
CaptureOutputTerminal catchTerminalOutput = new CaptureOutputTerminal();
MockTerminal catchTerminalOutput = new MockTerminal();
ESUsersTool.ListUsersAndRoles cmd = new ESUsersTool.ListUsersAndRoles(catchTerminalOutput, "admin");
CliTool.ExitStatus status = execute(cmd, settings);
assertThat(status, is(CliTool.ExitStatus.OK));
assertThat(catchTerminalOutput.getTerminalOutput(), hasSize(greaterThanOrEqualTo(1)));
assertThat(catchTerminalOutput.getTerminalOutput(), hasItem(containsString("admin")));
assertThat(catchTerminalOutput.getTerminalOutput(), hasItem(not(containsString("user"))));
assertThat(catchTerminalOutput.getOutput(), containsString("admin"));
assertThat(catchTerminalOutput.getOutput(), not(containsString("user")));
}
public void testListUsersAndRolesCmdNoUsers() throws Exception {
@ -740,14 +737,12 @@ public class ESUsersToolTests extends CliToolTestCase {
.put("path.home", createTempDir())
.build();
CaptureOutputTerminal terminal = new CaptureOutputTerminal();
MockTerminal terminal = new MockTerminal();
ESUsersTool.ListUsersAndRoles cmd = new ESUsersTool.ListUsersAndRoles(terminal, null);
CliTool.ExitStatus status = execute(cmd, settings);
assertThat(status, is(CliTool.ExitStatus.OK));
List<String> output = terminal.getTerminalOutput();
assertThat(output, hasSize(1));
assertThat(output.get(0), equalTo("No users found" + System.lineSeparator()));
assertThat(terminal.getOutput(), equalTo("No users found\n"));
}
public void testListUsersAndRolesCmdListSingleUserNotFound() throws Exception {
@ -758,7 +753,7 @@ public class ESUsersToolTests extends CliToolTestCase {
.put("path.home", createTempDir())
.build();
CaptureOutputTerminal catchTerminalOutput = new CaptureOutputTerminal();
MockTerminal catchTerminalOutput = new MockTerminal();
ESUsersTool.ListUsersAndRoles cmd = new ESUsersTool.ListUsersAndRoles(catchTerminalOutput, "does-not-exist");
CliTool.ExitStatus status = execute(cmd, settings);
@ -777,15 +772,15 @@ public class ESUsersToolTests extends CliToolTestCase {
.put("path.home", createTempDir())
.build();
CaptureOutputTerminal catchTerminalOutput = new CaptureOutputTerminal();
MockTerminal catchTerminalOutput = new MockTerminal();
ESUsersTool.ListUsersAndRoles cmd = new ESUsersTool.ListUsersAndRoles(catchTerminalOutput, null);
CliTool.ExitStatus status = execute(cmd, settings);
assertThat(status, is(CliTool.ExitStatus.OK));
assertThat(catchTerminalOutput.getTerminalOutput(), hasSize(greaterThanOrEqualTo(3)));
assertThat(catchTerminalOutput.getTerminalOutput(), hasItem(containsString("admin")));
assertThat(catchTerminalOutput.getTerminalOutput(), hasItem(allOf(containsString("user"), containsString("user,foo,bar"))));
assertThat(catchTerminalOutput.getTerminalOutput(), hasItem(allOf(containsString("no-roles-user"), containsString("-"))));
String output = catchTerminalOutput.getOutput();
assertThat(output, containsString("admin"));
assertThat(output, allOf(containsString("user"), containsString("user,foo,bar")));
assertThat(output, allOf(containsString("no-roles-user"), containsString("-")));
}
public void testListUsersAndRolesCmdUsersWithoutRolesAreListed() throws Exception {
@ -800,15 +795,15 @@ public class ESUsersToolTests extends CliToolTestCase {
.put("path.home", createTempDir())
.build();
CaptureOutputTerminal catchTerminalOutput = new CaptureOutputTerminal();
MockTerminal catchTerminalOutput = new MockTerminal();
ESUsersTool.ListUsersAndRoles cmd = new ESUsersTool.ListUsersAndRoles(catchTerminalOutput, null);
CliTool.ExitStatus status = execute(cmd, settings);
assertThat(status, is(CliTool.ExitStatus.OK));
assertThat(catchTerminalOutput.getTerminalOutput(), hasSize(greaterThanOrEqualTo(3)));
assertThat(catchTerminalOutput.getTerminalOutput(), hasItem(allOf(containsString("admin"), containsString("-"))));
assertThat(catchTerminalOutput.getTerminalOutput(), hasItem(allOf(containsString("user"), containsString("-"))));
assertThat(catchTerminalOutput.getTerminalOutput(), hasItem(allOf(containsString("no-roles-user"), containsString("-"))));
String output = catchTerminalOutput.getOutput();
assertThat(output, allOf(containsString("admin"), containsString("-")));
assertThat(output, allOf(containsString("user"), containsString("-")));
assertThat(output, allOf(containsString("no-roles-user"), containsString("-")));
}
public void testListUsersAndRolesCmdUsersWithoutRolesAreListedForSingleUser() throws Exception {
@ -821,13 +816,12 @@ public class ESUsersToolTests extends CliToolTestCase {
.put("path.home", createTempDir())
.build();
CaptureOutputTerminal loggingTerminal = new CaptureOutputTerminal();
MockTerminal loggingTerminal = new MockTerminal();
ESUsersTool.ListUsersAndRoles cmd = new ESUsersTool.ListUsersAndRoles(loggingTerminal, "admin");
CliTool.ExitStatus status = execute(cmd, settings);
assertThat(status, is(CliTool.ExitStatus.OK));
assertThat(loggingTerminal.getTerminalOutput(), hasSize(greaterThanOrEqualTo(1)));
assertThat(loggingTerminal.getTerminalOutput(), hasItem(allOf(containsString("admin"), containsString("-"))));
assertThat(loggingTerminal.getOutput(), allOf(containsString("admin"), containsString("-")));
}
public void testUseraddUsernameWithPeriod() throws Exception {