1 /*============LICENSE_START=======================================================
3 ================================================================================
4 Copyright (c) 2020 Nokia. All rights reserved.
5 Copyright (c) 2020 AT&T. 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.
18 ============LICENSE_END=========================================================
21 package org.onap.blueprintgenerator.test;
23 import org.junit.Test;
24 import org.junit.runners.Parameterized;
25 import org.onap.blueprintgenerator.model.common.Input;
26 import org.onap.blueprintgenerator.model.common.Node;
27 import org.onap.blueprintgenerator.model.common.OnapBlueprint;
28 import org.onap.blueprintgenerator.model.common.ExternalCertificateParameters;
29 import org.onap.blueprintgenerator.model.common.ExternalTlsInfo;
30 import org.onap.blueprintgenerator.model.dmaap.TlsInfo;
32 import java.nio.file.Paths;
33 import java.util.Arrays;
34 import java.util.LinkedHashMap;
35 import java.util.List;
37 import static org.junit.Assert.assertEquals;
38 import static org.junit.Assert.assertFalse;
39 import static org.junit.Assert.assertNotNull;
40 import static org.junit.Assert.assertNull;
43 * Test Case for Tls Info
46 // @RunWith(Parameterized.class)
47 public class TlsInfoTest extends BlueprintGeneratorTests {
49 @Parameterized.Parameter
52 @Parameterized.Parameters(name = "Blueprint type: {0}")
53 public static List<Character> data() {
54 return Arrays.asList('o', 'd');
58 * Test Case for Tls True and External TLS True
62 public void useTlsTrueAndUseExternalTlsTrueTest() {
64 createBlueprintFromFile(
70 useTlsTrueAndUseExternalTlsTrueTest)
74 assertBlueprintContainsExternalTlsInfoWithUseFlagDefault(bp, true);
75 assertBlueprintContainsTlsInfoWithUseFlagDefault(bp, true);
78 * Test Case for Tls False and External TLS False
82 public void useTlsFalseAndUseExternalTlsFalseTest() {
84 createBlueprintFromFile(
90 useTlsFalseAndUseExternalTlsFalseTest)
94 assertBlueprintContainsExternalTlsInfoWithUseFlagDefault(bp, false);
95 assertBlueprintContainsTlsInfoWithUseFlagDefault(bp, false);
99 * Test Case for Tls True and No External TLS Flag
103 public void useTlsTrueAndNoExternalTlsFlagTest() {
105 createBlueprintFromFile(
111 useTlsTrueAndNoExternalTlsFlagTest)
115 assertBlueprintContainsTlsInfoWithUseFlagDefault(bp, true);
116 assertBlueprintHasNoExternalTlsInfo(bp);
120 * Test Case for No Tls Info
124 public void noTlsInfo() {
126 createBlueprintFromFile(
127 Paths.get("src", "test", "resources", "componentspecs", noTlsInfo)
131 assertBlueprintHasNoTlsInfo(bp);
132 assertBlueprintHasNoExternalTlsInfo(bp);
135 private void assertBlueprintContainsExternalTlsInfoWithUseFlagDefault(
136 OnapBlueprint bp, boolean useFlagDefault) {
137 // should create proper inputs
138 assertContainsInputWithDefault(bp, "external_cert_use_external_tls", useFlagDefault);
139 assertContainsInputWithDefault(bp, "external_cert_ca_name", "\"RA\"");
140 assertContainsInputWithDefault(bp, "external_cert_cert_type", "\"P12\"");
141 assertContainsInputWithDefault(bp, "external_cert_common_name", "\"sample.onap.org\"");
142 assertContainsInputWithDefault(
143 bp, "external_cert_sans", "\"sample.onap.org,component.sample.onap.org\"");
145 Node node = bp.getNode_templates().get("test.component.spec");
147 // should create proper externalTlsInfo object in node properties
148 ExternalTlsInfo externalTlsInfo = node.getProperties().getExternal_cert();
149 assertNotNull(externalTlsInfo);
151 assertEquals("external_cert_ca_name", externalTlsInfo.getCaName().getBpInputName());
152 assertEquals("external_cert_cert_type", externalTlsInfo.getCertType().getBpInputName());
154 "external_cert_use_external_tls", externalTlsInfo.getUseExternalTls().getBpInputName());
155 assertEquals("/opt/app/dcae-certificate/", externalTlsInfo.getExternalCertDirectory());
157 ExternalCertificateParameters extCertParams =
158 externalTlsInfo.getExternalCertificateParameters();
159 assertNotNull(extCertParams);
161 assertEquals("external_cert_common_name", extCertParams.getCommonName().getBpInputName());
162 assertEquals("external_cert_sans", extCertParams.getSans().getBpInputName());
165 private void assertBlueprintContainsTlsInfoWithUseFlagDefault(
166 OnapBlueprint bp, boolean useFlagDefault) {
167 // shold create proper inputs
168 assertContainsInputWithDefault(bp, "use_tls", useFlagDefault);
170 Node node = bp.getNode_templates().get("test.component.spec");
172 // should create proper tlsInfo object in node properties
173 TlsInfo tlsInfo = node.getProperties().getTls_info();
174 assertEquals("use_tls", tlsInfo.getUseTls().getBpInputName());
175 assertEquals("/opt/app/dcae-certificate/", tlsInfo.getCertDirectory());
178 private void assertBlueprintHasNoExternalTlsInfo(OnapBlueprint bp) {
179 // should not create inputs for external tls
180 assertFalse(bp.getInputs().containsKey("external_cert_use_external_tls"));
181 assertFalse(bp.getInputs().containsKey("external_cert_common_name"));
182 assertFalse(bp.getInputs().containsKey("external_cert_ca_name"));
183 assertFalse(bp.getInputs().containsKey("external_cert_sans"));
185 Node node = bp.getNode_templates().get("test.component.spec");
187 // should not create externalTlsInfo object in node properties
188 ExternalTlsInfo externalTlsInfo = node.getProperties().getExternal_cert();
189 assertNull(externalTlsInfo);
192 private void assertBlueprintHasNoTlsInfo(OnapBlueprint bp) {
193 // should not create inputs for tls
194 assertFalse(bp.getInputs().containsKey("use_tls"));
196 Node node = bp.getNode_templates().get("test.component.spec");
198 // should not create tlsInfo object in node properties
199 assertNull(node.getProperties().getTls_info());
202 private void assertContainsInputWithDefault(
203 OnapBlueprint bp, String inputName, Object defaultValue) {
204 LinkedHashMap<String, Object> input = bp.getInputs().get(inputName);
205 assertNotNull(input);
206 assertEquals(defaultValue, input.get("default"));
209 private OnapBlueprint createBlueprintFromFile(String path) {
210 onapComponentSpec = onapComponentSpecService.createComponentSpecFromFile(path);
211 Input input = onapTestUtils.getInput(path, "", "", "", "o", "");
212 OnapBlueprint onapBlueprint = onapBlueprintService
213 .createBlueprint(onapComponentSpec, input);
214 return onapBlueprint;