This is an automated email from the ASF dual-hosted git repository. btellier pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-project.git
commit ea096141a089b41207e3e89c4445220c67d34f79 Author: quanth <hqt...@linagora.com> AuthorDate: Mon Nov 2 17:24:10 2020 +0700 JAMES-3400 Add domain delete command --- .../org/apache/james/cli/domain/DomainCommand.java | 3 +- ...DomainCommand.java => DomainDeleteCommand.java} | 45 +++++++++++++--------- .../org/apache/james/httpclient/DomainClient.java | 3 ++ .../org/apache/james/cli/DomainManageTest.java | 28 ++++++++++++++ 4 files changed, 59 insertions(+), 20 deletions(-) diff --git a/server/protocols/webadmin-cli/src/main/java/org/apache/james/cli/domain/DomainCommand.java b/server/protocols/webadmin-cli/src/main/java/org/apache/james/cli/domain/DomainCommand.java index 89f2ab76..9d990af 100644 --- a/server/protocols/webadmin-cli/src/main/java/org/apache/james/cli/domain/DomainCommand.java +++ b/server/protocols/webadmin-cli/src/main/java/org/apache/james/cli/domain/DomainCommand.java @@ -31,7 +31,8 @@ import picocli.CommandLine; description = "Manage Domains", subcommands = { DomainListCommand.class, - DomainCreateCommand.class + DomainCreateCommand.class, + DomainDeleteCommand.class }) public class DomainCommand implements Callable<Integer> { diff --git a/server/protocols/webadmin-cli/src/main/java/org/apache/james/cli/domain/DomainCommand.java b/server/protocols/webadmin-cli/src/main/java/org/apache/james/cli/domain/DomainDeleteCommand.java similarity index 60% copy from server/protocols/webadmin-cli/src/main/java/org/apache/james/cli/domain/DomainCommand.java copy to server/protocols/webadmin-cli/src/main/java/org/apache/james/cli/domain/DomainDeleteCommand.java index 89f2ab76..11853fd 100644 --- a/server/protocols/webadmin-cli/src/main/java/org/apache/james/cli/domain/DomainCommand.java +++ b/server/protocols/webadmin-cli/src/main/java/org/apache/james/cli/domain/DomainDeleteCommand.java @@ -19,35 +19,42 @@ package org.apache.james.cli.domain; -import java.io.PrintStream; import java.util.concurrent.Callable; import org.apache.james.cli.WebAdminCli; +import org.apache.james.httpclient.DomainClient; +import feign.Feign; +import feign.Response; import picocli.CommandLine; @CommandLine.Command( - name = "domain", - description = "Manage Domains", - subcommands = { - DomainListCommand.class, - DomainCreateCommand.class - }) -public class DomainCommand implements Callable<Integer> { - - protected final WebAdminCli webAdminCli; - protected final PrintStream out; - protected final PrintStream err; - - public DomainCommand(PrintStream out, WebAdminCli webAdminCli, PrintStream err) { - this.out = out; - this.webAdminCli = webAdminCli; - this.err = err; - } + name = "delete", + description = "Delete a domain") +public class DomainDeleteCommand implements Callable<Integer> { + + public static final int DELETED_CODE = 204; + + @CommandLine.ParentCommand DomainCommand domainCommand; + + @CommandLine.Parameters + String domainName; @Override public Integer call() { - return WebAdminCli.CLI_FINISHED_SUCCEED; + try { + DomainClient domainClient = Feign.builder() + .target(DomainClient.class, domainCommand.webAdminCli.jamesUrl + "/domains"); + Response rs = domainClient.deleteADomain(domainName); + if (rs.status() == DELETED_CODE) { + return WebAdminCli.CLI_FINISHED_SUCCEED; + } else { + return WebAdminCli.CLI_FINISHED_FAILED; + } + } catch (Exception e) { + e.printStackTrace(domainCommand.err); + return WebAdminCli.CLI_FINISHED_FAILED; + } } } \ No newline at end of file diff --git a/server/protocols/webadmin-cli/src/main/java/org/apache/james/httpclient/DomainClient.java b/server/protocols/webadmin-cli/src/main/java/org/apache/james/httpclient/DomainClient.java index 7b52da9..1d03221 100644 --- a/server/protocols/webadmin-cli/src/main/java/org/apache/james/httpclient/DomainClient.java +++ b/server/protocols/webadmin-cli/src/main/java/org/apache/james/httpclient/DomainClient.java @@ -33,4 +33,7 @@ public interface DomainClient { @RequestLine("PUT /{domainToBeCreated}") Response createADomain(@Param("domainToBeCreated") String domainName); + @RequestLine("DELETE /{domainToBeDeleted}") + Response deleteADomain(@Param("domainToBeDeleted") String domainName); + } diff --git a/server/protocols/webadmin-cli/src/test/java/org/apache/james/cli/DomainManageTest.java b/server/protocols/webadmin-cli/src/test/java/org/apache/james/cli/DomainManageTest.java index 6e2cec1..5a5720a 100644 --- a/server/protocols/webadmin-cli/src/test/java/org/apache/james/cli/DomainManageTest.java +++ b/server/protocols/webadmin-cli/src/test/java/org/apache/james/cli/DomainManageTest.java @@ -93,4 +93,32 @@ public class DomainManageTest { assertThat(exitCode3).isEqualTo(1); assertThat(outputStreamCaptor.toString().trim().toCharArray()).containsOnly("localhost".toCharArray()); } + + @Test + void domainDeleteCommandWithValidDomainShouldSucceed(GuiceJamesServer server) { + Port port = server.getProbe(WebAdminGuiceProbe.class).getWebAdminPort(); + + WebAdminCli.executeFluent(new PrintStream(outputStreamCaptor), new PrintStream(errorStreamCaptor), + "--url", "http://127.0.0.1:" + port.getValue(), "domain", "create", "linagora.com"); + + int exitCode = WebAdminCli.executeFluent(new PrintStream(outputStreamCaptor), new PrintStream(errorStreamCaptor), + "--url", "http://127.0.0.1:" + port.getValue(), "domain", "delete", "linagora.com"); + + WebAdminCli.executeFluent(new PrintStream(outputStreamCaptor), new PrintStream(errorStreamCaptor), + "--url", "http://127.0.0.1:" + port.getValue(), "domain", "list"); + + assertThat(exitCode).isEqualTo(0); + assertThat(outputStreamCaptor.toString().contains("linagora.com")).isFalse(); + } + + @Test + void domainDeleteCommandWithDefaultDomainShouldFail(GuiceJamesServer server) { + Port port = server.getProbe(WebAdminGuiceProbe.class).getWebAdminPort(); + + int exitCode = WebAdminCli.executeFluent(new PrintStream(outputStreamCaptor), new PrintStream(errorStreamCaptor), + "--url", "http://127.0.0.1:" + port.getValue(), "domain", "delete", "localhost"); + + assertThat(exitCode).isEqualTo(1); + } + } --------------------------------------------------------------------- To unsubscribe, e-mail: notifications-unsubscr...@james.apache.org For additional commands, e-mail: notifications-h...@james.apache.org