You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@knox.apache.org by am...@apache.org on 2023/07/31 08:19:45 UTC

[knox] branch master updated: KNOX-2940 - knoxcli create-alias/create-aliases command doesn't support values starting with dash (#778)

This is an automated email from the ASF dual-hosted git repository.

amagyar pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/knox.git


The following commit(s) were added to refs/heads/master by this push:
     new 6eac567fa KNOX-2940 - knoxcli create-alias/create-aliases command doesn't support values starting with dash (#778)
6eac567fa is described below

commit 6eac567fafd01da0e7fd1e10b60b5f052c8837c6
Author: Attila Magyar <m....@gmail.com>
AuthorDate: Mon Jul 31 10:19:40 2023 +0200

    KNOX-2940 - knoxcli create-alias/create-aliases command doesn't support values starting with dash (#778)
---
 .../java/org/apache/knox/gateway/util/KnoxCLI.java |  9 +++-
 .../org/apache/knox/gateway/util/KnoxCLITest.java  | 61 ++++++++++++++++++++++
 2 files changed, 68 insertions(+), 2 deletions(-)

diff --git a/gateway-server/src/main/java/org/apache/knox/gateway/util/KnoxCLI.java b/gateway-server/src/main/java/org/apache/knox/gateway/util/KnoxCLI.java
index bdeb8ad22..d2412fb8c 100644
--- a/gateway-server/src/main/java/org/apache/knox/gateway/util/KnoxCLI.java
+++ b/gateway-server/src/main/java/org/apache/knox/gateway/util/KnoxCLI.java
@@ -292,7 +292,10 @@ public class KnoxCLI extends Configured implements Tool {
       } else if (args[i].equals("list-alias")) {
         command = new AliasListCommand();
       } else if (args[i].equals("--value")) {
-        if (i + 1 >= args.length || args[i + 1].startsWith("-")) {
+        if (i + 1 >= args.length
+                || "--generate".equals(args[i + 1]) // missing value
+                || "--cluster".equals(args[i + 1])
+                || "--master".equals(args[i + 1])) {
           printKnoxShellUsage();
           return -1;
         }
@@ -415,7 +418,9 @@ public class KnoxCLI extends Configured implements Tool {
         this.discoveryType = args[++i];
       } else if (args[i].equals("--master")) {
         // For testing only
-        if( i+1 >= args.length || args[i+1].startsWith( "-" ) ) {
+        if( i+1 >= args.length
+                || "--generate".equals(args[i + 1]) // missing value
+                || "--force".equals(args[i + 1])) {
           printKnoxShellUsage();
           return -1;
         }
diff --git a/gateway-server/src/test/java/org/apache/knox/gateway/util/KnoxCLITest.java b/gateway-server/src/test/java/org/apache/knox/gateway/util/KnoxCLITest.java
index ca58161a1..ca577fac6 100644
--- a/gateway-server/src/test/java/org/apache/knox/gateway/util/KnoxCLITest.java
+++ b/gateway-server/src/test/java/org/apache/knox/gateway/util/KnoxCLITest.java
@@ -482,6 +482,67 @@ public class KnoxCLITest {
     assertFalse(outContent.toString(StandardCharsets.UTF_8.name()), outContent.toString(StandardCharsets.UTF_8.name()).contains("alias1"));
   }
 
+  @Test
+  public void testMissingAliasValue() throws Exception {
+    outContent.reset();
+    String[] args1 = {"create-alias", "alias1", "--value"};
+    int rc;
+    KnoxCLI cli = new KnoxCLI();
+    cli.setConf(new GatewayConfigImpl());
+    rc = cli.run(args1);
+    assertEquals(-1, rc);
+    assertTrue(outContent.toString(StandardCharsets.UTF_8.name()), outContent.toString(StandardCharsets.UTF_8.name()).contains(KnoxCLI.AliasCreateCommand.USAGE));
+  }
+
+  @Test
+  public void testIncorrectCombinationOfValueAndGenerate() throws Exception {
+    outContent.reset();
+    String[] args1 = {"create-alias", "alias1", "--value", "--generate"};
+    int rc;
+    KnoxCLI cli = new KnoxCLI();
+    cli.setConf(new GatewayConfigImpl());
+    rc = cli.run(args1);
+    assertEquals(-1, rc);
+    assertTrue(outContent.toString(StandardCharsets.UTF_8.name()), outContent.toString(StandardCharsets.UTF_8.name()).contains(KnoxCLI.AliasCreateCommand.USAGE));
+  }
+
+  @Test
+  public void testGeneratingAliasWithLeadingDash() throws Exception {
+    outContent.reset();
+    String[] args1 = {"create-alias", "alias1", "--value", "---testvalue1---", "--master", "master"};
+    int rc;
+    KnoxCLI cli = new KnoxCLI();
+    cli.setConf(new GatewayConfigImpl());
+    rc = cli.run(args1);
+    assertEquals(0, rc);
+    assertTrue(outContent.toString(StandardCharsets.UTF_8.name()), outContent.toString(StandardCharsets.UTF_8.name()).contains("alias1 has been successfully " +
+            "created."));
+  }
+
+  @Test
+  public void testIncorrectCombinationOfValuesAndGenerate() throws Exception {
+    outContent.reset();
+    String[] args1 = {"create-aliases", "--alias", "alias1", "--value", "--cluster"};
+    int rc;
+    KnoxCLI cli = new KnoxCLI();
+    cli.setConf(new GatewayConfigImpl());
+    rc = cli.run(args1);
+    assertEquals(-1, rc);
+    assertTrue(outContent.toString(StandardCharsets.UTF_8.name()), outContent.toString(StandardCharsets.UTF_8.name()).contains(KnoxCLI.AliasCreateCommand.USAGE));
+  }
+
+  @Test
+  public void testMissingValueForBatchAliasCreation() throws Exception {
+    outContent.reset();
+    String[] args1 = {"create-aliases", "--alias", "alias1", "--value", "--alias", "alias2", "--value", "value1"};
+    int rc;
+    KnoxCLI cli = new KnoxCLI();
+    cli.setConf(new GatewayConfigImpl());
+    rc = cli.run(args1);
+    assertEquals(-1, rc);
+    assertTrue(outContent.toString(StandardCharsets.UTF_8.name()), outContent.toString(StandardCharsets.UTF_8.name()).contains(KnoxCLI.AliasCreateCommand.USAGE));
+  }
+
   @Test
   public void testListAndDeleteOfAliasForInvalidClusterName() throws Exception {
     outContent.reset();