Create basic structure of pap component
[policy/pap.git] / main / src / test / java / org / onap / policy / pap / main / parameters / TestPapParameterHandler.java
1 /*-
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2019 Nordix Foundation.
4  * ================================================================================
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
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
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.
16  *
17  * SPDX-License-Identifier: Apache-2.0
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.policy.pap.main.parameters;
22
23 import static org.junit.Assert.assertEquals;
24 import static org.junit.Assert.assertTrue;
25 import static org.junit.Assert.fail;
26
27 import org.junit.Test;
28 import org.onap.policy.pap.main.PolicyPapException;
29 import org.onap.policy.pap.main.startstop.PapCommandLineArguments;
30
31 /**
32  * Class to perform unit test of {@link PapParameterHandler}.
33  *
34  * @author Ram Krishna Verma (ram.krishna.verma@est.tech)
35  */
36 public class TestPapParameterHandler {
37
38     @Test
39     public void testParameterHandlerNoParameterFile() throws PolicyPapException {
40         final String[] noArgumentString = { "-c", "parameters/NoParameterFile.json" };
41
42         final PapCommandLineArguments noArguments = new PapCommandLineArguments();
43         noArguments.parse(noArgumentString);
44
45         try {
46             new PapParameterHandler().getParameters(noArguments);
47             fail("test should throw an exception here");
48         } catch (final Exception e) {
49             assertTrue(e.getMessage().contains("FileNotFoundException"));
50         }
51     }
52
53     @Test
54     public void testParameterHandlerEmptyParameters() throws PolicyPapException {
55         final String[] emptyArgumentString = { "-c", "parameters/EmptyParameters.json" };
56
57         final PapCommandLineArguments emptyArguments = new PapCommandLineArguments();
58         emptyArguments.parse(emptyArgumentString);
59
60         try {
61             new PapParameterHandler().getParameters(emptyArguments);
62             fail("test should throw an exception here");
63         } catch (final Exception e) {
64             assertEquals("no parameters found in \"parameters/EmptyParameters.json\"", e.getMessage());
65         }
66     }
67
68     @Test
69     public void testParameterHandlerInvalidParameters() throws PolicyPapException {
70         final String[] invalidArgumentString = { "-c", "parameters/InvalidParameters.json" };
71
72         final PapCommandLineArguments invalidArguments = new PapCommandLineArguments();
73         invalidArguments.parse(invalidArgumentString);
74
75         try {
76             new PapParameterHandler().getParameters(invalidArguments);
77             fail("test should throw an exception here");
78         } catch (final Exception e) {
79             assertEquals("error reading parameters from \"parameters/InvalidParameters.json\"\n"
80                     + "(JsonSyntaxException):java.lang.IllegalStateException: "
81                     + "Expected a string but was BEGIN_ARRAY at line 2 column 15 path $.name", e.getMessage());
82         }
83     }
84
85     @Test
86     public void testParameterHandlerNoParameters() throws PolicyPapException {
87         final String[] noArgumentString = { "-c", "parameters/NoParameters.json" };
88
89         final PapCommandLineArguments noArguments = new PapCommandLineArguments();
90         noArguments.parse(noArgumentString);
91
92         try {
93             new PapParameterHandler().getParameters(noArguments);
94             fail("test should throw an exception here");
95         } catch (final Exception e) {
96             assertTrue(e.getMessage().contains(
97                     "field \"name\" type \"java.lang.String\" value \"null\" INVALID, must be a non-blank string"));
98         }
99     }
100
101     @Test
102     public void testParameterHandlerMinumumParameters() throws PolicyPapException {
103         final String[] minArgumentString = { "-c", "parameters/MinimumParameters.json" };
104
105         final PapCommandLineArguments minArguments = new PapCommandLineArguments();
106         minArguments.parse(minArgumentString);
107
108         final PapParameterGroup parGroup = new PapParameterHandler().getParameters(minArguments);
109         assertEquals(CommonTestData.PAP_GROUP_NAME, parGroup.getName());
110     }
111
112     @Test
113     public void testPapParameterGroup() throws PolicyPapException {
114         final String[] papConfigParameters = { "-c", "parameters/PapConfigParameters.json" };
115
116         final PapCommandLineArguments arguments = new PapCommandLineArguments();
117         arguments.parse(papConfigParameters);
118
119         final PapParameterGroup parGroup = new PapParameterHandler().getParameters(arguments);
120         assertTrue(arguments.checkSetConfigurationFilePath());
121         assertEquals(CommonTestData.PAP_GROUP_NAME, parGroup.getName());
122     }
123
124     @Test
125     public void testPapParameterGroup_InvalidName() throws PolicyPapException {
126         final String[] papConfigParameters = { "-c", "parameters/PapConfigParameters_InvalidName.json" };
127
128         final PapCommandLineArguments arguments = new PapCommandLineArguments();
129         arguments.parse(papConfigParameters);
130
131         try {
132             new PapParameterHandler().getParameters(arguments);
133             fail("test should throw an exception here");
134         } catch (final Exception e) {
135             assertTrue(e.getMessage().contains(
136                     "field \"name\" type \"java.lang.String\" value \" \" INVALID, must be a non-blank string"));
137         }
138     }
139
140     @Test
141     public void testPapVersion() throws PolicyPapException {
142         final String[] papConfigParameters = { "-v" };
143         final PapCommandLineArguments arguments = new PapCommandLineArguments();
144         final String version = arguments.parse(papConfigParameters);
145         assertTrue(version.startsWith("ONAP Policy Framework PAP Service"));
146     }
147
148     @Test
149     public void testPapHelp() throws PolicyPapException {
150         final String[] papConfigParameters = { "-h" };
151         final PapCommandLineArguments arguments = new PapCommandLineArguments();
152         final String help = arguments.parse(papConfigParameters);
153         assertTrue(help.startsWith("usage:"));
154     }
155
156     @Test
157     public void testPapInvalidOption() throws PolicyPapException {
158         final String[] papConfigParameters = { "-d" };
159         final PapCommandLineArguments arguments = new PapCommandLineArguments();
160         try {
161             arguments.parse(papConfigParameters);
162         } catch (final Exception exp) {
163             assertTrue(exp.getMessage().startsWith("invalid command line arguments specified"));
164         }
165     }
166 }