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;
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;
34 import java.nio.file.Paths;
35 import java.util.Arrays;
36 import java.util.LinkedHashMap;
37 import java.util.List;
39 import static org.junit.Assert.assertEquals;
40 import static org.junit.Assert.assertFalse;
41 import static org.junit.Assert.assertNotNull;
42 import static org.junit.Assert.assertNull;
45 //@RunWith(Parameterized.class)
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');
58 public void useTlsTrueAndUseExternalTlsTrueTest() {
59 //Input input = input.setComponentSpecPath(componentSpecPath + "testComponentSpec_withTlsTrueAndExternalTlsTrue.json");
60 OnapBlueprint bp = createBlueprintFromFile(
61 Paths.get("src", "test", "resources", "componentspecs", useTlsTrueAndUseExternalTlsTrueTest).toFile()
64 assertBlueprintContainsExternalTlsInfoWithUseFlagDefault(bp, true);
65 assertBlueprintContainsTlsInfoWithUseFlagDefault(bp, true);
69 public void useTlsFalseAndUseExternalTlsFalseTest() {
70 OnapBlueprint bp = createBlueprintFromFile(
71 Paths.get("src", "test", "resources", "componentspecs", useTlsFalseAndUseExternalTlsFalseTest).toFile()
74 assertBlueprintContainsExternalTlsInfoWithUseFlagDefault(bp, false);
75 assertBlueprintContainsTlsInfoWithUseFlagDefault(bp, false);
79 public void useTlsTrueAndNoExternalTlsFlagTest() {
80 OnapBlueprint bp = createBlueprintFromFile(
81 Paths.get("src", "test", "resources", "componentspecs", useTlsTrueAndNoExternalTlsFlagTest).toFile()
84 assertBlueprintContainsTlsInfoWithUseFlagDefault(bp, true);
85 assertBlueprintHasNoExternalTlsInfo(bp);
89 public void noTlsInfo() {
90 OnapBlueprint bp = createBlueprintFromFile(
91 Paths.get("src", "test", "resources", "componentspecs", noTlsInfo).toFile().getAbsolutePath());
93 assertBlueprintHasNoTlsInfo(bp);
94 assertBlueprintHasNoExternalTlsInfo(bp);
97 private void assertBlueprintContainsExternalTlsInfoWithUseFlagDefault(OnapBlueprint bp, boolean useFlagDefault) {
98 //should create proper inputs
99 assertContainsInputWithDefault(bp, "external_cert_use_external_tls", useFlagDefault);
100 assertContainsInputWithDefault(bp, "external_cert_ca_name", "\"RA\"");
101 assertContainsInputWithDefault(bp, "external_cert_cert_type", "\"P12\"");
102 assertContainsInputWithDefault(bp, "external_cert_common_name", "\"sample.onap.org\"");
103 assertContainsInputWithDefault(bp, "external_cert_sans",
104 "\"sample.onap.org,component.sample.onap.org\"");
106 Node node = bp.getNode_templates().get("test.component.spec");
108 //should create proper externalTlsInfo object in node properties
109 ExternalTlsInfo externalTlsInfo = node.getProperties().getExternal_cert();
110 assertNotNull(externalTlsInfo);
112 assertEquals("external_cert_ca_name", externalTlsInfo.getCaName().getBpInputName());
113 assertEquals("external_cert_cert_type", externalTlsInfo.getCertType().getBpInputName());
114 assertEquals("external_cert_use_external_tls", externalTlsInfo.getUseExternalTls().getBpInputName());
115 assertEquals("/opt/app/dcae-certificate/", externalTlsInfo.getExternalCertDirectory());
117 ExternalCertificateParameters extCertParams = externalTlsInfo.getExternalCertificateParameters();
118 assertNotNull(extCertParams);
120 assertEquals("external_cert_common_name", extCertParams.getCommonName().getBpInputName());
121 assertEquals("external_cert_sans", extCertParams.getSans().getBpInputName());
124 private void assertBlueprintContainsTlsInfoWithUseFlagDefault(OnapBlueprint bp, boolean useFlagDefault) {
125 //shold create proper inputs
126 assertContainsInputWithDefault(bp, "use_tls", useFlagDefault);
128 Node node = bp.getNode_templates().get("test.component.spec");
130 //should create proper tlsInfo object in node properties
131 TlsInfo tlsInfo = node.getProperties().getTls_info();
132 assertEquals("use_tls", tlsInfo.getUseTls().getBpInputName());
133 assertEquals("/opt/app/dcae-certificate/", tlsInfo.getCertDirectory());
137 private void assertBlueprintHasNoExternalTlsInfo(OnapBlueprint bp) {
138 //should not create inputs for external tls
139 assertFalse(bp.getInputs().containsKey("external_cert_use_external_tls"));
140 assertFalse(bp.getInputs().containsKey("external_cert_common_name"));
141 assertFalse(bp.getInputs().containsKey("external_cert_ca_name"));
142 assertFalse(bp.getInputs().containsKey("external_cert_sans"));
144 Node node = bp.getNode_templates().get("test.component.spec");
146 //should not create externalTlsInfo object in node properties
147 ExternalTlsInfo externalTlsInfo = node.getProperties().getExternal_cert();
148 assertNull(externalTlsInfo);
152 private void assertBlueprintHasNoTlsInfo(OnapBlueprint bp) {
153 //should not create inputs for tls
154 assertFalse(bp.getInputs().containsKey("use_tls"));
156 Node node = bp.getNode_templates().get("test.component.spec");
158 //should not create tlsInfo object in node properties
159 assertNull(node.getProperties().getTls_info());
162 private void assertContainsInputWithDefault(OnapBlueprint bp, String inputName, Object defaultValue) {
163 LinkedHashMap<String, Object> input = bp.getInputs().get(inputName);
164 assertNotNull(input);
165 assertEquals(defaultValue, input.get("default"));
168 private OnapBlueprint createBlueprintFromFile(String path) {
169 onapComponentSpec = onapComponentSpecService.createComponentSpecFromFile(path);
170 Input input = onapTestUtils.getInput(path, "", "", "", "o", "");
171 OnapBlueprint onapBlueprint = onapBlueprintService.createBlueprint(onapComponentSpec, input);
172 return onapBlueprint;