You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by bt...@apache.org on 2020/11/06 02:28:48 UTC
[james-project] 10/12: JAMES-3400 Add domain delete command
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 <hq...@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-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org