Merge "Policy Model Distribution POC Issue-ID: DCAEGEN2-1868"
[dcaegen2/platform.git] / mod / bpgenerator / onap / src / test / java / org / onap / blueprintgenerator / test / TlsInfoTest.java
1 /*============LICENSE_START=======================================================
2  org.onap.dcae
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
10
11  http://www.apache.org/licenses/LICENSE-2.0
12
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=========================================================
19  */
20
21 package org.onap.blueprintgenerator.test;
22
23
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;
32
33
34 import java.nio.file.Paths;
35 import java.util.Arrays;
36 import java.util.LinkedHashMap;
37 import java.util.List;
38
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;
43
44
45 //@RunWith(Parameterized.class)
46 public class TlsInfoTest extends BlueprintGeneratorTests {
47
48     @Parameterized.Parameter
49     public char bpType;
50
51     @Parameterized.Parameters(name = "Blueprint type: {0}")
52     public static List<Character> data() {
53         return Arrays.asList('o', 'd');
54     }
55
56
57     @Test
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()
62                 .getAbsolutePath());
63
64         assertBlueprintContainsExternalTlsInfoWithUseFlagDefault(bp, true);
65         assertBlueprintContainsTlsInfoWithUseFlagDefault(bp, true);
66     }
67
68     @Test
69     public void useTlsFalseAndUseExternalTlsFalseTest() {
70         OnapBlueprint bp = createBlueprintFromFile(
71             Paths.get("src", "test", "resources", "componentspecs", useTlsFalseAndUseExternalTlsFalseTest).toFile()
72                 .getAbsolutePath());
73
74         assertBlueprintContainsExternalTlsInfoWithUseFlagDefault(bp, false);
75         assertBlueprintContainsTlsInfoWithUseFlagDefault(bp, false);
76     }
77
78     @Test
79     public void useTlsTrueAndNoExternalTlsFlagTest() {
80         OnapBlueprint bp = createBlueprintFromFile(
81             Paths.get("src", "test", "resources", "componentspecs", useTlsTrueAndNoExternalTlsFlagTest).toFile()
82                 .getAbsolutePath());
83
84         assertBlueprintContainsTlsInfoWithUseFlagDefault(bp, true);
85         assertBlueprintHasNoExternalTlsInfo(bp);
86     }
87
88     @Test
89     public void noTlsInfo() {
90         OnapBlueprint bp = createBlueprintFromFile(
91             Paths.get("src", "test", "resources", "componentspecs", noTlsInfo).toFile().getAbsolutePath());
92
93         assertBlueprintHasNoTlsInfo(bp);
94         assertBlueprintHasNoExternalTlsInfo(bp);
95     }
96
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\"");
105
106         Node node = bp.getNode_templates().get("test.component.spec");
107
108         //should create proper externalTlsInfo object in node properties
109         ExternalTlsInfo externalTlsInfo = node.getProperties().getExternal_cert();
110         assertNotNull(externalTlsInfo);
111
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());
116
117         ExternalCertificateParameters extCertParams = externalTlsInfo.getExternalCertificateParameters();
118         assertNotNull(extCertParams);
119
120         assertEquals("external_cert_common_name", extCertParams.getCommonName().getBpInputName());
121         assertEquals("external_cert_sans", extCertParams.getSans().getBpInputName());
122     }
123
124     private void assertBlueprintContainsTlsInfoWithUseFlagDefault(OnapBlueprint bp, boolean useFlagDefault) {
125         //shold create proper inputs
126         assertContainsInputWithDefault(bp, "use_tls", useFlagDefault);
127
128         Node node = bp.getNode_templates().get("test.component.spec");
129
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());
134
135     }
136
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"));
143
144         Node node = bp.getNode_templates().get("test.component.spec");
145
146         //should not create externalTlsInfo object in node properties
147         ExternalTlsInfo externalTlsInfo = node.getProperties().getExternal_cert();
148         assertNull(externalTlsInfo);
149     }
150
151
152     private void assertBlueprintHasNoTlsInfo(OnapBlueprint bp) {
153         //should not create inputs for tls
154         assertFalse(bp.getInputs().containsKey("use_tls"));
155
156         Node node = bp.getNode_templates().get("test.component.spec");
157
158         //should not create tlsInfo object in node properties
159         assertNull(node.getProperties().getTls_info());
160     }
161
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"));
166     }
167
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;
173     }
174 }