diff options
author | Kanagaraj Manickam k00365106 <kanagaraj.manickam@huawei.com> | 2017-09-26 20:42:28 +0530 |
---|---|---|
committer | Kanagaraj Manickam k00365106 <kanagaraj.manickam@huawei.com> | 2017-11-14 14:39:05 +0530 |
commit | abf5898650417a9726c8eb8924b4b3aaebf54523 (patch) | |
tree | 56e698be5878ac96178628db24c88c1a3e0dc2d1 /framework | |
parent | 39f345954434553d10e0cea114e15e0521ec9471 (diff) |
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 <kanagaraj.manickam@huawei.com>
Diffstat (limited to 'framework')
10 files changed, 229 insertions, 16 deletions
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<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); } } 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 |