2 * Copyright 2017 Huawei Technologies Co., Ltd.
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
18 package org.onap.cli.cmd.sample;
20 import static org.junit.Assert.assertEquals;
21 import static org.junit.Assert.assertTrue;
22 import static org.junit.Assert.fail;
24 import java.util.HashSet;
25 import java.util.List;
28 import java.util.UUID;
29 import java.util.stream.Collectors;
31 import org.junit.Test;
32 import org.onap.cli.fw.cmd.OnapCommand;
33 import org.onap.cli.fw.cmd.OnapCommandType;
34 import org.onap.cli.fw.conf.OnapCommandConstants;
35 import org.onap.cli.fw.error.OnapCommandException;
36 import org.onap.cli.fw.error.OnapCommandExecutionFailed;
37 import org.onap.cli.fw.error.OnapCommandInvalidParameterValue;
38 import org.onap.cli.fw.error.OnapCommandNotInitialized;
39 import org.onap.cli.fw.info.OnapCommandInfo;
40 import org.onap.cli.fw.info.OnapCommandState;
41 import org.onap.cli.fw.input.OnapCommandParameter;
42 import org.onap.cli.fw.input.OnapCommandParameterType;
43 import org.onap.cli.fw.output.OnapCommandResultAttribute;
44 import org.onap.cli.fw.registrar.OnapCommandRegistrar;
46 import org.onap.cli.fw.output.OnapCommandResult;
47 import static org.junit.Assert.assertNotNull;
49 public class OnapCommandSampleTest {
51 private static final String SAMPLE_TEST_COMMAND_NAME = "sample-test";
52 private static final int EXPECTED_NUMBER_OF_COMMAND_PARAMETERS = 18;
53 private static final int EXPECTED_SIZE_OF_METADATA = 1;
56 public void sampleTestVersion() {
59 Set<OnapCommandParameter> parameters = new HashSet<>();
60 OnapCommandParameter version = new OnapCommandParameter();
61 version.setName(OnapCommandConstants.DEFAULT_PARAMETER_VERSION);
62 version.setValue(true);
63 parameters.add(version);
64 OnapCommandParameter hlp = new OnapCommandParameter();
65 hlp.setName(OnapCommandConstants.DEFAULT_PARAMETER_HELP);
69 OnapCommand sample = givenOnapCommand("sample-test");
70 sample.setParameters(parameters);
72 OnapCommandResult onapCommandResult = sample.execute();
73 assertEquals("open-cli::test",onapCommandResult.getOutput());
74 } catch (OnapCommandException e) {
80 public void sampleTestHelp() {
82 OnapCommandParameter ver = new OnapCommandParameter();
83 ver.setName(OnapCommandConstants.DEFAULT_PARAMETER_HELP);
85 ver.setParameterType(OnapCommandParameterType.BOOL);
87 Set<OnapCommandParameter> parameters = new HashSet<>();
90 OnapCommandSample sample = new OnapCommandSample();
91 sample.setParameters(parameters);
93 OnapCommandResult onapCommandResult = sample.execute();
94 assertNotNull(onapCommandResult);
95 } catch (OnapCommandException e) {
101 public void shouldContainValidParametersAfterChangingDefaultValueOfSelectedParameter() throws OnapCommandException {
103 Set<OnapCommandParameter> parameters = new HashSet<>();
104 OnapCommandParameter booleanParameter = givenBooleanParameter(true);
105 parameters.add(booleanParameter);
108 OnapCommand onapCommand = givenOnapCommand(SAMPLE_TEST_COMMAND_NAME);
109 onapCommand.setParameters(parameters);
112 final Set<OnapCommandParameter> params = onapCommand.getParameters();
113 assertEquals(EXPECTED_NUMBER_OF_COMMAND_PARAMETERS, params.size());
114 assertTrue(params.contains(booleanParameter));
115 final List<OnapCommandParameter> stringParams = findParameter(params, "string-param");
116 verifyThatParameterHasValue(stringParams, "test");
120 public void shouldContainParametersWithDefaultValuesWhenUserDoesNotChangeAnyParameter() throws OnapCommandException {
122 OnapCommand onapCommand = givenOnapCommand(SAMPLE_TEST_COMMAND_NAME);
125 final Set<OnapCommandParameter> params = onapCommand.getParameters();
128 assertEquals(EXPECTED_NUMBER_OF_COMMAND_PARAMETERS, params.size());
129 final List<OnapCommandParameter> stringParams = findParameter(params, "string-param");
130 verifyThatParameterHasValue(stringParams, "test");
134 public void shouldContainValidInfoState() throws OnapCommandException {
136 OnapCommand onapCommand = givenOnapCommand(SAMPLE_TEST_COMMAND_NAME);
139 final OnapCommandInfo info = onapCommand.getInfo();
142 assertEquals("open-cli", info.getProduct());
143 assertEquals("test", info.getService());
144 assertEquals(OnapCommandType.CMD, info.getCommandType());
145 assertEquals("Kanagaraj Manickam kanagaraj.manickam@huawei.com", info.getAuthor());
146 assertEquals(OnapCommandState.EXPERIMENTAL, info.getState());
147 final Map<String, String> metadata = info.getMetadata();
148 assertEquals(EXPECTED_SIZE_OF_METADATA, metadata.size());
149 assertEquals("honolulu", metadata.get("release"));
153 public void sampleTest() {
156 Set<OnapCommandParameter> parameters = new HashSet<>();
157 OnapCommandParameter ver = new OnapCommandParameter();
158 ver.setName(OnapCommandConstants.DEFAULT_PARAMETER_VERSION);
161 OnapCommandParameter hlp = new OnapCommandParameter();
162 hlp.setName(OnapCommandConstants.DEFAULT_PARAMETER_HELP);
165 OnapCommandParameter fmt = new OnapCommandParameter();
166 fmt.setName(OnapCommandConstants.DEFAULT_PARAMETER_OUTPUT_FORMAT);
167 fmt.setValue("table");
169 OnapCommandParameter lng = new OnapCommandParameter();
170 lng.setName(OnapCommandConstants.DEFAULT_PARAMETER_OUTPUT_ATTR_LONG);
173 OnapCommandParameter title = new OnapCommandParameter();
174 title.setName(OnapCommandConstants.DEFAULT_PARAMETER_OUTPUT_NO_TITLE);
175 title.setValue(true);
176 parameters.add(title);
177 OnapCommandParameter debug = new OnapCommandParameter();
178 debug.setName(OnapCommandConstants.DEFAULT_PARAMETER_DEBUG);
179 debug.setValue(true);
180 parameters.add(debug);
182 OnapCommand sample = givenOnapCommand("sample-test");
183 sample.setParameters(parameters);
186 //validate whether output attributes default value got initialized as part of execute()
187 OnapCommandResultAttribute attr = sample.getResult().getRecordsMap().get("output-1");
188 String attrValue = attr.getValues().get(0);
189 UUID.fromString(attrValue.substring(4));
190 attr = sample.getResult().getRecordsMap().get("output-2");
191 attrValue = attr.getValues().get(0);
192 assertEquals("Hello test !", attrValue);
193 } catch (IllegalArgumentException e) {
194 fail("Failed to replace the output default value on output-1");
195 } catch (OnapCommandException e) {
200 @Test(expected = OnapCommandExecutionFailed.class)
201 public void sampleTestFailure() throws OnapCommandException {
202 OnapCommandSample sample = new OnapCommandSample();
203 sample.failCase = true;
205 Set<OnapCommandParameter> parameters = new HashSet();
206 OnapCommandParameter ver = new OnapCommandParameter();
207 ver.setName(OnapCommandConstants.DEFAULT_PARAMETER_VERSION);
210 OnapCommandParameter hlp = new OnapCommandParameter();
211 hlp.setName(OnapCommandConstants.DEFAULT_PARAMETER_HELP);
214 OnapCommandParameter ffmt = new OnapCommandParameter();
215 ffmt.setName(OnapCommandConstants.DEFAULT_PARAMETER_OUTPUT_FORMAT);
216 ffmt.setValue("table");
217 parameters.add(ffmt);
218 OnapCommandParameter lng = new OnapCommandParameter();
219 lng.setName(OnapCommandConstants.DEFAULT_PARAMETER_OUTPUT_ATTR_LONG);
222 OnapCommandParameter titl = new OnapCommandParameter();
223 titl.setName(OnapCommandConstants.DEFAULT_PARAMETER_OUTPUT_NO_TITLE);
225 parameters.add(titl);
226 OnapCommandParameter debug = new OnapCommandParameter();
227 debug.setName(OnapCommandConstants.DEFAULT_PARAMETER_DEBUG);
228 debug.setValue(true);
229 parameters.add(debug);
230 sample.setParameters(parameters);
234 @Test(expected = OnapCommandNotInitialized.class)
235 public void sampleTestIsInitialized() throws OnapCommandException {
236 OnapCommandSample sample = new OnapCommandSample(false);
240 private OnapCommand givenOnapCommand(String cmdName) throws OnapCommandException {
241 return OnapCommandRegistrar.getRegistrar().get(cmdName);
244 private OnapCommandParameter givenBooleanParameter(boolean value) throws OnapCommandInvalidParameterValue {
245 OnapCommandParameter booleanParameter = new OnapCommandParameter();
246 booleanParameter.setName("bool-param");
247 booleanParameter.setLongOption("bool");
248 booleanParameter.setShortOption("b");
249 booleanParameter.setValue(value);
250 return booleanParameter;
253 private List<OnapCommandParameter> findParameter(Set<OnapCommandParameter> params, String parameterName) {
254 return params.stream().filter(it -> it.getName().equals(parameterName)).collect(Collectors.toList());
257 private void verifyThatParameterHasValue(List<OnapCommandParameter> stringParams, String expectedValue) {
258 assertEquals(1, stringParams.size());
259 assertEquals(expectedValue, stringParams.get(0).getValue());