2 * ============LICENSE_START=======================================================
3 * Copyright (C) 2018 Ericsson. All rights reserved.
4 * Modifications Copyright (C) 2020-2021 Nordix Foundation.
5 * Modifications Copyright (C) 2020-2021 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
19 * SPDX-License-Identifier: Apache-2.0
20 * ============LICENSE_END=========================================================
23 package org.onap.policy.distribution.main.parameters;
25 import static org.assertj.core.api.Assertions.assertThatThrownBy;
26 import static org.junit.Assert.assertEquals;
27 import static org.junit.Assert.assertTrue;
29 import java.io.IOException;
30 import java.nio.file.Files;
31 import java.nio.file.Paths;
32 import org.junit.Test;
33 import org.onap.policy.common.utils.cmd.CommandLineException;
34 import org.onap.policy.distribution.main.PolicyDistributionException;
35 import org.onap.policy.distribution.main.startstop.DistributionCommandLineArguments;
36 import org.onap.policy.distribution.main.testclasses.DummyPolicyDecoderParameterGroup;
37 import org.onap.policy.distribution.main.testclasses.DummyPolicyForwarderParameterGroup;
40 * Class to perform unit test of DistributionParameterHandler.
42 * @author Ram Krishna Verma (ram.krishna.verma@ericsson.com)
44 public class TestDistributionParameterHandler {
46 public void testParameterHandlerNoParameterFile() throws PolicyDistributionException, CommandLineException {
47 verifyFailure("NoParameterFile.json", PolicyDistributionException.class, "FileNotFoundException");
51 public void testParameterHandlerEmptyParameters() throws PolicyDistributionException, CommandLineException {
52 verifyFailure("EmptyParameters.json", PolicyDistributionException.class,
53 "no parameters found in \"parameters/EmptyParameters.json\"");
57 public void testParameterHandlerBadParameters() throws PolicyDistributionException, CommandLineException {
58 verifyFailure("BadParameters.json", PolicyDistributionException.class,
59 "error reading parameters from \"parameters/BadParameters.json\"\n"
60 + "(JsonSyntaxException):java.lang.IllegalStateException: "
61 + "Expected a string but was BEGIN_ARRAY at line 2 column 15 path $.name");
65 public void testParameterHandlerInvalidParameters() throws PolicyDistributionException, CommandLineException {
66 verifyFailure("InvalidParameters.json", PolicyDistributionException.class,
67 "error reading parameters from \"parameters/InvalidParameters.json\"\n"
68 + "(JsonSyntaxException):java.lang.IllegalStateException: "
69 + "Expected a string but was BEGIN_ARRAY at line 2 column 15 path $.name");
73 public void testParameterHandlerNoParameters() throws PolicyDistributionException, CommandLineException {
74 verifyFailure("NoParameters.json", PolicyDistributionException.class,
75 "\"receptionHandlerParameters\" value \"null\" INVALID, is null");
79 public void testParameterHandlerMinumumParameters() throws PolicyDistributionException, CommandLineException {
80 final String[] minArgumentString = {"-c", "parameters/MinimumParameters.json"};
82 final DistributionCommandLineArguments minArguments = new DistributionCommandLineArguments();
83 minArguments.parse(minArgumentString);
85 final DistributionParameterGroup parGroup = new DistributionParameterHandler().getParameters(minArguments);
86 assertEquals(CommonTestData.DISTRIBUTION_GROUP_NAME, parGroup.getName());
90 public void testDistributionParameterGroup() throws PolicyDistributionException, CommandLineException {
91 final String[] distributionConfigParameters = {"-c", "parameters/DistributionConfigParameters.json"};
93 final DistributionCommandLineArguments arguments = new DistributionCommandLineArguments();
94 arguments.parse(distributionConfigParameters);
96 final DistributionParameterGroup parGroup = new DistributionParameterHandler().getParameters(arguments);
97 assertTrue(arguments.checkSetConfigurationFilePath());
98 assertEquals(CommonTestData.DISTRIBUTION_GROUP_NAME, parGroup.getName());
99 assertEquals(CommonTestData.RECEPTION_HANDLER_TYPE, parGroup.getReceptionHandlerParameters()
100 .get(CommonTestData.DUMMY_RECEPTION_HANDLER_KEY).getReceptionHandlerType());
101 assertEquals(CommonTestData.DECODER_TYPE,
102 parGroup.getReceptionHandlerParameters().get(CommonTestData.DUMMY_RECEPTION_HANDLER_KEY)
103 .getPluginHandlerParameters().getPolicyDecoders().get(CommonTestData.DUMMY_DECODER_KEY)
105 assertEquals(CommonTestData.FORWARDER_TYPE,
106 parGroup.getReceptionHandlerParameters().get(CommonTestData.DUMMY_RECEPTION_HANDLER_KEY)
107 .getPluginHandlerParameters().getPolicyForwarders()
108 .get(CommonTestData.DUMMY_ENGINE_FORWARDER_KEY).getForwarderType());
109 assertEquals(CommonTestData.FORWARDER_HOST,
110 ((DummyPolicyForwarderParameterGroup) parGroup.getPolicyForwarderConfigurationParameters()
111 .get(CommonTestData.FORWARDER_CONFIGURATION_PARAMETERS)).getHostname());
112 assertEquals(CommonTestData.POLICY_TYPE,
113 ((DummyPolicyDecoderParameterGroup) parGroup.getPolicyDecoderConfigurationParameters()
114 .get(CommonTestData.DECODER_CONFIGURATION_PARAMETERS)).getPolicyType());
115 assertEquals(CommonTestData.POLICY_NAME,
116 ((DummyPolicyDecoderParameterGroup) parGroup.getPolicyDecoderConfigurationParameters()
117 .get(CommonTestData.DECODER_CONFIGURATION_PARAMETERS)).getPolicyName());
121 public void testDistributionParameterGroup_InvalidForwarderConfigurationClassName()
122 throws PolicyDistributionException, CommandLineException {
123 verifyFailure("DistributionConfigParameters_InvalidForwarderConfigurationClassName.json",
124 PolicyDistributionException.class, "parameter \"parameterClassName\" value \"\" invalid in JSON file");
128 public void testDistributionParameterGroup_UnknownForwarderConfigurationClassName()
129 throws PolicyDistributionException, CommandLineException {
130 verifyFailure("DistributionConfigParameters_UnknownForwarderConfigurationClassName.json",
131 PolicyDistributionException.class,
132 "parameter \"parameterClassName\" value \"org.onap.policy.Unknown\", could not find class");
136 public void testDistributionParameterGroup_InvalidName() throws PolicyDistributionException, CommandLineException {
137 verifyFailure("DistributionConfigParameters_InvalidName.json", PolicyDistributionException.class,
138 "\"name\" value \" \" INVALID, is blank");
142 public void testDistributionParameterGroup_NoReceptionHandler()
143 throws PolicyDistributionException, CommandLineException {
144 verifyFailure("DistributionConfigParameters_NoReceptionHandler.json", PolicyDistributionException.class,
145 "\"receptionHandlerParameters\" value \"null\" INVALID, is null");
149 public void testDistributionParameterGroup_EmptyReceptionHandler()
150 throws PolicyDistributionException, CommandLineException {
151 verifyFailure("DistributionConfigParameters_EmptyReceptionHandler.json", PolicyDistributionException.class,
152 "\"receptionHandlerParameters\" value \"{}\" INVALID, minimum number of elements: 1");
156 public void testDistributionParameterGroup_NoPolicyDecoder()
157 throws PolicyDistributionException, CommandLineException {
158 verifyFailure("DistributionConfigParameters_NoPolicyDecoder.json", PolicyDistributionException.class,
159 "\"policyDecoders\" value \"null\" INVALID, is null");
163 public void testDistributionParameterGroup_NoPolicyForwarder()
164 throws PolicyDistributionException, CommandLineException {
165 verifyFailure("DistributionConfigParameters_NoPolicyForwarder.json", PolicyDistributionException.class,
166 "\"policyForwarderConfigurationParameters\" value \"null\" INVALID, is null");
170 public void testDistributionParameterGroup_EmptyPolicyDecoder()
171 throws PolicyDistributionException, CommandLineException {
172 verifyFailure("DistributionConfigParameters_EmptyPolicyDecoder.json", PolicyDistributionException.class,
173 "\"policyDecoders\" value \"{}\" INVALID, minimum number of elements: 1");
177 public void testDistributionParameterGroup_EmptyPolicyForwarder()
178 throws PolicyDistributionException, CommandLineException {
179 verifyFailure("DistributionConfigParameters_EmptyPolicyForwarder.json", PolicyDistributionException.class,
180 "\"policyForwarders\" value \"{}\" INVALID, minimum number of elements: 1");
184 public void testDistributionParameterGroup_InvalidReceptionHandlerParameters()
185 throws PolicyDistributionException, IOException, CommandLineException {
187 String resultString = Files
189 Paths.get("src/test/resources/expectedValidationResults/InvalidReceptionHandlerParameters.txt"))
190 .trim().replaceAll("\\r\\n", "\\\n");
192 verifyFailure("DistributionConfigParameters_InvalidReceptionHandlerParameters.json",
193 PolicyDistributionException.class, resultString);
197 public void testDistributionParameterGroup_InvalidDecoderAndForwarderParameters()
198 throws PolicyDistributionException, IOException, CommandLineException {
200 String resultString = new String(Files
202 .get("src/test/resources/expectedValidationResults/InvalidDecoderAndForwarderParameters.txt"))
203 .trim().replaceAll("\\r\\n", "\\\n"));
205 verifyFailure("DistributionConfigParameters_InvalidDecoderAndForwarderParameters.json",
206 PolicyDistributionException.class, resultString);
210 public void testDistributionParameterGroup_InvalidRestServerParameters()
211 throws PolicyDistributionException, IOException, CommandLineException {
213 String resultString = new String(Files
214 .readString(Paths.get("src/test/resources/expectedValidationResults/InvalidRestServerParameters.txt"))
215 .trim().replaceAll("\\r\\n", "\\\n"));
217 verifyFailure("DistributionConfigParameters_InvalidRestServerParameters.json",
218 PolicyDistributionException.class, resultString);
222 public void testDistributionVersion() throws PolicyDistributionException, CommandLineException {
223 final String[] distributionConfigParameters = {"-v"};
224 final DistributionCommandLineArguments arguments = new DistributionCommandLineArguments();
225 final String version = arguments.parse(distributionConfigParameters);
226 assertTrue(version.startsWith("ONAP Policy Framework Distribution Service"));
230 public void testDistributionHelp() throws PolicyDistributionException, CommandLineException {
231 final String[] distributionConfigParameters = {"-h"};
232 final DistributionCommandLineArguments arguments = new DistributionCommandLineArguments();
233 final String help = arguments.parse(distributionConfigParameters);
234 assertTrue(help.startsWith("usage:"));
238 public void testDistributionInvalidOption() throws PolicyDistributionException {
239 final String[] distributionConfigParameters = {"-d"};
240 final DistributionCommandLineArguments arguments = new DistributionCommandLineArguments();
241 assertThatThrownBy(() -> arguments.parse(distributionConfigParameters))
242 .hasMessageContaining("invalid command line arguments specified");
246 public void testDistributionParameterGroup_InvalidReceptionHandlerClass()
247 throws PolicyDistributionException, CommandLineException {
248 verifyFailure("DistributionConfigParameters_InvalidReceptionHandlerClass.json",
249 PolicyDistributionException.class, "could not find class");
253 public void testDistributionParameterGroup_EmptyReceptionHandlerClass()
254 throws PolicyDistributionException, CommandLineException {
255 verifyFailure("DistributionConfigParameters_EmptyReceptionHandlerClass.json", PolicyDistributionException.class,
256 "invalid in JSON file");
260 public void testDistributionParameterGroup_InvalidDecoderConfigurationClassName()
261 throws PolicyDistributionException, CommandLineException {
262 verifyFailure("DistributionConfigParameters_InvalidDecoderConfigurationClassName.json",
263 PolicyDistributionException.class, "parameter \"parameterClassName\" value \"\" invalid in JSON file");
267 public void testDistributionParameterGroup_UnknownDecoderConfigurationClassName()
268 throws PolicyDistributionException, CommandLineException {
269 verifyFailure("DistributionConfigParameters_UnknownDecoderConfigurationClassName.json",
270 PolicyDistributionException.class,
271 "parameter \"parameterClassName\" value \"org.onap.policy.Unknown\", could not find class");
274 private <T> void verifyFailure(String fileName, Class<T> clazz, String expectedMessage)
275 throws PolicyDistributionException, CommandLineException {
276 final String[] distributionConfigParameters = {"-c", "parameters/" + fileName};
278 final DistributionCommandLineArguments arguments = new DistributionCommandLineArguments();
279 arguments.parse(distributionConfigParameters);
281 DistributionParameterHandler paramHandler = new DistributionParameterHandler();
283 assertThatThrownBy(() -> paramHandler.getParameters(arguments)).isInstanceOf(clazz)
284 .hasMessageContaining(expectedMessage);