package org.jboss.windup.tests.bootstrap; import org.jboss.windup.bootstrap.Bootstrap; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.junit.runners.Parameterized.Parameters; import java.io.IOException; import java.util.Arrays; import java.util.Collection; import static org.junit.Assert.assertTrue; @RunWith(Parameterized.class) public class InstallRemoveAddonCommandsTest extends AbstractBootstrapTest { private static final String ADDON = "org.jboss.windup.rules.apps:windup-rules-tattletale"; private static final String ADDON_WITH_VERSION = ADDON + "," + Bootstrap.getVersion(); private static final String BAD_FORMAT = "doesnt.exist"; private static final String DOESNT_EXIST = "doesnt:exist"; private static final String INSTALL = "--install"; private static final String REMOVE = "--remove"; private static final String I = "-i"; private static final String R = "-r"; @Parameters public static Collection<Object[]> data() { return Arrays.asList(new Object[][] { {I, ADDON, R, ADDON, true}, {I, ADDON, R, ADDON_WITH_VERSION, true}, {I, ADDON, REMOVE, ADDON, true}, {I, ADDON, REMOVE, ADDON_WITH_VERSION, true}, {I, ADDON_WITH_VERSION, R, ADDON, true}, {I, ADDON_WITH_VERSION, R, ADDON_WITH_VERSION, true}, {I, ADDON_WITH_VERSION, REMOVE, ADDON, true}, {I, ADDON_WITH_VERSION, REMOVE, ADDON_WITH_VERSION, true}, {INSTALL, ADDON, R, ADDON, true}, {INSTALL, ADDON, R, ADDON_WITH_VERSION, true}, {INSTALL, ADDON, REMOVE, ADDON, true}, {INSTALL, ADDON, REMOVE, ADDON_WITH_VERSION, true}, {INSTALL, ADDON_WITH_VERSION, R, ADDON, true}, {INSTALL, ADDON_WITH_VERSION, R, ADDON_WITH_VERSION, true}, {INSTALL, ADDON_WITH_VERSION, REMOVE, ADDON, true}, {INSTALL, ADDON_WITH_VERSION, REMOVE, ADDON_WITH_VERSION, true}, {INSTALL, BAD_FORMAT, REMOVE, BAD_FORMAT, false}, {INSTALL, DOESNT_EXIST, REMOVE, DOESNT_EXIST, false}, }); } @Rule public final TemporaryFolder tmp = new TemporaryFolder(); private final String installOption; private final String installAddonId; private final String removeOption; private final String removeAddonId; private final boolean successExpected; public InstallRemoveAddonCommandsTest(String installOption, String installAddonId, String removeOption, String removeAddonId, boolean successExpected) { this.installOption = installOption; this.installAddonId = installAddonId; this.removeOption = removeOption; this.removeAddonId = removeAddonId; this.successExpected = successExpected; } @Test public void commaSeparatedVersion() throws IOException { bootstrap("--addonDir", tmp.getRoot().getAbsolutePath(), installOption, installAddonId, removeOption, removeAddonId); checkExpectations(); } @Test public void colonSeparatedVersion() throws IOException { String installAddonId = this.installAddonId.replace(',', ':'); String removeAddonId = this.removeAddonId.replace(',', ':'); bootstrap("--addonDir", tmp.getRoot().getAbsolutePath(), installOption, installAddonId, removeOption, removeAddonId); checkExpectations(); } private void checkExpectations() { if (successExpected) { assertTrue(capturedOutput().contains("Installation completed successfully")); assertTrue(capturedOutput().contains("Uninstallation completed successfully")); } else { if (BAD_FORMAT.equals(installAddonId)) { assertTrue(capturedOutput().contains("Unrecognized format")); } else { assertTrue(capturedOutput().contains("No Artifact version found")); } assertTrue(capturedOutput().contains("No addon exists")); } } }