From abf5898650417a9726c8eb8924b4b3aaebf54523 Mon Sep 17 00:00:00 2001 From: Kanagaraj Manickam k00365106 Date: Tue, 26 Sep 2017 20:42:28 +0530 Subject: Fix auth plugin issues Now OCLIP is enabled to be very generic platform. Issue-Id: CLI-66 Change-Id: Id431f2eca5e516ad3b070c2c80e4fcd2ba0b54b2 Signed-off-by: Kanagaraj Manickam k00365106 --- .../org/onap/cli/fw/cmd/BasicAuthLoginCommand.java | 7 +- .../main/java/org/onap/cli/fw/conf/Constants.java | 10 +- .../resources/open-cli-schema/basic-login.yaml | 7 +- .../resources/open-cli-schema/basic-logout.yaml | 1 + .../cli/fw/ad/OnapAuthClientCommandBasedTest.java | 116 +++++++++++++++++++++ .../sample-test-schema-no-auth-no-catalog.yaml | 22 ++++ .../sample-test-schema-no-auth-yes-catalog.yaml | 22 ++++ .../sample-test-schema-yes-auth-no-catalog.yaml | 22 ++++ .../sample-test-schema-yes-auth-yes-catalog.yaml | 22 ++++ .../src/test/resources/sample-test-schema.yaml | 16 +-- .../open-cli-schema/basic-login-onap-1-1.yaml | 1 + .../open-cli-schema/basic-login-onap-sdc-1-1.yaml | 1 + .../open-cli-schema/basic-logout-onap-1-1.yaml | 1 + .../open-cli-schema/catalog-onap-1_1.yaml | 4 +- 14 files changed, 234 insertions(+), 18 deletions(-) create mode 100644 framework/src/test/java/org/onap/cli/fw/ad/OnapAuthClientCommandBasedTest.java create mode 100644 framework/src/test/resources/sample-test-schema-no-auth-no-catalog.yaml create mode 100644 framework/src/test/resources/sample-test-schema-no-auth-yes-catalog.yaml create mode 100644 framework/src/test/resources/sample-test-schema-yes-auth-no-catalog.yaml create mode 100644 framework/src/test/resources/sample-test-schema-yes-auth-yes-catalog.yaml diff --git a/framework/src/main/java/org/onap/cli/fw/cmd/BasicAuthLoginCommand.java b/framework/src/main/java/org/onap/cli/fw/cmd/BasicAuthLoginCommand.java index a7b7181f..df1892fb 100644 --- a/framework/src/main/java/org/onap/cli/fw/cmd/BasicAuthLoginCommand.java +++ b/framework/src/main/java/org/onap/cli/fw/cmd/BasicAuthLoginCommand.java @@ -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 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); } } diff --git a/framework/src/main/java/org/onap/cli/fw/conf/Constants.java b/framework/src/main/java/org/onap/cli/fw/conf/Constants.java index 5ae3c502..a1ade420 100644 --- a/framework/src/main/java/org/onap/cli/fw/conf/Constants.java +++ b/framework/src/main/java/org/onap/cli/fw/conf/Constants.java @@ -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() { } diff --git a/framework/src/main/resources/open-cli-schema/basic-login.yaml b/framework/src/main/resources/open-cli-schema/basic-login.yaml index 78294fc5..a7f3b6ed 100644 --- a/framework/src/main/resources/open-cli-schema/basic-login.yaml +++ b/framework/src/main/resources/open-cli-schema/basic-login.yaml @@ -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/main/resources/open-cli-schema/basic-logout.yaml b/framework/src/main/resources/open-cli-schema/basic-logout.yaml index 2c0e3dbd..80255dd5 100644 --- a/framework/src/main/resources/open-cli-schema/basic-logout.yaml +++ b/framework/src/main/resources/open-cli-schema/basic-logout.yaml @@ -11,3 +11,4 @@ type: auth service: name: open-cli version: 1.0.0 + mode: direct \ No newline at end of file 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 index 00000000..77ef680d --- /dev/null +++ b/framework/src/test/java/org/onap/cli/fw/ad/OnapAuthClientCommandBasedTest.java @@ -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 index 00000000..295a2b80 --- /dev/null +++ b/framework/src/test/resources/sample-test-schema-no-auth-no-catalog.yaml @@ -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 index 00000000..ebe03d86 --- /dev/null +++ b/framework/src/test/resources/sample-test-schema-no-auth-yes-catalog.yaml @@ -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 index 00000000..fada6f52 --- /dev/null +++ b/framework/src/test/resources/sample-test-schema-yes-auth-no-catalog.yaml @@ -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 index 00000000..e8b814a4 --- /dev/null +++ b/framework/src/test/resources/sample-test-schema-yes-auth-yes-catalog.yaml @@ -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} diff --git a/framework/src/test/resources/sample-test-schema.yaml b/framework/src/test/resources/sample-test-schema.yaml index 092e0e75..d77cb114 100644 --- a/framework/src/test/resources/sample-test-schema.yaml +++ b/framework/src/test/resources/sample-test-schema.yaml @@ -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 diff --git a/plugins/auth/src/main/resources/open-cli-schema/basic-login-onap-1-1.yaml b/plugins/auth/src/main/resources/open-cli-schema/basic-login-onap-1-1.yaml index cb17ff12..8a7f14d3 100644 --- a/plugins/auth/src/main/resources/open-cli-schema/basic-login-onap-1-1.yaml +++ b/plugins/auth/src/main/resources/open-cli-schema/basic-login-onap-1-1.yaml @@ -11,6 +11,7 @@ type: auth service: name: onap version: v1 + mode: direct results: direction: portrait diff --git a/plugins/auth/src/main/resources/open-cli-schema/basic-login-onap-sdc-1-1.yaml b/plugins/auth/src/main/resources/open-cli-schema/basic-login-onap-sdc-1-1.yaml index ca07dca2..2dba0c11 100644 --- a/plugins/auth/src/main/resources/open-cli-schema/basic-login-onap-sdc-1-1.yaml +++ b/plugins/auth/src/main/resources/open-cli-schema/basic-login-onap-sdc-1-1.yaml @@ -11,6 +11,7 @@ type: auth service: name: onap version: v1 + mode: direct results: direction: portrait diff --git a/plugins/auth/src/main/resources/open-cli-schema/basic-logout-onap-1-1.yaml b/plugins/auth/src/main/resources/open-cli-schema/basic-logout-onap-1-1.yaml index 46a4bea7..fa32b8b9 100644 --- a/plugins/auth/src/main/resources/open-cli-schema/basic-logout-onap-1-1.yaml +++ b/plugins/auth/src/main/resources/open-cli-schema/basic-logout-onap-1-1.yaml @@ -11,3 +11,4 @@ type: auth service: name: onap version: v1 + mode: direct \ No newline at end of file diff --git a/plugins/catalog/src/main/resources/open-cli-schema/catalog-onap-1_1.yaml b/plugins/catalog/src/main/resources/open-cli-schema/catalog-onap-1_1.yaml index a23e6b22..27deedef 100644 --- a/plugins/catalog/src/main/resources/open-cli-schema/catalog-onap-1_1.yaml +++ b/plugins/catalog/src/main/resources/open-cli-schema/catalog-onap-1_1.yaml @@ -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 -- cgit 1.2.3-korg