1 /**============LICENSE_START=======================================================
3 ================================================================================
4 Copyright (c) 2020 Nokia. All rights reserved.
5 ================================================================================
6 Licensed under the Apache License, Version 2.0 (the "License");
7 you may not use this file except in compliance with the License.
8 You may obtain a copy of the License at
10 http://www.apache.org/licenses/LICENSE-2.0
12 Unless required by applicable law or agreed to in writing, software
13 distributed under the License is distributed on an "AS IS" BASIS,
14 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 See the License for the specific language governing permissions and
16 limitations under the License.
17 ============LICENSE_END=========================================================
20 package org.onap.blueprintgenerator.core;
22 import org.junit.Test;
23 import org.junit.runner.RunWith;
24 import org.junit.runners.Parameterized;
25 import org.onap.blueprintgenerator.models.blueprint.Blueprint;
26 import org.onap.blueprintgenerator.models.blueprint.ExternalTlsInfo;
27 import org.onap.blueprintgenerator.models.blueprint.Node;
28 import org.onap.blueprintgenerator.models.blueprint.TlsInfo;
29 import org.onap.blueprintgenerator.models.componentspec.ComponentSpec;
31 import java.util.Arrays;
32 import java.util.LinkedHashMap;
33 import java.util.List;
35 import static org.junit.Assert.assertEquals;
36 import static org.junit.Assert.assertFalse;
37 import static org.junit.Assert.assertNotNull;
38 import static org.junit.Assert.assertNull;
40 @RunWith(Parameterized.class)
41 public class TlsInfoTest {
43 @Parameterized.Parameter
46 @Parameterized.Parameters(name = "Blueprint type: {0}")
47 public static List<Character> data() {
48 return Arrays.asList('o', 'd');
52 public void useTlsTrueAndUseExternalTlsTrueTest(){
53 Blueprint bp = createBlueprintFromFile("TestCases/TlsInfo/testComponentSpec_withTlsTrueAndExternalTlsTrue.json");
55 assertBlueprintContainsExternalTlsInfoWithUseFlagDefault(bp, true);
56 assertBlueprintContainsTlsInfoWithUseFlagDefault(bp, true);
60 public void useTlsFalseAndUseExternalTlsFalseTest(){
61 Blueprint bp = createBlueprintFromFile("TestCases/TlsInfo/testComponentSpec_withTlsFalseAndExternalTlsFalse.json");
63 assertBlueprintContainsExternalTlsInfoWithUseFlagDefault(bp, false);
64 assertBlueprintContainsTlsInfoWithUseFlagDefault(bp, false);
68 public void useTlsTrueAndNoExternalTlsFlagTest(){
69 Blueprint bp = createBlueprintFromFile("TestCases/TlsInfo/testComponentSpec_withTlsTrueAndNoExternalTls.json");
71 assertBlueprintContainsTlsInfoWithUseFlagDefault(bp, true);
72 assertBlueprintHasNoExternalTlsInfo(bp);
76 public void noTlsInfo(){
77 Blueprint bp = createBlueprintFromFile("TestCases/TlsInfo/testComponentSpec_withoutTlsInfo.json");
79 assertBlueprintHasNoTlsInfo(bp);
80 assertBlueprintHasNoExternalTlsInfo(bp);
83 private void assertBlueprintContainsExternalTlsInfoWithUseFlagDefault(Blueprint bp, boolean useFlagDefault) {
84 //should create proper inputs
85 assertContainsInputWithDefault(bp, "external_cert_use_external_tls", useFlagDefault);
86 assertContainsInputWithDefault(bp, "external_cert_ca_name", "\"RA\"");
87 assertContainsInputWithDefault(bp, "external_cert_cert_type", "\"P12\"");
88 assertContainsInputWithDefault(bp, "external_cert_common_name", "\"sample.onap.org\"");
89 assertContainsInputWithDefault(bp, "external_cert_sans",
90 "\"sample.onap.org:component.sample.onap.org\"");
92 Node node = bp.getNode_templates().get("test.component.spec");
94 //should create proper externalTlsInfo object in node properties
95 ExternalTlsInfo externalTlsInfo = node.getProperties().getExternal_cert();
96 assertNotNull(externalTlsInfo);
98 assertEquals("external_cert_ca_name", externalTlsInfo.getCaName().getGet_input());
99 assertEquals("external_cert_cert_type", externalTlsInfo.getCertType().getGet_input());
100 assertEquals("external_cert_use_external_tls", externalTlsInfo.getUseExternalTls().getGet_input());
101 assertEquals("/opt/app/dcae-certificate/", externalTlsInfo.getExternalCertDirectory());
103 ExternalTlsInfo.ExternalCertificateParameters extCertParams = externalTlsInfo.getExternalCertificateParameters();
104 assertNotNull(extCertParams);
106 assertEquals("external_cert_common_name", extCertParams.getCommonName().getGet_input());
107 assertEquals("external_cert_sans", extCertParams.getSans().getGet_input());
110 private void assertBlueprintContainsTlsInfoWithUseFlagDefault(Blueprint bp, boolean useFlagDefault) {
111 //shold create proper inputs
112 assertContainsInputWithDefault(bp, "use_tls", useFlagDefault);
114 Node node = bp.getNode_templates().get("test.component.spec");
116 //should create proper tlsInfo object in node properties
117 TlsInfo tlsInfo = node.getProperties().getTls_info();
118 assertEquals("use_tls", tlsInfo.getUseTls().getGet_input());
119 assertEquals("/opt/app/dcae-certificate/", tlsInfo.getCertDirectory());
123 private void assertBlueprintHasNoExternalTlsInfo(Blueprint bp) {
124 //should not create inputs for external tls
125 assertFalse(bp.getInputs().containsKey("external_cert_use_external_tls"));
126 assertFalse(bp.getInputs().containsKey("external_cert_common_name"));
127 assertFalse(bp.getInputs().containsKey("external_cert_ca_name"));
128 assertFalse(bp.getInputs().containsKey("external_cert_sans"));
130 Node node = bp.getNode_templates().get("test.component.spec");
132 //should not create externalTlsInfo object in node properties
133 ExternalTlsInfo externalTlsInfo = node.getProperties().getExternal_cert();
134 assertNull(externalTlsInfo);
138 private void assertBlueprintHasNoTlsInfo(Blueprint bp) {
139 //should not create inputs for tls
140 assertFalse(bp.getInputs().containsKey("use_tls"));
142 Node node = bp.getNode_templates().get("test.component.spec");
144 //should not create tlsInfo object in node properties
145 assertNull(node.getProperties().getTls_info());
148 private void assertContainsInputWithDefault(Blueprint bp, String inputName, Object defaultValue) {
149 LinkedHashMap<String, Object> input = bp.getInputs().get(inputName);
150 assertNotNull(input);
151 assertEquals(defaultValue, input.get("default"));
154 private Blueprint createBlueprintFromFile(String path) {
155 ComponentSpec cs = new ComponentSpec();
156 cs.createComponentSpecFromFile(path);
158 Blueprint bp = new Blueprint();
159 bp = bp.createBlueprint(cs, "", this.bpType, "", "");