1 /*============LICENSE_START=======================================================
3 ================================================================================
4 Copyright (c) 2020-2021 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;
24 import org.junit.Test;
25 import org.junit.runners.Parameterized;
26 import org.onap.blueprintgenerator.model.common.Input;
27 import org.onap.blueprintgenerator.model.common.Node;
28 import org.onap.blueprintgenerator.model.common.OnapBlueprint;
29 import org.onap.blueprintgenerator.model.common.ExternalCertificateParameters;
30 import org.onap.blueprintgenerator.model.common.ExternalTlsInfo;
31 import org.onap.blueprintgenerator.model.dmaap.TlsInfo;
33 import java.nio.file.Paths;
34 import java.util.Arrays;
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 public class TlsInfoTest extends BlueprintGeneratorTests {
48 @Parameterized.Parameter
51 @Parameterized.Parameters(name = "Blueprint type: {0}")
52 public static List<Character> data() {
53 return Arrays.asList('o', 'd');
57 * Test Case for Tls True and External TLS True
61 public void useTlsTrueAndUseExternalTlsTrueTest() {
63 createBlueprintFromFile(
69 useTlsTrueAndUseExternalTlsTrueTest)
73 assertBlueprintContainsExternalTlsInfoWithUseFlagDefault(bp, true);
74 assertBlueprintContainsTlsInfoWithUseFlagDefault(bp, true);
77 * Test Case for Tls False and External TLS False
81 public void useTlsFalseAndUseExternalTlsFalseTest() {
83 createBlueprintFromFile(
89 useTlsFalseAndUseExternalTlsFalseTest)
93 assertBlueprintContainsExternalTlsInfoWithUseFlagDefault(bp, false);
94 assertBlueprintContainsTlsInfoWithUseFlagDefault(bp, false);
98 * Test Case for Tls True and No External TLS Flag
102 public void useTlsTrueAndNoExternalTlsFlagTest() {
104 createBlueprintFromFile(
110 useTlsTrueAndNoExternalTlsFlagTest)
114 assertBlueprintContainsTlsInfoWithUseFlagDefault(bp, true);
115 assertBlueprintHasNoExternalTlsInfo(bp);
119 * Test Case for No Tls Info
123 public void noTlsInfo() {
125 createBlueprintFromFile(
126 Paths.get("src", "test", "resources", "componentspecs", noTlsInfo)
130 assertBlueprintHasNoTlsInfo(bp);
131 assertBlueprintHasNoExternalTlsInfo(bp);
134 private void assertBlueprintContainsExternalTlsInfoWithUseFlagDefault(
135 OnapBlueprint bp, boolean useFlagDefault) {
136 // should create proper inputs
137 assertContainsInputWithDefault(bp, "external_cert_use_external_tls", useFlagDefault);
138 assertContainsInputWithDefault(bp, "external_cert_ca_name", "\"RA\"");
139 assertContainsInputWithDefault(bp, "external_cert_cert_type", "\"P12\"");
140 assertContainsInputWithDefault(bp, "external_cert_common_name", "\"sample.onap.org\"");
141 assertContainsInputWithDefault(
142 bp, "external_cert_sans", "\"sample.onap.org,component.sample.onap.org\"");
144 Node node = bp.getNode_templates().get("test.component.spec");
146 // should create proper externalTlsInfo object in node properties
147 ExternalTlsInfo externalTlsInfo = node.getProperties().getExternal_cert();
148 assertNotNull(externalTlsInfo);
150 assertEquals("external_cert_ca_name", externalTlsInfo.getCaName().getBpInputName());
151 assertEquals("external_cert_cert_type", externalTlsInfo.getCertType().getBpInputName());
153 "external_cert_use_external_tls", externalTlsInfo.getUseExternalTls().getBpInputName());
154 assertEquals("/opt/app/dcae-certificate/", externalTlsInfo.getExternalCertDirectory());
156 ExternalCertificateParameters extCertParams =
157 externalTlsInfo.getExternalCertificateParameters();
158 assertNotNull(extCertParams);
160 assertEquals("external_cert_common_name", extCertParams.getCommonName().getBpInputName());
161 assertEquals("external_cert_sans", extCertParams.getSans().getBpInputName());
164 private void assertBlueprintContainsTlsInfoWithUseFlagDefault(
165 OnapBlueprint bp, boolean useFlagDefault) {
166 // shold create proper inputs
167 assertContainsInputWithDefault(bp, "use_tls", useFlagDefault);
169 Node node = bp.getNode_templates().get("test.component.spec");
171 // should create proper tlsInfo object in node properties
172 TlsInfo tlsInfo = node.getProperties().getTls_info();
173 assertEquals("use_tls", tlsInfo.getUseTls().getBpInputName());
174 assertEquals("/opt/app/dcae-certificate/", tlsInfo.getCertDirectory());
177 private void assertBlueprintHasNoExternalTlsInfo(OnapBlueprint bp) {
178 // should not create inputs for external tls
179 assertFalse(bp.getInputs().containsKey("external_cert_use_external_tls"));
180 assertFalse(bp.getInputs().containsKey("external_cert_common_name"));
181 assertFalse(bp.getInputs().containsKey("external_cert_ca_name"));
182 assertFalse(bp.getInputs().containsKey("external_cert_sans"));
184 Node node = bp.getNode_templates().get("test.component.spec");
186 // should not create externalTlsInfo object in node properties
187 ExternalTlsInfo externalTlsInfo = node.getProperties().getExternal_cert();
188 assertNull(externalTlsInfo);
191 private void assertBlueprintHasNoTlsInfo(OnapBlueprint bp) {
192 // should not create inputs for tls
193 assertFalse(bp.getInputs().containsKey("use_tls"));
195 Node node = bp.getNode_templates().get("test.component.spec");
197 // should not create tlsInfo object in node properties
198 assertNull(node.getProperties().getTls_info());
201 private void assertContainsInputWithDefault(
202 OnapBlueprint bp, String inputName, Object defaultValue) {
203 Map<String, Object> input = bp.getInputs().get(inputName);
204 assertNotNull(input);
205 assertEquals(defaultValue, input.get("default"));
208 private OnapBlueprint createBlueprintFromFile(String path) {
209 onapComponentSpec = onapComponentSpecService.createComponentSpecFromFile(path);
210 Input input = onapTestUtils.getInput(path, "", "", "", "o", "");
211 OnapBlueprint onapBlueprint = onapBlueprintCreatorService.createBlueprint(onapComponentSpec, input);
212 return onapBlueprint;