2 * Copyright 2017 Huawei Technologies Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 package org.onap.cli.main.utils;
20 import java.util.Arrays;
21 import java.util.HashSet;
22 import java.util.List;
25 import org.junit.Assert;
26 import org.junit.Test;
27 import org.onap.cli.fw.error.OnapCommandException;
28 import org.onap.cli.fw.input.OnapCommandParameter;
29 import org.onap.cli.fw.input.OnapCommandParameterType;
30 import org.onap.cli.main.error.OnapCliArgumentValueMissing;
31 import org.onap.cli.main.error.OnapCliInvalidArgument;
33 public class OnapCliUtilsTest {
36 public void testpopulateParamsLong() throws OnapCommandException {
37 OnapCommandParameter param1 = new OnapCommandParameter();
38 param1.setLongOption("host-username");
39 param1.setName("host-username");
40 param1.setParameterType(OnapCommandParameterType.STRING);
41 OnapCommandParameter param2 = new OnapCommandParameter();
42 param2.setLongOption("host-password");
43 param2.setName("host-password");
44 param2.setParameterType(OnapCommandParameterType.STRING);
45 OnapCommandParameter param3 = new OnapCommandParameter();
46 param3.setLongOption("host-url");
47 param3.setName("host-url");
48 param3.setParameterType(OnapCommandParameterType.STRING);
49 OnapCommandParameter param4 = new OnapCommandParameter();
50 param4.setLongOption("string-param");
51 param4.setName("string-param");
52 param4.setParameterType(OnapCommandParameterType.STRING);
53 OnapCommandParameter param5 = new OnapCommandParameter();
54 param5.setLongOption("long-opt");
55 param5.setName("long-opt");
56 param5.setParameterType(OnapCommandParameterType.STRING);
58 Set<OnapCommandParameter> paramslist = new HashSet<>();
59 paramslist.add(param1);
60 paramslist.add(param2);
61 paramslist.add(param3);
62 paramslist.add(param4);
63 paramslist.add(param5);
65 String[] args = new String[] {
66 "--host-username", "admin",
67 "--host-password", "123",
68 "--host-url", "a@b.com",
69 "--string-param", "blah",
71 OnapCliArgsParser.populateParams(paramslist, Arrays.asList(args));
72 List<String> expectedList = Arrays.asList(args);
74 Assert.assertEquals("host-username", expectedList.get(1), param1.getValue());
75 Assert.assertEquals("host-password", expectedList.get(3), param2.getValue());
76 Assert.assertEquals("host-url", expectedList.get(5), param3.getValue());
77 Assert.assertEquals("string-param", expectedList.get(7), param4.getValue());
78 Assert.assertEquals("long-opt", expectedList.get(9), param5.getValue());
83 public void testpositionalargs() throws OnapCommandException {
84 OnapCommandParameter paramargs = new OnapCommandParameter();
85 paramargs.setParameterType(OnapCommandParameterType.STRING);
86 paramargs.setName("test");
87 Set<OnapCommandParameter> paramslist = new HashSet<>();
88 paramslist.add(paramargs);
90 String[] args = new String[] { "positional-args"};
92 OnapCliArgsParser.populateParams(paramslist, Arrays.asList(args));
94 List<String> expectedList = Arrays.asList(args);
95 Assert.assertEquals(expectedList.get(0), paramslist.iterator().next().getValue());
99 public void testboolparamslong() throws OnapCommandException {
100 OnapCommandParameter boolparam = new OnapCommandParameter();
101 boolparam.setLongOption("bool");
102 boolparam.setName("bool-param");
103 Set<OnapCommandParameter> paramslist = new HashSet<>();
104 paramslist.add(boolparam);
105 String[] args = new String[] { "--bool" };
107 boolparam.setParameterType(OnapCommandParameterType.BOOL);
108 OnapCliArgsParser.populateParams(paramslist, Arrays.asList(args));
109 List<String> expectedList = Arrays.asList(args);
110 Assert.assertNotNull(expectedList.get(0), paramslist.iterator().next().getValue());
115 public void testboolparamsshort() throws OnapCommandException {
116 OnapCommandParameter boolparam = new OnapCommandParameter();
117 boolparam.setShortOption("b");
118 boolparam.setName("bool-param");
119 Set<OnapCommandParameter> paramslist = new HashSet<>();
120 paramslist.add(boolparam);
121 String[] args = new String[] { "-b", };
123 boolparam.setParameterType(OnapCommandParameterType.BOOL);
124 OnapCliArgsParser.populateParams(paramslist, Arrays.asList(args));
125 List<String> expectedList = Arrays.asList(args);
126 Assert.assertNotNull(expectedList.get(0), paramslist.iterator().next().getValue());
130 public void testTextparamslong() throws OnapCommandException {
131 OnapCommandParameter boolparam = new OnapCommandParameter();
132 boolparam.setLongOption("text-param");
133 boolparam.setName("text-param");
134 Set<OnapCommandParameter> paramslist = new HashSet<>();
135 paramslist.add(boolparam);
136 String[] args = new String[] { "--text-param" , "text"};
138 boolparam.setParameterType(OnapCommandParameterType.TEXT);
139 OnapCliArgsParser.populateParams(paramslist, Arrays.asList(args));
140 List<String> expectedList = Arrays.asList(args);
141 Assert.assertNotNull(expectedList.get(1), paramslist.iterator().next().getValue());
146 public void testTextparamsshort() throws OnapCommandException {
147 OnapCommandParameter boolparam = new OnapCommandParameter();
148 boolparam.setShortOption("e");
149 boolparam.setName("text-param");
150 Set<OnapCommandParameter> paramslist = new HashSet<>();
151 paramslist.add(boolparam);
152 String[] args = new String[] { "-e" , "text"};
154 boolparam.setParameterType(OnapCommandParameterType.TEXT);
155 OnapCliArgsParser.populateParams(paramslist, Arrays.asList(args));
156 List<String> expectedList = Arrays.asList(args);
157 Assert.assertNotNull(expectedList.get(1), paramslist.iterator().next().getValue());
161 public void testjsonparamsshort() throws OnapCommandException {
162 OnapCommandParameter jsonparam = new OnapCommandParameter();
163 jsonparam.setShortOption("j");
164 jsonparam.setName("json-param");
165 Set<OnapCommandParameter> paramslist = new HashSet<>();
166 paramslist.add(jsonparam);
167 File resourcesDirectory = new File("src/test/resources/sampletest.json");
168 String[] args = new String[] { "-j", "file:" + resourcesDirectory };
169 jsonparam.setParameterType(OnapCommandParameterType.JSON);
170 OnapCliArgsParser.populateParams(paramslist, Arrays.asList(args));
171 List<String> expectedList = Arrays.asList(args);
172 Assert.assertNotNull(expectedList.get(1), paramslist.iterator().next().getValue());
176 public void testjsonparamslong() throws OnapCommandException {
177 OnapCommandParameter jsonparam = new OnapCommandParameter();
178 jsonparam.setLongOption("json-param");
179 jsonparam.setName("json-param");
180 Set<OnapCommandParameter> paramslist = new HashSet<>();
181 paramslist.add(jsonparam);
182 File resourcesDirectory = new File("src/test/resources/sampletest.json");
183 String[] args = new String[] { "--json-param", "file:" + resourcesDirectory };
184 jsonparam.setParameterType(OnapCommandParameterType.JSON);
185 OnapCliArgsParser.populateParams(paramslist, Arrays.asList(args));
186 List<String> expectedList = Arrays.asList(args);
187 Assert.assertNotNull(expectedList.get(1), paramslist.iterator().next().getValue());
191 public void testpopulateParamsShort() throws OnapCommandException {
193 OnapCommandParameter param1 = new OnapCommandParameter();
194 param1.setShortOption("u");
195 param1.setName("host-username");
196 param1.setParameterType(OnapCommandParameterType.STRING);
197 OnapCommandParameter param2 = new OnapCommandParameter();
198 param2.setShortOption("p");
199 param2.setName("host-password");
200 param2.setParameterType(OnapCommandParameterType.STRING);
201 OnapCommandParameter param3 = new OnapCommandParameter();
202 param3.setShortOption("r");
203 param3.setName("host-url");
204 param3.setParameterType(OnapCommandParameterType.STRING);
205 OnapCommandParameter param4 = new OnapCommandParameter();
206 param4.setShortOption("c");
207 param4.setName("string-param");
208 param4.setParameterType(OnapCommandParameterType.STRING);
209 OnapCommandParameter param5 = new OnapCommandParameter();
210 param5.setShortOption("l");
211 param5.setName("long-opt");
212 param5.setParameterType(OnapCommandParameterType.STRING);
214 Set<OnapCommandParameter> paramslist = new HashSet<>();
215 paramslist.add(param1);
216 paramslist.add(param2);
217 paramslist.add(param3);
218 paramslist.add(param4);
219 paramslist.add(param5);
221 String[] args11 = new String[] {
227 OnapCliArgsParser.populateParams(paramslist, Arrays.asList(args11));
229 List<String> expectedList = Arrays.asList(args11);
231 Assert.assertEquals("u", expectedList.get(1), param1.getValue());
232 Assert.assertEquals("-p", expectedList.get(3), param2.getValue());
233 Assert.assertEquals("r", expectedList.get(5), param3.getValue());
234 Assert.assertEquals("c", expectedList.get(7), param4.getValue());
235 Assert.assertEquals("l", expectedList.get(9), param5.getValue());
239 public void testArrayparamslong() throws OnapCommandException {
240 OnapCommandParameter arrayval = new OnapCommandParameter();
241 arrayval.setLongOption("node-ip");
242 arrayval.setName("node-ip");
244 String[] args = new String[] { "--node-ip", "{}" };
245 Set<OnapCommandParameter> paramslist = new HashSet<>();
246 paramslist.add(arrayval);
248 arrayval.setParameterType(OnapCommandParameterType.ARRAY);
249 OnapCliArgsParser.populateParams(paramslist, Arrays.asList(args));
251 List<String> expectedList = Arrays.asList(args);
252 Assert.assertNotNull(expectedList.get(1), paramslist.iterator().next().getValue());
256 public void testMapparamsShort() throws OnapCommandException {
257 OnapCommandParameter param1 = new OnapCommandParameter();
258 param1.setLongOption("map");
259 param1.setName("MAP");
260 param1.setParameterType(OnapCommandParameterType.MAP);
261 Set<OnapCommandParameter> paramslist = new HashSet<>();
262 paramslist.add(param1);
264 param1.setParameterType(OnapCommandParameterType.MAP);
265 OnapCliArgsParser.populateParams(paramslist,
266 Arrays.asList("--map", "param1=value1", "--map", "param2=value2"));
268 Assert.assertEquals("{param1=value1, param2=value2}",
269 paramslist.iterator().next().getValue().toString());
272 @Test(expected = OnapCliInvalidArgument.class)
273 public void testMapparamsLongfail() throws OnapCommandException {
274 OnapCommandParameter param1 = new OnapCommandParameter();
275 param1.setLongOption("map");
276 param1.setName("MAP");
277 param1.setParameterType(OnapCommandParameterType.MAP);
278 Set<OnapCommandParameter> paramslist = new HashSet<>();
279 paramslist.add(param1);
281 param1.setParameterType(OnapCommandParameterType.MAP);
282 OnapCliArgsParser.populateParams(paramslist,
283 Arrays.asList("show", "--map", "param1=value1", "--map", "param2"));
286 @Test(expected = OnapCliInvalidArgument.class)
287 public void testMapparamsShortfail() throws OnapCommandException {
288 OnapCommandParameter param1 = new OnapCommandParameter();
289 param1.setShortOption("o");
290 param1.setName("node-port");
291 param1.setParameterType(OnapCommandParameterType.MAP);
292 Set<OnapCommandParameter> paramslist = new HashSet<>();
293 paramslist.add(param1);
294 param1.setParameterType(OnapCommandParameterType.MAP);
295 OnapCliArgsParser.populateParams(paramslist,
296 Arrays.asList("show", "-o", "param1=value1", "-o", "param2"));
299 @Test(expected = OnapCliInvalidArgument.class)
300 public void testpositionalargsfails() throws OnapCommandException {
301 OnapCommandParameter paramargs = new OnapCommandParameter();
302 paramargs.setName("http://localhost:8082/file.txt");
303 Set<OnapCommandParameter> paramslist = new HashSet<>();
304 paramslist.add(paramargs);
305 String[] args = new String[] {
307 "http://localhost:8082/file.txt",
308 "http://localhost:8082/file.txt" };
309 paramargs.setParameterType(OnapCommandParameterType.STRING);
310 OnapCliArgsParser.populateParams(paramslist, Arrays.asList(args));
311 List<String> expectedList = Arrays.asList(args);
314 @Test(expected = OnapCliInvalidArgument.class)
315 public void testboolparamsshortfails() throws OnapCommandException {
316 OnapCommandParameter boolparam = new OnapCommandParameter();
317 boolparam.setShortOption("b");
318 boolparam.setName("bool-param");
319 Set<OnapCommandParameter> paramslist = new HashSet<>();
320 paramslist.add(boolparam);
321 String[] args = new String[] { "-b", "-b", "-h" };
323 boolparam.setParameterType(OnapCommandParameterType.BOOL);
324 OnapCliArgsParser.populateParams(paramslist, Arrays.asList(args));
327 @Test(expected = OnapCliInvalidArgument.class)
328 public void testboolparamsLongfails() throws OnapCommandException {
329 OnapCommandParameter boolparam = new OnapCommandParameter();
330 boolparam.setShortOption("bool");
331 boolparam.setName("bool-param");
332 Set<OnapCommandParameter> paramslist = new HashSet<>();
333 paramslist.add(boolparam);
334 String[] args = new String[] { "--bool", "--bool", "--help" };
336 boolparam.setParameterType(OnapCommandParameterType.BOOL);
337 OnapCliArgsParser.populateParams(paramslist, Arrays.asList(args));
340 @Test(expected = OnapCliArgumentValueMissing.class)
341 public void testjsonparamslongfails() throws OnapCommandException {
342 OnapCommandParameter jsonparam = new OnapCommandParameter();
343 jsonparam.setLongOption("json-param");
344 jsonparam.setName("json-param");
345 Set<OnapCommandParameter> paramslist = new HashSet<>();
346 paramslist.add(jsonparam);
347 File resourcesDirectory = new File("src/test/resources/sampletest.json");
348 String[] args = new String[] {
350 "file:" + resourcesDirectory, "--json-param" };
351 jsonparam.setParameterType(OnapCommandParameterType.JSON);
352 OnapCliArgsParser.populateParams(paramslist, Arrays.asList(args));
356 @Test(expected = OnapCliArgumentValueMissing.class)
357 public void testjsonparamsshortfails() throws OnapCommandException {
358 OnapCommandParameter jsonparam = new OnapCommandParameter();
359 jsonparam.setShortOption("j");
360 jsonparam.setName("json-param");
361 Set<OnapCommandParameter> paramslist = new HashSet<>();
362 paramslist.add(jsonparam);
363 File resourcesDirectory = new File("src/test/resources/sampletest.json");
364 String[] args = new String[] { "-j", "file:" + resourcesDirectory, "-j" };
365 jsonparam.setParameterType(OnapCommandParameterType.JSON);
366 OnapCliArgsParser.populateParams(paramslist, Arrays.asList(args));
371 public void testArrayCommandArg() throws OnapCommandException {
372 OnapCommandParameter arrParam = new OnapCommandParameter();
373 arrParam.setShortOption("q");
374 arrParam.setParameterType(OnapCommandParameterType.ARRAY);
375 arrParam.setName("array-param");
376 Set<OnapCommandParameter> paramslist = new HashSet<>();
377 paramslist.add(arrParam);
378 String[] args = new String[] { "-q", "test1", "-q", "test2" };
380 OnapCliArgsParser.populateParams(paramslist, Arrays.asList(args));
381 Assert.assertTrue(((List<String>) arrParam.getValue())
382 .containsAll(Arrays.asList("test1", "test2")));
385 public void testReadYamlStringFromUrl() throws OnapCommandException {
386 OnapCommandParameter param1 = new OnapCommandParameter();
387 param1.setLongOption("yaml");
388 param1.setName("name");
389 param1.setParameterType(OnapCommandParameterType.YAML);
390 Set<OnapCommandParameter> paramslist = new HashSet<>();
391 paramslist.add(param1);
392 OnapCliArgsParser.populateParams(paramslist,
393 Arrays.asList("--yaml", "name", "--yaml", "test-schema"));
394 Assert.assertEquals("test-schema", paramslist.iterator().next().getValue());
397 public void testReadYamlStringFromUrlForFile() throws OnapCommandException {
398 OnapCommandParameter param1 = new OnapCommandParameter();
399 param1.setLongOption("yaml");
400 param1.setName("name");
401 param1.setParameterType(OnapCommandParameterType.YAML);
402 Set<OnapCommandParameter> paramslist = new HashSet<>();
403 paramslist.add(param1);
404 OnapCliArgsParser.populateParams(paramslist,
405 Arrays.asList("--yaml", "main/src/test/resources/open-cli-schema/sample-test-schema.yaml", "--yaml", "test-schema"));
406 Assert.assertEquals("test-schema", paramslist.iterator().next().getValue());