Fix auth plugin issues 37/24337/1
authorKanagaraj Manickam k00365106 <kanagaraj.manickam@huawei.com>
Tue, 26 Sep 2017 15:12:28 +0000 (20:42 +0530)
committerKanagaraj Manickam k00365106 <kanagaraj.manickam@huawei.com>
Tue, 14 Nov 2017 09:09:05 +0000 (14:39 +0530)
Now OCLIP is enabled to be very generic
platform.

Issue-Id: CLI-66

Change-Id: Id431f2eca5e516ad3b070c2c80e4fcd2ba0b54b2
Signed-off-by: Kanagaraj Manickam k00365106 <kanagaraj.manickam@huawei.com>
14 files changed:
framework/src/main/java/org/onap/cli/fw/cmd/BasicAuthLoginCommand.java
framework/src/main/java/org/onap/cli/fw/conf/Constants.java
framework/src/main/resources/open-cli-schema/basic-login.yaml
framework/src/main/resources/open-cli-schema/basic-logout.yaml
framework/src/test/java/org/onap/cli/fw/ad/OnapAuthClientCommandBasedTest.java [new file with mode: 0644]
framework/src/test/resources/sample-test-schema-no-auth-no-catalog.yaml [new file with mode: 0644]
framework/src/test/resources/sample-test-schema-no-auth-yes-catalog.yaml [new file with mode: 0644]
framework/src/test/resources/sample-test-schema-yes-auth-no-catalog.yaml [new file with mode: 0644]
framework/src/test/resources/sample-test-schema-yes-auth-yes-catalog.yaml [new file with mode: 0644]
framework/src/test/resources/sample-test-schema.yaml
plugins/auth/src/main/resources/open-cli-schema/basic-login-onap-1-1.yaml
plugins/auth/src/main/resources/open-cli-schema/basic-login-onap-sdc-1-1.yaml
plugins/auth/src/main/resources/open-cli-schema/basic-logout-onap-1-1.yaml
plugins/catalog/src/main/resources/open-cli-schema/catalog-onap-1_1.yaml

index a7b7181..df1892f 100644 (file)
@@ -22,6 +22,7 @@ import org.apache.http.auth.UsernamePasswordCredentials;
 import org.apache.http.impl.auth.BasicScheme;
 import org.onap.cli.fw.OnapCommand;
 import org.onap.cli.fw.OnapCommandSchema;
+import org.onap.cli.fw.conf.Constants;
 import org.onap.cli.fw.error.OnapCommandException;
 import org.onap.cli.fw.input.OnapCommandParameter;
 
@@ -33,9 +34,9 @@ public class BasicAuthLoginCommand extends OnapCommand {
 
         //get the input arguments
         Map<String, OnapCommandParameter> paramMap = getParametersMap();
-        OnapCommandParameter usernameParam = paramMap.get("username");
+        OnapCommandParameter usernameParam = paramMap.get(Constants.DEAFULT_PARAMETER_USERNAME);
         String username = usernameParam.getValue().toString();
-        OnapCommandParameter usernamePassword = paramMap.get("password");
+        OnapCommandParameter usernamePassword = paramMap.get(Constants.DEAFULT_PARAMETER_PASS_WORD);
         String password = usernamePassword.getValue().toString();
 
         //Execute the command to get token
@@ -43,6 +44,6 @@ public class BasicAuthLoginCommand extends OnapCommand {
                 username, password), "UTF-8", false).getValue();
 
         //Fill out the result part
-        this.getResult().getRecordsMap().get("Authorization").getValues().add(authToken);
+        this.getResult().getRecordsMap().get(Constants.AUTH_SERVICE_AUTHORIZATION).getValues().add(authToken);
     }
 }
index 5ae3c50..a1ade42 100644 (file)
@@ -197,14 +197,16 @@ public class Constants {
     public static final String SPL_ENTRY_UUID = "uuid";
     public static final String SPL_ENTRY_ENV = "env:";
 
+    public static final String AUTH_SERVICE_AUTHORIZATION = "Authorization";
+
     public static final String CATALOG_SERVICE_NAME = "catalog-service-name";
-    
+
     public static final String CATALOG_SERVICE_VERSION = "catalog-service-version";
-    
+
     public static final String CATALOG_SERVICE_BASE_PATH = "catalog-service-base-path";
-    
+
     public static final String CATALOG_SERVICE_HOST_URL = "catalog-service-host-url";
-    
+
     private Constants() {
     }
 
index 78294fc..a7f3b6e 100644 (file)
@@ -1,13 +1,18 @@
 open_cli_schema_version: 1.0
+
 name: basic-login
+
 description: basic login auth command
+
 version: cli-1.0
+
 type: auth
 
 service:
   name: open-cli
   version: 1.0.0
-    
+  mode: direct
+
 results:
   direction: portrait
   attributes:
diff --git a/framework/src/test/java/org/onap/cli/fw/ad/OnapAuthClientCommandBasedTest.java b/framework/src/test/java/org/onap/cli/fw/ad/OnapAuthClientCommandBasedTest.java
new file mode 100644 (file)
index 0000000..77ef680
--- /dev/null
@@ -0,0 +1,116 @@
+/*
+ * Copyright 2017 Huawei Technologies Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.onap.cli.fw.ad;
+
+import static org.junit.Assert.fail;
+
+import org.junit.Test;
+import org.onap.cli.fw.OnapCommand;
+import org.onap.cli.fw.OnapCommandRegistrar;
+import org.onap.cli.fw.conf.Constants;
+import org.onap.cli.fw.conf.OnapCommandConfg;
+import org.onap.cli.fw.error.OnapCommandException;
+
+public class OnapAuthClientCommandBasedTest {
+
+    OnapCommand cmd;
+
+    @Test
+    public void internalCommandTest() {
+        try {
+            cmd = OnapCommandRegistrar.getRegistrar().get("sample-test");
+            cmd.getService().setName(OnapCommandConfg.getInternalCmd());
+
+            cmd.execute();
+        } catch (OnapCommandException e) {
+            fail("Internal command failed to run");
+            e.printStackTrace();
+        }
+    }
+
+    @Test
+    public void yesCatalogYesAuthTest() throws OnapCommandException {
+        try {
+            cmd = getCommand("sample-test-schema-yes-auth-yes-catalog.yaml");
+            cmd.getParametersMap().get(Constants.DEAFULT_PARAMETER_HOST_URL).setValue("http://localhost:8080");
+            cmd.getParametersMap().get(Constants.DEAFULT_PARAMETER_USERNAME).setValue("test");
+            cmd.getParametersMap().get(Constants.DEAFULT_PARAMETER_PASS_WORD).setValue("password");
+
+            cmd.execute();
+        } catch (OnapCommandException e) {
+            fail("External command Yes Auth Yes Catalog failed to run");
+            e.printStackTrace();
+        }
+    }
+
+    @Test
+    public void yesCatalogNoAuthTest() throws OnapCommandException {
+        try {
+            cmd = getCommand("sample-test-schema-no-auth-yes-catalog.yaml");
+            cmd.getParametersMap().get(Constants.DEAFULT_PARAMETER_HOST_URL).setValue("http://localhost:8080");
+
+            cmd.execute();
+        } catch (OnapCommandException e) {
+            fail("External command Yes Auth No Catalog failed to run");
+            e.printStackTrace();
+        }
+    }
+
+    @Test
+    public void noCatalogYesAuthTest() throws OnapCommandException {
+        try {
+            cmd = getCommand("sample-test-schema-yes-auth-no-catalog.yaml");
+            cmd.getParametersMap().get(Constants.DEAFULT_PARAMETER_HOST_URL).setValue("http://localhost:8080");
+            cmd.getParametersMap().get(Constants.DEAFULT_PARAMETER_USERNAME).setValue("test");
+            cmd.getParametersMap().get(Constants.DEAFULT_PARAMETER_PASS_WORD).setValue("password");
+
+            cmd.execute();
+        } catch (OnapCommandException e) {
+            fail("External command Yes Auth No Catalog failed to run");
+            e.printStackTrace();
+        }
+    }
+
+    @Test
+    public void noCatalogNoAuthTest() throws OnapCommandException {
+        try {
+            cmd = getCommand("sample-test-schema-no-auth-no-catalog.yaml");
+            cmd.getParametersMap().get(Constants.DEAFULT_PARAMETER_HOST_URL).setValue("http://localhost:8080");
+
+            cmd.execute();
+        } catch (OnapCommandException e) {
+            fail("External command No Auth No Catalog failed to run");
+            e.printStackTrace();
+        }
+    }
+
+    private OnapCommand getCommand(String yaml) throws OnapCommandException {
+        OnapCommand cmd = new OnapCommand() {
+            @Override
+            protected void run() throws OnapCommandException {
+                if (!this.getService().isModeDirect()) {
+                    String url = this.authClient.getServiceUrl();
+                    assert url.equals(this.getParametersMap().get(Constants.DEAFULT_PARAMETER_HOST_URL).getValue() + "/");
+                }
+            }
+        };
+
+        cmd.initializeSchema(yaml);
+
+        return cmd;
+    }
+ }
diff --git a/framework/src/test/resources/sample-test-schema-no-auth-no-catalog.yaml b/framework/src/test/resources/sample-test-schema-no-auth-no-catalog.yaml
new file mode 100644 (file)
index 0000000..295a2b8
--- /dev/null
@@ -0,0 +1,22 @@
+open_cli_schema_version: 1.0
+
+name: sample-cmd-no-auth-no-catalog
+
+description: sample
+
+version: sample-test-1.0
+
+service:
+  name: sample
+  version: v1
+  auth: none
+  mode: direct
+
+http:
+  request:
+    uri: /test
+    method: GET
+  success_codes:
+    - 200
+  result_map:
+    name: ${name}
diff --git a/framework/src/test/resources/sample-test-schema-no-auth-yes-catalog.yaml b/framework/src/test/resources/sample-test-schema-no-auth-yes-catalog.yaml
new file mode 100644 (file)
index 0000000..ebe03d8
--- /dev/null
@@ -0,0 +1,22 @@
+open_cli_schema_version: 1.0
+
+name: sample-cmd-no-auth-no-catalog
+
+description: sample
+
+version: sample-test-1.0
+
+service:
+  name: sample
+  version: v1
+  auth: none
+  mode: catalog
+
+http:
+  request:
+    uri: /test
+    method: GET
+  success_codes:
+    - 200
+  result_map:
+    name: ${name}
diff --git a/framework/src/test/resources/sample-test-schema-yes-auth-no-catalog.yaml b/framework/src/test/resources/sample-test-schema-yes-auth-no-catalog.yaml
new file mode 100644 (file)
index 0000000..fada6f5
--- /dev/null
@@ -0,0 +1,22 @@
+open_cli_schema_version: 1.0
+
+name: sample-cmd-yes-auth-no-catalog
+
+description: sample
+
+version: sample-test-1.0
+
+service:
+  name: sample
+  version: v1
+  auth: basic
+  mode: direct
+
+http:
+  request:
+    uri: /test
+    method: GET
+  success_codes:
+    - 200
+  result_map:
+    name: ${name}
diff --git a/framework/src/test/resources/sample-test-schema-yes-auth-yes-catalog.yaml b/framework/src/test/resources/sample-test-schema-yes-auth-yes-catalog.yaml
new file mode 100644 (file)
index 0000000..e8b814a
--- /dev/null
@@ -0,0 +1,22 @@
+open_cli_schema_version: 1.0
+
+name: sample-cmd-no-auth-no-catalog
+
+description: sample
+
+version: sample-test-1.0
+
+service:
+  name: sample
+  version: v1
+  auth: basic
+  mode: catalog
+
+http:
+  request:
+    uri: /test
+    method: GET
+  success_codes:
+    - 200
+  result_map:
+    name: ${name}
index 092e0e7..d77cb11 100644 (file)
@@ -20,53 +20,53 @@ parameters:
     short_option: x
     long_option: secure
     is_secured: true
-    is_optional: false
+    is_optional: true
     default_Value: pass123#
   - name: string-param
     type: string
     description: Onap string param
     long_option: string-param
     short_option: c
-    is_optional: false
+    is_optional: true
     default_Value: test
   - name: yaml-param
     type: json
     description: Onap yaml file location param
     long_option: yaml-param
     short_option: y
-    is_optional: false
+    is_optional: true
   - name: json-param
     type: json
     description: Onap json file location param
     long_option: json-param
     short_option: j
-    is_optional: false
+    is_optional: true
     is_secured: false
   - name: long-param
     type: digit
     description: Onap long param
     short_option: l
     long_option: long-opt
-    is_optional: false
+    is_optional: true
     default_value: 10
   - name: url-param
     type: url
     description: Onap url param
     short_option: r
     long_option: url
-    is_optional: false
+    is_optional: true
     default_value: http://localhost:8082/file.txt
   - name: env-param
     type: string
     description: Onap env param.
     short_option: z
     long_option: env
-    is_optional: false
+    is_optional: true
     default_value: ${ENV_VAR}
   - name: positional-args
     type: string
     description: Onap positional args, if no short option and no long option given for it
-    is_optional: false
+    is_optional: true
     default_value: http://localhost:8082/file.txt
 results:
   direction: portrait
index a23e6b2..27deede 100644 (file)
@@ -2,17 +2,17 @@ open_cli_schema_version: 1.0
 
 name: catalog
 
-description: ONAP catalog command to find the base path for service. 
+description: ONAP catalog command to find the base path for service.
 
 version: onap-1.1
 
 type: catalog
 
 service:
-  auth: none
   name: msb
   version: v1
   mode: direct
+  auth: none
 
 parameters:
   - name: catalog-service-name