Fix sonar issues
[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-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
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 import java.util.Map;
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 import java.nio.file.Paths;
34 import java.util.Arrays;
35 import java.util.List;
36
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;
41
42 /**
43  * Test Case for Tls Info
44  *
45  */
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 Case for Tls True and External TLS True
58      *
59      */
60     @Test
61     public void useTlsTrueAndUseExternalTlsTrueTest() {
62         OnapBlueprint bp =
63             createBlueprintFromFile(
64                 Paths.get(
65                     "src",
66                     "test",
67                     "resources",
68                     "componentspecs",
69                     useTlsTrueAndUseExternalTlsTrueTest)
70                     .toFile()
71                     .getAbsolutePath());
72
73         assertBlueprintContainsExternalTlsInfoWithUseFlagDefault(bp, true);
74         assertBlueprintContainsTlsInfoWithUseFlagDefault(bp, true);
75     }
76     /**
77      * Test Case for Tls False and External TLS False
78      *
79      */
80     @Test
81     public void useTlsFalseAndUseExternalTlsFalseTest() {
82         OnapBlueprint bp =
83             createBlueprintFromFile(
84                 Paths.get(
85                     "src",
86                     "test",
87                     "resources",
88                     "componentspecs",
89                     useTlsFalseAndUseExternalTlsFalseTest)
90                     .toFile()
91                     .getAbsolutePath());
92
93         assertBlueprintContainsExternalTlsInfoWithUseFlagDefault(bp, false);
94         assertBlueprintContainsTlsInfoWithUseFlagDefault(bp, false);
95     }
96
97     /**
98      * Test Case for Tls True and No External TLS Flag
99      *
100      */
101     @Test
102     public void useTlsTrueAndNoExternalTlsFlagTest() {
103         OnapBlueprint bp =
104             createBlueprintFromFile(
105                 Paths.get(
106                     "src",
107                     "test",
108                     "resources",
109                     "componentspecs",
110                     useTlsTrueAndNoExternalTlsFlagTest)
111                     .toFile()
112                     .getAbsolutePath());
113
114         assertBlueprintContainsTlsInfoWithUseFlagDefault(bp, true);
115         assertBlueprintHasNoExternalTlsInfo(bp);
116     }
117
118     /**
119      * Test Case for No Tls Info
120      *
121      */
122     @Test
123     public void noTlsInfo() {
124         OnapBlueprint bp =
125             createBlueprintFromFile(
126                 Paths.get("src", "test", "resources", "componentspecs", noTlsInfo)
127                     .toFile()
128                     .getAbsolutePath());
129
130         assertBlueprintHasNoTlsInfo(bp);
131         assertBlueprintHasNoExternalTlsInfo(bp);
132     }
133
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\"");
143
144         Node node = bp.getNode_templates().get("test.component.spec");
145
146         // should create proper externalTlsInfo object in node properties
147         ExternalTlsInfo externalTlsInfo = node.getProperties().getExternal_cert();
148         assertNotNull(externalTlsInfo);
149
150         assertEquals("external_cert_ca_name", externalTlsInfo.getCaName().getBpInputName());
151         assertEquals("external_cert_cert_type", externalTlsInfo.getCertType().getBpInputName());
152         assertEquals(
153             "external_cert_use_external_tls", externalTlsInfo.getUseExternalTls().getBpInputName());
154         assertEquals("/opt/app/dcae-certificate/", externalTlsInfo.getExternalCertDirectory());
155
156         ExternalCertificateParameters extCertParams =
157             externalTlsInfo.getExternalCertificateParameters();
158         assertNotNull(extCertParams);
159
160         assertEquals("external_cert_common_name", extCertParams.getCommonName().getBpInputName());
161         assertEquals("external_cert_sans", extCertParams.getSans().getBpInputName());
162     }
163
164     private void assertBlueprintContainsTlsInfoWithUseFlagDefault(
165         OnapBlueprint bp, boolean useFlagDefault) {
166         // shold create proper inputs
167         assertContainsInputWithDefault(bp, "use_tls", useFlagDefault);
168
169         Node node = bp.getNode_templates().get("test.component.spec");
170
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());
175     }
176
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"));
183
184         Node node = bp.getNode_templates().get("test.component.spec");
185
186         // should not create externalTlsInfo object in node properties
187         ExternalTlsInfo externalTlsInfo = node.getProperties().getExternal_cert();
188         assertNull(externalTlsInfo);
189     }
190
191     private void assertBlueprintHasNoTlsInfo(OnapBlueprint bp) {
192         // should not create inputs for tls
193         assertFalse(bp.getInputs().containsKey("use_tls"));
194
195         Node node = bp.getNode_templates().get("test.component.spec");
196
197         // should not create tlsInfo object in node properties
198         assertNull(node.getProperties().getTls_info());
199     }
200
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"));
206     }
207
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;
213     }
214 }