From c521118e69aaa589d631f95f34dcf88e7a8bd1b6 Mon Sep 17 00:00:00 2001 From: Kanagaraj Manickam k00365106 Date: Wed, 4 Oct 2017 23:04:34 +0530 Subject: Add overriding concept to Parameters Issue-Id: CLI-66 Change-Id: I90b69da1b4235bfa12d4eaffd3f73538fd12a443 Signed-off-by: Kanagaraj Manickam k00365106 --- .../src/main/java/org/onap/cli/fw/OnapCommand.java | 4 +- .../java/org/onap/cli/fw/OnapCommandRegistrar.java | 2 +- .../java/org/onap/cli/fw/ad/OnapCredentials.java | 68 ------- .../org/onap/cli/fw/utils/OnapCommandUtils.java | 69 ++++--- .../resources/open-cli-schema/basic-logout.yaml | 8 + .../main/resources/open-cli-schema/catalog.yaml | 7 +- .../org/onap/cli/fw/ad/OnapAuthClientTest.java | 214 --------------------- .../org/onap/cli/fw/ad/OnapCredentialsTest.java | 32 --- .../onap/cli/fw/utils/OnapCommandUtilsTest.java | 1 - 9 files changed, 59 insertions(+), 346 deletions(-) delete mode 100644 framework/src/main/java/org/onap/cli/fw/ad/OnapCredentials.java delete mode 100644 framework/src/test/java/org/onap/cli/fw/ad/OnapAuthClientTest.java delete mode 100644 framework/src/test/java/org/onap/cli/fw/ad/OnapCredentialsTest.java 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 69e45bd2..ec7e1338 100644 --- a/framework/src/main/java/org/onap/cli/fw/OnapCommand.java +++ b/framework/src/main/java/org/onap/cli/fw/OnapCommand.java @@ -177,7 +177,9 @@ public abstract class OnapCommand { */ protected void validate() throws OnapCommandException { for (OnapCommandParameter param : this.getParameters()) { - param.validate(); + if (param.isInclude()) { + param.validate(); + } } } diff --git a/framework/src/main/java/org/onap/cli/fw/OnapCommandRegistrar.java b/framework/src/main/java/org/onap/cli/fw/OnapCommandRegistrar.java index 0f5c9058..49919f43 100644 --- a/framework/src/main/java/org/onap/cli/fw/OnapCommandRegistrar.java +++ b/framework/src/main/java/org/onap/cli/fw/OnapCommandRegistrar.java @@ -199,7 +199,7 @@ public class OnapCommandRegistrar { //don't expose the auth type and catalog type commands if (cls == null) { - throw new OnapCommandNotFound(cmdName, version); + throw new OnapCommandNotFound(cmdName, version); } OnapCommand cmd; diff --git a/framework/src/main/java/org/onap/cli/fw/ad/OnapCredentials.java b/framework/src/main/java/org/onap/cli/fw/ad/OnapCredentials.java deleted file mode 100644 index 02cbef7b..00000000 --- a/framework/src/main/java/org/onap/cli/fw/ad/OnapCredentials.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * 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; - -/** - * Onap Service credentials. - */ -//mrkanag deprecate it -public class OnapCredentials { - - /* - * Onap Service username. - */ - private String username; - - /* - * Onap Service password - */ - private String password; - - /* - * Onap Service host-url - */ - private String hostUrl; - - /** - * Onap credentials with username and password. - * - * @param username - * user name - * @param password - * password - * @param hostUrl - * host url - */ - public OnapCredentials(String username, String password, String hostUrl) { - super(); - this.username = username; - this.password = password; - this.hostUrl = hostUrl; - } - - public String getUsername() { - return username; - } - - public String getPassword() { - return password; - } - - public String getHostUrl() { - return hostUrl; - } -} 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 08ee8fed..e056456a 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 @@ -255,21 +255,19 @@ public class OnapCommandUtils { public static List loadSchema(OnapCommand cmd, String schemaName, boolean includeDefault, boolean validateSchema) throws OnapCommandException { try { - Map defaultParameterMap = includeDefault ? - validateSchemaVersion(DEFAULT_PARAMETER_FILE_NAME, cmd.getSchemaVersion()) : new HashMap<>(); + List errors = new ArrayList<>(); + if (includeDefault) { + Map defaultParameterMap = includeDefault ? + validateSchemaVersion(DEFAULT_PARAMETER_FILE_NAME, cmd.getSchemaVersion()) : new HashMap<>(); + errors.addAll(parseSchema(cmd, defaultParameterMap, validateSchema)); + } Map>> commandYamlMap = (Map>>)validateSchemaVersion(schemaName, cmd.getSchemaVersion()); - if (includeDefault) { - if (commandYamlMap.get(PARAMETERS) == null) { - commandYamlMap.put(PARAMETERS, (List>) defaultParameterMap.get(PARAMETERS)); - } else { - commandYamlMap.get(PARAMETERS).addAll((List>) defaultParameterMap.get(PARAMETERS)); - } - } + errors.addAll(parseSchema(cmd, commandYamlMap, validateSchema)); - return parseSchema(cmd, commandYamlMap, validateSchema); + return errors; } catch (OnapCommandException e) { throw e; } catch (Exception e) { @@ -281,19 +279,18 @@ public class OnapCommandUtils { public static List loadHttpSchema(OnapHttpCommand cmd, String schemaName, boolean includeDefault, boolean validateSchema) throws OnapCommandException { try { - Map defaultParameterMap = includeDefault ? - validateSchemaVersion(DEFAULT_PARAMETER_HTTP_FILE_NAME, cmd.getSchemaVersion()) : new HashMap<>(); - Map>> commandYamlMap = (Map>>)validateSchemaVersion(schemaName, cmd.getSchemaVersion()); - + List errors = new ArrayList<>(); if (includeDefault) { - if (commandYamlMap.get(PARAMETERS) == null) { - commandYamlMap.put(PARAMETERS, (List>) defaultParameterMap.get(PARAMETERS)); - } else { - commandYamlMap.get(PARAMETERS).addAll((List>) defaultParameterMap.get(PARAMETERS)); - } - } - List errors = parseSchema(cmd, commandYamlMap, validateSchema); + Map defaultParameterMap = includeDefault ? + validateSchemaVersion(DEFAULT_PARAMETER_HTTP_FILE_NAME, cmd.getSchemaVersion()) : new HashMap<>(); + errors.addAll(parseSchema(cmd, defaultParameterMap, validateSchema)); + } + + Map>> commandYamlMap = + (Map>>)validateSchemaVersion(schemaName, cmd.getSchemaVersion()); + errors.addAll(parseHttpSchema(cmd, commandYamlMap, validateSchema)); + return errors; } catch (OnapCommandException e) { @@ -315,6 +312,7 @@ public class OnapCommandUtils { private static void validateTags(List schemaErrors, Map yamlMap, List totalParams, List mandatoryParams, String section) { + //mrkanag capture invalid entries as well for (String param : totalParams) { boolean isMandatory = mandatoryParams.contains(param); boolean isYamlContains = yamlMap.containsKey(param); @@ -441,12 +439,19 @@ public class OnapCommandUtils { if (parameters != null) { Set names = new HashSet<>(); + //To support overriding of the parameters, if command is already + //having the same named parameters, means same parameter is + //Overridden from included template into current template + Set existingParamNames = cmd.getParametersMap().keySet(); + for (Map parameter : parameters) { + boolean isOverriding = false; OnapCommandParameter param = new OnapCommandParameter(); //Override the parameters from its base such as default parameters list - if (cmd.getParametersMap().containsKey(param.getName())) { - param = cmd.getParametersMap().get(param.getName()); + if (existingParamNames.contains(parameter.getOrDefault(NAME, ""))) { + param = cmd.getParametersMap().get(parameter.getOrDefault(NAME, "")); + isOverriding = true; } if (validate) { @@ -461,8 +466,10 @@ public class OnapCommandUtils { case NAME: if (names.contains(parameter.get(key2))) { throwOrCollect(new OnapCommandParameterNameConflict(parameter.get(key2)), exceptionList, validate); + } else { + names.add(parameter.get(key2)); } - names.add(parameter.get(key2)); + param.setName(parameter.get(key2)); break; @@ -545,8 +552,10 @@ public class OnapCommandUtils { } } - if ( !cmd.getParametersMap().containsKey(param.getName()) ) { + if ( !isOverriding) { cmd.getParameters().add(param); + } else { + cmd.getParametersMap().replace(param.getName(), param); } } } @@ -938,9 +947,9 @@ public class OnapCommandUtils { //On None type, username, password and no_auth are invalid if (srv.isNoAuth()) { - cmd.getParametersMap().remove(DEAFULT_PARAMETER_USERNAME); - cmd.getParametersMap().remove(DEAFULT_PARAMETER_PASSWORD); - cmd.getParametersMap().remove(DEFAULT_PARAMETER_NO_AUTH); + cmd.getParametersMap().get(DEAFULT_PARAMETER_USERNAME).setInclude(false); + cmd.getParametersMap().get(DEAFULT_PARAMETER_PASSWORD).setInclude(false); + cmd.getParametersMap().get(DEFAULT_PARAMETER_NO_AUTH).setInclude(false); } break; @@ -1104,6 +1113,10 @@ public class OnapCommandUtils { int newLineOptions = 0; for (OnapCommandParameter param : cmd.getParameters()) { + if (!param.isInclude()) { + continue; + } + // First column Option or positional args String optFirstCol; if (newLineOptions == 3) { 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 088fe7df..ef60006c 100644 --- a/framework/src/main/resources/open-cli-schema/basic-logout.yaml +++ b/framework/src/main/resources/open-cli-schema/basic-logout.yaml @@ -9,3 +9,11 @@ info: service: basic-auth type: auth author: Kanagaraj Manickam mkr1481@gmail.com + +parameters: + - name: host-username + is_include: false + - name: host-password + is_include: false + - name: no-auth + is_include: false \ No newline at end of file diff --git a/framework/src/main/resources/open-cli-schema/catalog.yaml b/framework/src/main/resources/open-cli-schema/catalog.yaml index 4fafec4c..d3ee9992 100644 --- a/framework/src/main/resources/open-cli-schema/catalog.yaml +++ b/framework/src/main/resources/open-cli-schema/catalog.yaml @@ -23,7 +23,12 @@ parameters: short_option: i long_option: catalog-service-version is_optional: false - + - name: host-username + is_include: false + - name: host-password + is_include: false + - name: no-auth + is_include: false results: direction: portrait attributes: diff --git a/framework/src/test/java/org/onap/cli/fw/ad/OnapAuthClientTest.java b/framework/src/test/java/org/onap/cli/fw/ad/OnapAuthClientTest.java deleted file mode 100644 index 4c14c889..00000000 --- a/framework/src/test/java/org/onap/cli/fw/ad/OnapAuthClientTest.java +++ /dev/null @@ -1,214 +0,0 @@ -/* - * 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 java.util.ArrayList; -import java.util.List; - -import static org.junit.Assert.assertEquals; - -import org.junit.AfterClass; -import org.junit.Before; -import org.junit.Ignore; -import org.junit.Test; -import org.onap.cli.fw.conf.OnapCommandConfg; -import org.onap.cli.fw.error.OnapCommandException; -import org.onap.cli.fw.error.OnapCommandExecutionFailed; -import org.onap.cli.fw.error.OnapCommandHttpFailure; -import org.onap.cli.fw.error.OnapCommandServiceNotFound; -import org.onap.cli.fw.http.HttpInput; -import org.onap.cli.fw.http.HttpResult; -import org.onap.cli.fw.http.OnapHttpConnection; -import org.onap.cli.fw.input.OnapCommandParameter; - -import mockit.Invocation; -import mockit.Mock; -import mockit.MockUp; - -@Ignore -public class OnapAuthClientTest { - - OnapAuthClient client; - - @Before - public void setUp() throws OnapCommandHttpFailure, OnapCommandException { - OnapCredentials creds = new OnapCredentials("test", "test123", "http://192.168.99.10:80"); - OnapService service = new OnapService(); - List params = new ArrayList<>(); - client = new OnapAuthClient(null, false); - } - - @Test - public void loginFailedAuthIgnoredTest() throws OnapCommandException { - OnapCredentials creds = new OnapCredentials("test", "test123", "http://192.168.99.10:80"); - OnapService service = new OnapService(); - List params = new ArrayList<>(); - if (OnapCommandConfg.isAuthIgnored()) { - client.getDebugInfo(); - client.login(); - } - } - - @Test - public void logoutFailedAuthIgnoredTest() throws OnapCommandException { - OnapCredentials creds = new OnapCredentials("test", "test123", "http://192.168.99.10:80"); - OnapService service = new OnapService(); - List params = new ArrayList<>(); - if (OnapCommandConfg.isAuthIgnored()) { - client.logout(); - } - } - - @Test - public void getMsbUrlTest() throws OnapCommandException { - OnapCredentials creds = new OnapCredentials("test", "test123", "http://192.168.99.10:80"); - OnapService service = new OnapService(); - List params = new ArrayList<>(); - OnapService srv = new OnapService(); - srv.setName("msb"); - String msb = client.getServiceUrl(); - assertEquals("http://192.168.99.10:80/api/microservices/v1", msb); - } - - @Ignore - @Test(expected = OnapCommandServiceNotFound.class) - public void loginFailedServiceNotFoundTest() throws OnapCommandException { - mockIsAuthIgnored(false); - HttpResult result = new HttpResult(); - result.setStatus(404); - mockHttpRequest(result); - client.login(); - - } - - @Ignore - @Test(expected = OnapCommandExecutionFailed.class) - public void loginFailedCommandExecutionFailedTest() throws OnapCommandException { - - mockIsAuthIgnored(false); - HttpResult result = new HttpResult(); - result.setStatus(401); - mockHttpRequest(result); - client.login(); - } - - @Ignore - @Test(expected = OnapCommandExecutionFailed.class) - public void loginFailedWrongJasonBodyTest() throws OnapCommandException { - mockIsAuthIgnored(false); - HttpResult result = new HttpResult(); - result.setStatus(200); - mockHttpRequest(result); - client.login(); - } - - @Ignore - @Test - public void loginSuccessTest() { - - mockIsAuthIgnored(false); - HttpResult result = new HttpResult(); - result.setBody("{\"url\":\"http://192.168.4.47\"}"); - result.setStatus(200); - mockHttpConsecutiveRequest(result); - try { - client.login(); - } catch (OnapCommandException e) { - } - mockHttpRequest(null); - } - - @Test - public void logoutFailedTest() { - - mockIsAuthIgnored(false); - HttpResult result = new HttpResult(); - result.setBody("{\"url\":\"http://192.168.4.47\"}"); - result.setStatus(200); - mockHttpConsecutiveRequest(result); - try { - client.logout(); - } catch (OnapCommandException e) { - } - mockHttpRequest(null); - } - - @Test - public void logoutSuccessTest() { - - mockIsAuthIgnored(false); - HttpResult result = new HttpResult(); - result.setBody("{\"url\":\"http://192.168.4.47\"}"); - result.setStatus(204); - mockHttpConsecutiveRequest(result); - try { - client.logout(); - } catch (OnapCommandException e) { - } - mockHttpRequest(null); - } - - private void mockIsAuthIgnored(boolean isAuthIgnored) { - - new MockUp() { - boolean isMock = true; - - @Mock - public boolean isAuthIgnored(Invocation inv) { - if (isMock) { - isMock = false; - return isAuthIgnored; - } else { - return inv.proceed(); - } - } - }; - } - - private static void mockHttpRequest(HttpResult result) { - new MockUp() { - boolean isMock = true; - - @Mock - public HttpResult request(Invocation inv, HttpInput input) throws OnapCommandHttpFailure { - if (isMock) { - isMock = false; - return result; - } else { - return inv.proceed(input); - } - } - }; - } - - private void mockHttpConsecutiveRequest(HttpResult result) { - new MockUp() { - @Mock - public HttpResult request(Invocation inv, HttpInput input) throws OnapCommandHttpFailure { - return result; - } - }; - } - - @AfterClass - public static void clear() { - HttpResult result = new HttpResult(); - result.setBody("{\"url\":\"http://192.168.4.47\"}"); - result.setStatus(200); - mockHttpRequest(result); - } -} diff --git a/framework/src/test/java/org/onap/cli/fw/ad/OnapCredentialsTest.java b/framework/src/test/java/org/onap/cli/fw/ad/OnapCredentialsTest.java deleted file mode 100644 index cc431454..00000000 --- a/framework/src/test/java/org/onap/cli/fw/ad/OnapCredentialsTest.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * 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.assertTrue; - -import org.junit.Test; - -public class OnapCredentialsTest { - - @Test - public void credentialsTest() { - OnapCredentials cre = new OnapCredentials("test", "test123", "url"); - assertTrue(cre.getUsername().equals("test") && cre.getPassword().equals("test123") - && cre.getHostUrl().equals("url")); - } - -} 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 faf8394a..82869fa3 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 @@ -37,7 +37,6 @@ import org.junit.Test; import org.junit.runners.MethodSorters; import org.onap.cli.fw.OnapCommand; import org.onap.cli.fw.OnapCommandSchema; -import org.onap.cli.fw.ad.OnapCredentials; import org.onap.cli.fw.cmd.OnapHttpCommand; import org.onap.cli.fw.cmd.OnapSwaggerCommand; import org.onap.cli.fw.error.OnapCommandException; -- cgit 1.2.3-korg