From 2741f49b3b5e92c5c31f44133fd458c4f15b5479 Mon Sep 17 00:00:00 2001 From: subhash kumar singh Date: Tue, 1 Aug 2017 19:56:00 +0530 Subject: Populate default param based on no-auth Based on no-auth customise the default parameter for onap-command. e.g. If "no-auth = true" then command should not add default parameter "onap-username, onap-password, msb-url and no-auth". Issue-Id: CLI-22 Change-Id: Ic9228feb1deb7e6f24eb9b9f0c8f15fd45364e94 Signed-off-by: subhash kumar singh --- .../src/main/java/org/onap/cli/fw/OnapCommand.java | 19 ++++++- .../main/java/org/onap/cli/fw/conf/Constants.java | 6 ++- .../org/onap/cli/fw/conf/OnapCommandConfg.java | 22 ++++++++ .../error/OnapCommandInvalidDefaultParameter.java | 2 +- .../org/onap/cli/fw/utils/OnapCommandUtils.java | 62 ++++++++++++++++++---- .../main/resources/default_input_parameters.yaml | 2 + framework/src/main/resources/onap.properties | 8 ++- framework/src/main/resources/schema-refresh.yaml | 6 --- .../org/onap/cli/fw/OnapCommandRegistrarTest.java | 10 ++-- .../java/org/onap/cli/fw/TestCommandValidate.java | 55 +++++++++++++++++++ .../TestDefaultParameterSection.java | 39 +++++++++++--- .../cli/fw/input/OnapCommandParameterTest.java | 4 +- .../onap/cli/fw/utils/OnapCommandUtilsTest.java | 12 ++++- framework/src/test/resources/onap.properties | 8 ++- .../test/resources/sample-test-exclude-param.yaml | 4 +- .../resources/sample-test-include-exclude.yaml | 5 +- .../test/resources/sample-test-include-param.yaml | 2 +- .../sample-test-invalid-exclude-noauth.yaml | 6 +++ .../sample-test-invalid-include-noauth.yaml | 6 +++ .../sample-test-schema-auth-required.yaml | 14 +++++ 20 files changed, 253 insertions(+), 39 deletions(-) create mode 100644 framework/src/test/java/org/onap/cli/fw/TestCommandValidate.java create mode 100644 framework/src/test/resources/sample-test-invalid-exclude-noauth.yaml create mode 100644 framework/src/test/resources/sample-test-invalid-include-noauth.yaml create mode 100644 framework/src/test/resources/sample-test-schema-auth-required.yaml (limited to 'framework') diff --git a/framework/src/main/java/org/onap/cli/fw/OnapCommand.java b/framework/src/main/java/org/onap/cli/fw/OnapCommand.java index 6cee09de..13e67fc6 100644 --- a/framework/src/main/java/org/onap/cli/fw/OnapCommand.java +++ b/framework/src/main/java/org/onap/cli/fw/OnapCommand.java @@ -29,6 +29,7 @@ import org.onap.cli.fw.error.OnapCommandInvalidResultAttributeScope; import org.onap.cli.fw.error.OnapCommandInvalidSchema; import org.onap.cli.fw.error.OnapCommandInvalidSchemaVersion; import org.onap.cli.fw.error.OnapCommandNotInitialized; +import org.onap.cli.fw.error.OnapCommandParameterMissing; import org.onap.cli.fw.error.OnapCommandParameterNameConflict; import org.onap.cli.fw.error.OnapCommandParameterOptionConflict; import org.onap.cli.fw.error.OnapCommandRegistrationFailed; @@ -42,6 +43,7 @@ import org.onap.cli.fw.utils.OnapCommandUtils; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Set; /** * Onap Command. @@ -184,7 +186,22 @@ public abstract class OnapCommand { */ protected void validate() throws OnapCommandException { for (OnapCommandParameter param : this.getParameters()) { - param.validate(); + try { + param.validate(); + } catch (OnapCommandParameterMissing e) { + if (OnapCommandConfg.getExcludeParamsForNoAuthEnableExternalCmd().contains(param.getName())) { + OnapCommandParameter noAuthParam = this.getParameters().stream().filter(p -> p.getName() + .equalsIgnoreCase(Constants.DEFAULT_PARAMETER_OUTPUT_NO_AUTH)).findFirst().get(); + + if ("true".equalsIgnoreCase(noAuthParam.getValue().toString())) { + continue; + } + } + throw e; + } catch (OnapCommandException e) { + throw e; + } + } } 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 8886de55..5f95518c 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 @@ -106,6 +106,10 @@ public class Constants { public static final String ONAP_CLI_VERSION = "cli.version"; public static final String HTTP_API_KEY_USE_COOKIES = "http.api_key_use_cookies"; public static final String HTTP_X_AUTH_TOKEN = "http.x_auth_token"; + public static final String EXCLUDE_PARAMS_INTERNAL_CMD = "cli.exclude_params_internal_cmd"; + public static final String NO_AUTH_DISABLE_INCLUDE_PARAMS_EXTERNAL_CMD = "cli.no_auth_disable_include_params_external_cmd"; + public static final String NO_AUTH_ENABLE_EXCLUDE_PARAMS_EXTERNAL_CMD = "cli.no_auth_enable_exclude_params_external_cmd"; + public static final String NO_AUTH_ENABLE_INCLUDE_PARAMS_EXTERNAL_CMD = "cli.no_auth_enable_include_params_external_cmd"; // Used while printing the column name during PORTRAIT mode print public static final String PORTRAINT_COLUMN_NAME_PROPERTY = "property"; @@ -148,7 +152,7 @@ public class Constants { public static final String DEFAULT_SCHEMA_FILE_NAME = "default_input_parameters.yaml"; // Error message - public static final String SCHEMA_INVALID_DEFAULT_PARAMS_SECTION = "Invalid default parameter section"; + public static final String SCHEMA_INVALID_DEFAULT_PARAMS_SECTION = "Invalid default_parameter section"; public static final String SCHEMA_FILE_EMPTY = "The schema file cann't be null or empty"; public static final String SCHEMA_FILE_WRONG_EXTN = "Schema file should be '.yaml' extension"; public static final String SCHEMA_FILE_NOT_EXIST = "Schema file doesn't exist"; diff --git a/framework/src/main/java/org/onap/cli/fw/conf/OnapCommandConfg.java b/framework/src/main/java/org/onap/cli/fw/conf/OnapCommandConfg.java index bcfd6dfb..c2682cae 100644 --- a/framework/src/main/java/org/onap/cli/fw/conf/OnapCommandConfg.java +++ b/framework/src/main/java/org/onap/cli/fw/conf/OnapCommandConfg.java @@ -17,7 +17,10 @@ package org.onap.cli.fw.conf; import java.io.IOException; +import java.util.Arrays; import java.util.Properties; +import java.util.Set; +import java.util.stream.Collectors; /** * Onap command constants. @@ -88,4 +91,23 @@ public final class OnapCommandConfg { return prps.getProperty(Constants.AUTH_SERVICE); } + public static Set getExcludeParamsForInternalCmd() { + return Arrays.stream(prps.getProperty(Constants.EXCLUDE_PARAMS_INTERNAL_CMD) + .split(",")).map(String::trim).collect(Collectors.toSet()); + } + + public static Set getIncludeParamsForNoAuthDisableExternalCmd() { + return Arrays.stream(prps.getProperty(Constants.NO_AUTH_DISABLE_INCLUDE_PARAMS_EXTERNAL_CMD) + .split(",")).map(String::trim).collect(Collectors.toSet()); + } + + public static Set getExcludeParamsForNoAuthEnableExternalCmd() { + return Arrays.stream(prps.getProperty(Constants.NO_AUTH_ENABLE_EXCLUDE_PARAMS_EXTERNAL_CMD) + .split(",")).map(String::trim).collect(Collectors.toSet()); + } + + public static Set getIncludeParamsForNoAuthEnableExternalCmd() { + return Arrays.stream(prps.getProperty(Constants.NO_AUTH_ENABLE_INCLUDE_PARAMS_EXTERNAL_CMD) + .split(",")).map(String::trim).collect(Collectors.toSet()); + } } diff --git a/framework/src/main/java/org/onap/cli/fw/error/OnapCommandInvalidDefaultParameter.java b/framework/src/main/java/org/onap/cli/fw/error/OnapCommandInvalidDefaultParameter.java index 4ebf04d3..7dc4374e 100644 --- a/framework/src/main/java/org/onap/cli/fw/error/OnapCommandInvalidDefaultParameter.java +++ b/framework/src/main/java/org/onap/cli/fw/error/OnapCommandInvalidDefaultParameter.java @@ -30,6 +30,6 @@ public class OnapCommandInvalidDefaultParameter extends OnapCommandException { * @param invalidParamsList message */ public OnapCommandInvalidDefaultParameter(List invalidParamsList) { - super("0x0024", "Invalid default parameter: " + invalidParamsList.toString()); + super("0x0024", "Invalid default_parameter: " + invalidParamsList.toString()); } } diff --git a/framework/src/main/java/org/onap/cli/fw/utils/OnapCommandUtils.java b/framework/src/main/java/org/onap/cli/fw/utils/OnapCommandUtils.java index 1ad588de..1a5aba0f 100644 --- a/framework/src/main/java/org/onap/cli/fw/utils/OnapCommandUtils.java +++ b/framework/src/main/java/org/onap/cli/fw/utils/OnapCommandUtils.java @@ -25,6 +25,7 @@ import org.onap.cli.fw.ad.OnapService; import org.onap.cli.fw.cmd.OnapHttpCommand; import org.onap.cli.fw.cmd.OnapSwaggerCommand; import org.onap.cli.fw.conf.Constants; +import org.onap.cli.fw.conf.OnapCommandConfg; import org.onap.cli.fw.error.OnapCommandDiscoveryFailed; import org.onap.cli.fw.error.OnapCommandException; import org.onap.cli.fw.error.OnapCommandHelpFailed; @@ -175,6 +176,42 @@ public class OnapCommandUtils { } } + private static void processNoAuth(Set parameterSet, final OnapCommand cmd, final List includeParams, + final List excludeParams) throws OnapCommandInvalidDefaultParameter { + // processing for no-auth type + if (cmd.getService() != null) { + List includeAuthParams = new ArrayList(); + List excludeAuthParams = new ArrayList<>(); + boolean noAuth = cmd.getService().isNoAuth(); + + if (cmd.isCommandInternal()) { + excludeAuthParams.addAll(OnapCommandConfg.getExcludeParamsForInternalCmd()); + } else { + if (noAuth) { + includeAuthParams.addAll(OnapCommandConfg.getIncludeParamsForNoAuthEnableExternalCmd()); + excludeAuthParams.addAll(OnapCommandConfg.getExcludeParamsForNoAuthEnableExternalCmd()); + } else { + includeAuthParams.addAll(OnapCommandConfg.getIncludeParamsForNoAuthDisableExternalCmd()); + } + } + + List invalidExclude = excludeAuthParams.stream().filter(includeParams::contains) + .collect(Collectors.toList()); + + List invalidInclude = includeAuthParams.stream().filter(excludeParams::contains) + .filter(p->!includeParams.contains(p)).collect(Collectors.toList()); + + if (!invalidExclude.isEmpty() || !invalidInclude.isEmpty()) { + throw new OnapCommandInvalidDefaultParameter(Stream.concat(invalidExclude.stream(), invalidInclude.stream()) + .collect(Collectors.toList())); + } + + + parameterSet.addAll(includeAuthParams); + parameterSet.removeAll(excludeAuthParams); + } + } + private static void parseSchema(OnapCommand cmd, final Map values, final List defaultParamNames) throws OnapCommandException { @@ -222,6 +259,8 @@ public class OnapCommandUtils { } else if (Constants.DEFAULT_PARAMETERS.equals(key)) { Map> defParameters = (Map) values.get(Constants.DEFAULT_PARAMETERS); + List includeParams = new ArrayList<>(); + List excludeParams = new ArrayList<>(); if (values.containsKey(Constants.DEFAULT_PARAMETERS) && defParameters == null) { // if default parameter section is available then it must have either include @@ -229,22 +268,25 @@ public class OnapCommandUtils { throw new OnapCommandInvalidSchema(Constants.SCHEMA_INVALID_DEFAULT_PARAMS_SECTION); } + if (defParameters != null) { // validate default parameters - List includeParams = defParameters.containsKey(Constants.DEFAULT_PARAMETERS_INCLUDE) ? - defParameters.get(Constants.DEFAULT_PARAMETERS_INCLUDE) : new ArrayList<>(); + if (defParameters.containsKey(Constants.DEFAULT_PARAMETERS_INCLUDE)) { + includeParams = defParameters.get(Constants.DEFAULT_PARAMETERS_INCLUDE); + } List invInclude = includeParams.stream() .filter(p -> !defaultParamNames.contains(p)) .collect(Collectors.toList()); - List excludeParams = defParameters.containsKey(Constants.DEFAULT_PARAMETERS_EXCLUDE) ? - defParameters.get(Constants.DEFAULT_PARAMETERS_EXCLUDE) : new ArrayList<>(); + if (defParameters.containsKey(Constants.DEFAULT_PARAMETERS_EXCLUDE)) { + excludeParams = defParameters.get(Constants.DEFAULT_PARAMETERS_EXCLUDE); + } - List invExclude = excludeParams.stream() - .filter(p -> !defaultParamNames.contains(p)) + List invExclude = excludeParams.stream().filter(p -> !defaultParamNames.contains(p)) .collect(Collectors.toList()); + if (!invExclude.isEmpty() || !invInclude.isEmpty()) { throw new OnapCommandInvalidDefaultParameter(Stream.concat(invInclude.stream(), invExclude.stream()) .collect(Collectors.toList())); @@ -253,14 +295,14 @@ public class OnapCommandUtils { if (!includeParams.isEmpty()) { filteredDefaultParams.addAll(includeParams); } else if (!excludeParams.isEmpty()) { - defaultParamNames.stream().filter(p -> !excludeParams.contains(p)) + List finalExcludeParams = excludeParams; + defaultParamNames.stream().filter(p -> !finalExcludeParams.contains(p)) .forEach(filteredDefaultParams::add); } } else { filteredDefaultParams.addAll(defaultParamNames); - } - + processNoAuth(filteredDefaultParams, cmd, includeParams, excludeParams); } else if (Constants.PARAMETERS.equals(key)) { List> parameters = (List) values.get(key); @@ -570,7 +612,7 @@ public class OnapCommandUtils { if (param.isDefaultValueAnEnv()) { optSecondCol += defaultMsg + "read from environment variable " + param.getEnvVarNameFromDefaultValue() + "."; - } else if (param.getDefaultValue() != null && !param.getDefaultValue().isEmpty()) { + } else if (param.getDefaultValue() != null && !((String)param.getDefaultValue()).isEmpty()) { optSecondCol += defaultMsg + param.getDefaultValue() + "."; } diff --git a/framework/src/main/resources/default_input_parameters.yaml b/framework/src/main/resources/default_input_parameters.yaml index f1e299eb..4f0d419c 100644 --- a/framework/src/main/resources/default_input_parameters.yaml +++ b/framework/src/main/resources/default_input_parameters.yaml @@ -14,11 +14,13 @@ parameters: long_option: onap-password default_value: ${ONAP_PASSWORD} is_secured: true + is_optional: false - name: msb-url type: url description: Onap MSB url short_option: m long_option: msb-url + is_optional: false default_value: ${ONAP_MSB_URL} - name: help type: string diff --git a/framework/src/main/resources/onap.properties b/framework/src/main/resources/onap.properties index bf1cdae5..b8f08d3b 100644 --- a/framework/src/main/resources/onap.properties +++ b/framework/src/main/resources/onap.properties @@ -5,4 +5,10 @@ http.api_key_use_cookies=true cli.service_name=onap-cli cli.api_gateway=msb -cli.auth_service=auth \ No newline at end of file +cli.auth_service=auth + +# service section +cli.exclude_params_internal_cmd=onap-username,onap-password,msb-url,no-auth +cli.no_auth_disable_include_params_external_cmd=onap-username,onap-password,msb-url,no-auth +cli.no_auth_enable_exclude_params_external_cmd=onap-username,onap-password,no-auth +cli.no_auth_enable_include_params_external_cmd=msb-url \ No newline at end of file diff --git a/framework/src/main/resources/schema-refresh.yaml b/framework/src/main/resources/schema-refresh.yaml index ffa32424..f64b0545 100644 --- a/framework/src/main/resources/schema-refresh.yaml +++ b/framework/src/main/resources/schema-refresh.yaml @@ -5,12 +5,6 @@ service: no-auth: true name: onap-cli version: 1.0.0 -default_parameters: - exclude: - - onap-username - - onap-password - - msb-url - - no-auth results: direction: landscape attributes: diff --git a/framework/src/test/java/org/onap/cli/fw/OnapCommandRegistrarTest.java b/framework/src/test/java/org/onap/cli/fw/OnapCommandRegistrarTest.java index 83f3a743..a076eee6 100644 --- a/framework/src/test/java/org/onap/cli/fw/OnapCommandRegistrarTest.java +++ b/framework/src/test/java/org/onap/cli/fw/OnapCommandRegistrarTest.java @@ -16,11 +16,6 @@ package org.onap.cli.fw; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; - import org.junit.Before; import org.junit.Test; import org.onap.cli.fw.error.OnapCommandException; @@ -31,6 +26,11 @@ import org.onap.cli.fw.error.OnapCommandRegistrationFailed; import java.io.File; import java.net.URL; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + public class OnapCommandRegistrarTest { OnapCommandRegistrar registerar; diff --git a/framework/src/test/java/org/onap/cli/fw/TestCommandValidate.java b/framework/src/test/java/org/onap/cli/fw/TestCommandValidate.java new file mode 100644 index 00000000..b8ac72ef --- /dev/null +++ b/framework/src/test/java/org/onap/cli/fw/TestCommandValidate.java @@ -0,0 +1,55 @@ +/* + * 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; + +import org.junit.Before; +import org.junit.Test; +import org.onap.cli.fw.error.OnapCommandException; +import org.onap.cli.fw.error.OnapCommandParameterMissing; +import org.onap.cli.fw.input.OnapCommandParameter; +import org.onap.cli.fw.utils.OnapCommandUtils; + +public class TestCommandValidate { + + OnapCommand cmd; + + @Before + public void before() { + cmd = new OnapCommand() { + @Override + protected void run() throws OnapCommandException {} + }; + } + + @Test + public void testNoAuthArgumentTrue() throws OnapCommandException { + + OnapCommandUtils.loadSchema(cmd, "sample-test-include-param.yaml", true); + + OnapCommandParameter noAuthParam = cmd.getParameters().stream().filter(p -> p.getName().equalsIgnoreCase("no-auth")).findFirst().get(); + noAuthParam.setValue(true); + OnapCommandParameter msbParam = cmd.getParameters().stream().filter(p -> p.getName().equalsIgnoreCase("msb-url")).findFirst().get(); + msbParam.setValue("localhost://msbip:msb:port"); + cmd.validate(); + } + + @Test(expected = OnapCommandParameterMissing.class) + public void testNoAuthArgFalse() throws OnapCommandException { + OnapCommandUtils.loadSchema(cmd, "sample-test-include-param.yaml", true); + cmd.validate(); + } +} diff --git a/framework/src/test/java/org/onap/cli/fw/defaultParameter/TestDefaultParameterSection.java b/framework/src/test/java/org/onap/cli/fw/defaultParameter/TestDefaultParameterSection.java index bd2ad0d1..004bf7cf 100644 --- a/framework/src/test/java/org/onap/cli/fw/defaultParameter/TestDefaultParameterSection.java +++ b/framework/src/test/java/org/onap/cli/fw/defaultParameter/TestDefaultParameterSection.java @@ -21,6 +21,7 @@ import org.onap.cli.fw.OnapCommand; import org.onap.cli.fw.error.OnapCommandException; import org.onap.cli.fw.error.OnapCommandInvalidDefaultParameter; import org.onap.cli.fw.error.OnapCommandInvalidSchema; +import org.onap.cli.fw.input.OnapCommandParameter; import org.onap.cli.fw.utils.OnapCommandUtils; import java.util.List; @@ -54,9 +55,12 @@ public class TestDefaultParameterSection { OnapCommandUtils.loadSchema(cmd, "sample-test-exclude-param.yaml", true); List parameters = cmd.getParameters().stream().map(p -> p.getName()).collect(Collectors.toList()); - assertFalse(parameters.contains("onap-username")); + assertTrue(parameters.contains("onap-username")); assertTrue(parameters.contains("onap-password")); - assertFalse(parameters.contains("msb-url")); + assertTrue(parameters.contains("msb-url")); + assertFalse(parameters.contains("long")); + assertFalse(parameters.contains("format")); + assertTrue(parameters.contains("debug")); } @Test @@ -70,8 +74,8 @@ public class TestDefaultParameterSection { List parameters = cmd.getParameters().stream().map(p -> p.getName()).collect(Collectors.toList()); assertTrue(parameters.contains("onap-username")); - assertFalse(parameters.contains("onap-password")); - assertFalse(parameters.contains("msb-url")); + assertTrue(parameters.contains("onap-password")); + assertTrue(parameters.contains("msb-url")); } @Test @@ -84,9 +88,12 @@ public class TestDefaultParameterSection { OnapCommandUtils.loadSchema(cmd, "onap-test-schema.yaml", true); List parameters = cmd.getParameters().stream().map(p -> p.getName()).collect(Collectors.toList()); - assertTrue(parameters.contains("onap-username")); - assertTrue(parameters.contains("onap-password")); + assertFalse(parameters.contains("onap-username")); + assertFalse(parameters.contains("onap-password")); assertTrue(parameters.contains("msb-url")); + assertTrue(parameters.contains("debug")); + assertTrue(parameters.contains("long")); + assertTrue(parameters.contains("format")); } @Test(expected = OnapCommandInvalidDefaultParameter.class) @@ -118,4 +125,24 @@ public class TestDefaultParameterSection { OnapCommandUtils.loadSchema(cmd, "sample-test-import-def-param-false.yaml", true); } + + @Test(expected = OnapCommandInvalidDefaultParameter.class) + public void checkInvalidIncludeNoAuth() throws OnapCommandException { + OnapCommand cmd = new OnapCommand() { + @Override + protected void run() throws OnapCommandException {} + }; + + OnapCommandUtils.loadSchema(cmd, "sample-test-invalid-include-noauth.yaml", true); + } + + @Test(expected = OnapCommandInvalidDefaultParameter.class) + public void checkInvalidExcludeNoAuth() throws OnapCommandException { + OnapCommand cmd = new OnapCommand() { + @Override + protected void run() throws OnapCommandException {} + }; + + OnapCommandUtils.loadSchema(cmd, "sample-test-invalid-exclude-noauth.yaml", true); + } } diff --git a/framework/src/test/java/org/onap/cli/fw/input/OnapCommandParameterTest.java b/framework/src/test/java/org/onap/cli/fw/input/OnapCommandParameterTest.java index 40b07861..604411ed 100644 --- a/framework/src/test/java/org/onap/cli/fw/input/OnapCommandParameterTest.java +++ b/framework/src/test/java/org/onap/cli/fw/input/OnapCommandParameterTest.java @@ -16,8 +16,6 @@ package org.onap.cli.fw.input; -import static org.junit.Assert.assertTrue; - import org.junit.Test; import org.onap.cli.fw.error.OnapCommandException; import org.onap.cli.fw.error.OnapCommandInvalidParameterValue; @@ -26,6 +24,8 @@ import java.util.Arrays; import java.util.HashMap; import java.util.Map; +import static org.junit.Assert.assertTrue; + public class OnapCommandParameterTest { @Test diff --git a/framework/src/test/java/org/onap/cli/fw/utils/OnapCommandUtilsTest.java b/framework/src/test/java/org/onap/cli/fw/utils/OnapCommandUtilsTest.java index b74027a0..d01e2e77 100644 --- a/framework/src/test/java/org/onap/cli/fw/utils/OnapCommandUtilsTest.java +++ b/framework/src/test/java/org/onap/cli/fw/utils/OnapCommandUtilsTest.java @@ -179,7 +179,17 @@ public class OnapCommandUtilsTest { OnapCredentials cre = OnapCommandUtils.fromParameters(cmd.getParameters()); assertTrue(cre != null); Map map = OnapCommandUtils.getInputMap(cmd.getParameters()); - assertTrue(map.size() == 19); + assertTrue(map.size() == 16); + } + + @Test + public void loadOnapCommandSchemaAuthRequiredTest() throws OnapCommandException { + OnapCommand cmd = new OnapCommandSample(); + OnapCommandUtils.loadSchema(cmd, "sample-test-schema-auth-required.yaml", true); + assertTrue("sample-test".equals(cmd.getName())); + + Map map = OnapCommandUtils.getInputMap(cmd.getParameters()); + assertTrue(map.size() == 11); } @Test diff --git a/framework/src/test/resources/onap.properties b/framework/src/test/resources/onap.properties index beb24a3f..a6c991cd 100644 --- a/framework/src/test/resources/onap.properties +++ b/framework/src/test/resources/onap.properties @@ -5,4 +5,10 @@ http.api_key_use_cookies=true cli.service_name=onap-cli cli.api_gateway=msb -cli.auth_service=auth \ No newline at end of file +cli.auth_service=auth + +# service section +cli.exclude_params_internal_cmd=onap-username,onap-password,msb-url,no-auth +cli.no_auth_disable_include_params_external_cmd=onap-username,onap-password,msb-url,no-auth +cli.no_auth_enable_exclude_params_external_cmd=onap-username,onap-password,no-auth +cli.no_auth_enable_include_params_external_cmd=msb-url diff --git a/framework/src/test/resources/sample-test-exclude-param.yaml b/framework/src/test/resources/sample-test-exclude-param.yaml index 3cfb62ac..970a185d 100644 --- a/framework/src/test/resources/sample-test-exclude-param.yaml +++ b/framework/src/test/resources/sample-test-exclude-param.yaml @@ -1,5 +1,5 @@ onap_cmd_schema_version: 1.0 default_parameters: exclude: - - onap-username - - msb-url \ No newline at end of file + - long + - format diff --git a/framework/src/test/resources/sample-test-include-exclude.yaml b/framework/src/test/resources/sample-test-include-exclude.yaml index 22d05c47..a1494bfe 100644 --- a/framework/src/test/resources/sample-test-include-exclude.yaml +++ b/framework/src/test/resources/sample-test-include-exclude.yaml @@ -2,5 +2,8 @@ onap_cmd_schema_version: 1.0 default_parameters: include: - onap-username + - onap-password + - msb-url + - no-auth exclude: - - msb-url \ No newline at end of file + - long diff --git a/framework/src/test/resources/sample-test-include-param.yaml b/framework/src/test/resources/sample-test-include-param.yaml index 0dc76bbc..ecc737c7 100644 --- a/framework/src/test/resources/sample-test-include-param.yaml +++ b/framework/src/test/resources/sample-test-include-param.yaml @@ -3,4 +3,4 @@ default_parameters: include: - onap-username - onap-password - - msb-url \ No newline at end of file + - no-auth diff --git a/framework/src/test/resources/sample-test-invalid-exclude-noauth.yaml b/framework/src/test/resources/sample-test-invalid-exclude-noauth.yaml new file mode 100644 index 00000000..bad12e60 --- /dev/null +++ b/framework/src/test/resources/sample-test-invalid-exclude-noauth.yaml @@ -0,0 +1,6 @@ +onap_cmd_schema_version: 1.0 +service: + no-auth: false +default_parameters: + exclude: + - onap-username \ No newline at end of file diff --git a/framework/src/test/resources/sample-test-invalid-include-noauth.yaml b/framework/src/test/resources/sample-test-invalid-include-noauth.yaml new file mode 100644 index 00000000..c4384ca0 --- /dev/null +++ b/framework/src/test/resources/sample-test-invalid-include-noauth.yaml @@ -0,0 +1,6 @@ +onap_cmd_schema_version: 1.0 +service: + no-auth: true +default_parameters: + include: + - onap-username \ No newline at end of file diff --git a/framework/src/test/resources/sample-test-schema-auth-required.yaml b/framework/src/test/resources/sample-test-schema-auth-required.yaml new file mode 100644 index 00000000..4df6445a --- /dev/null +++ b/framework/src/test/resources/sample-test-schema-auth-required.yaml @@ -0,0 +1,14 @@ +onap_cmd_schema_version: 1.0 +name: sample-test +description: Onap sample command to test the command features +service: + name: sample + version: v1 +parameters: + - name: bool-param + type: bool + description: Onap boolean param, by default its always false. + short_option: b + long_option: bool + is_optional: true + default_value: false \ No newline at end of file -- cgit 1.2.3-korg