Merge "Blueprint Generator Refactored Code Issue-ID: DCAEGEN2-2472"
[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
46 //@RunWith(Parameterized.class)
47 public class TlsInfoTest  extends BlueprintGeneratorTests {
48
49  @Parameterized.Parameter
50  public char bpType;
51
52  @Parameterized.Parameters(name = "Blueprint type: {0}")
53  public static List<Character> data() {
54   return Arrays.asList('o', 'd');
55  }
56
57
58  @Test
59  public void useTlsTrueAndUseExternalTlsTrueTest(){
60   //Input input = input.setComponentSpecPath(componentSpecPath + "testComponentSpec_withTlsTrueAndExternalTlsTrue.json");
61   OnapBlueprint bp = createBlueprintFromFile(Paths.get("src", "test", "resources", "componentspecs", useTlsTrueAndUseExternalTlsTrueTest).toFile().getAbsolutePath());
62
63   assertBlueprintContainsExternalTlsInfoWithUseFlagDefault(bp, true);
64   assertBlueprintContainsTlsInfoWithUseFlagDefault(bp, true);
65  }
66
67  @Test
68  public void useTlsFalseAndUseExternalTlsFalseTest(){
69   OnapBlueprint bp = createBlueprintFromFile(Paths.get("src", "test", "resources", "componentspecs", useTlsFalseAndUseExternalTlsFalseTest).toFile().getAbsolutePath());
70
71   assertBlueprintContainsExternalTlsInfoWithUseFlagDefault(bp, false);
72   assertBlueprintContainsTlsInfoWithUseFlagDefault(bp, false);
73  }
74
75  @Test
76  public void useTlsTrueAndNoExternalTlsFlagTest(){
77   OnapBlueprint bp = createBlueprintFromFile(Paths.get("src", "test", "resources", "componentspecs", useTlsTrueAndNoExternalTlsFlagTest).toFile().getAbsolutePath());
78
79   assertBlueprintContainsTlsInfoWithUseFlagDefault(bp, true);
80   assertBlueprintHasNoExternalTlsInfo(bp);
81  }
82
83  @Test
84  public void noTlsInfo(){
85   OnapBlueprint bp = createBlueprintFromFile(Paths.get("src", "test", "resources", "componentspecs", noTlsInfo).toFile().getAbsolutePath());
86
87   assertBlueprintHasNoTlsInfo(bp);
88   assertBlueprintHasNoExternalTlsInfo(bp);
89  }
90
91  private void assertBlueprintContainsExternalTlsInfoWithUseFlagDefault(OnapBlueprint bp, boolean useFlagDefault) {
92   //should create proper inputs
93   assertContainsInputWithDefault(bp, "external_cert_use_external_tls", useFlagDefault);
94   assertContainsInputWithDefault(bp, "external_cert_ca_name", "\"RA\"");
95   assertContainsInputWithDefault(bp, "external_cert_cert_type", "\"P12\"");
96   assertContainsInputWithDefault(bp, "external_cert_common_name", "\"sample.onap.org\"");
97   assertContainsInputWithDefault(bp, "external_cert_sans",
98     "\"sample.onap.org:component.sample.onap.org\"");
99
100   Node node = bp.getNode_templates().get("test.component.spec");
101
102   //should create proper externalTlsInfo object in node properties
103   ExternalTlsInfo externalTlsInfo = node.getProperties().getExternal_cert();
104   assertNotNull(externalTlsInfo);
105
106   assertEquals("external_cert_ca_name", externalTlsInfo.getCaName().getBpInputName());
107   assertEquals("external_cert_cert_type", externalTlsInfo.getCertType().getBpInputName());
108   assertEquals("external_cert_use_external_tls", externalTlsInfo.getUseExternalTls().getBpInputName());
109   assertEquals("/opt/app/dcae-certificate/", externalTlsInfo.getExternalCertDirectory());
110
111   ExternalCertificateParameters extCertParams = externalTlsInfo.getExternalCertificateParameters();
112   assertNotNull(extCertParams);
113
114   assertEquals("external_cert_common_name", extCertParams.getCommonName().getBpInputName());
115   assertEquals("external_cert_sans", extCertParams.getSans().getBpInputName());
116  }
117
118  private void assertBlueprintContainsTlsInfoWithUseFlagDefault(OnapBlueprint bp, boolean useFlagDefault) {
119   //shold create proper inputs
120   assertContainsInputWithDefault(bp, "use_tls", useFlagDefault);
121
122   Node node = bp.getNode_templates().get("test.component.spec");
123
124   //should create proper tlsInfo object in node properties
125   TlsInfo tlsInfo = node.getProperties().getTls_info();
126   assertEquals("use_tls", tlsInfo.getUseTls().getBpInputName());
127   assertEquals("/opt/app/dcae-certificate/", tlsInfo.getCertDirectory());
128
129  }
130
131  private void assertBlueprintHasNoExternalTlsInfo(OnapBlueprint bp) {
132   //should not create inputs for external tls
133   assertFalse(bp.getInputs().containsKey("external_cert_use_external_tls"));
134   assertFalse(bp.getInputs().containsKey("external_cert_common_name"));
135   assertFalse(bp.getInputs().containsKey("external_cert_ca_name"));
136   assertFalse(bp.getInputs().containsKey("external_cert_sans"));
137
138   Node node = bp.getNode_templates().get("test.component.spec");
139
140   //should not create externalTlsInfo object in node properties
141   ExternalTlsInfo externalTlsInfo = node.getProperties().getExternal_cert();
142   assertNull(externalTlsInfo);
143  }
144
145
146  private void assertBlueprintHasNoTlsInfo(OnapBlueprint bp) {
147   //should not create inputs for tls
148   assertFalse(bp.getInputs().containsKey("use_tls"));
149
150   Node node = bp.getNode_templates().get("test.component.spec");
151
152   //should not create tlsInfo object in node properties
153   assertNull(node.getProperties().getTls_info());
154  }
155
156  private void assertContainsInputWithDefault(OnapBlueprint bp, String inputName, Object defaultValue) {
157   LinkedHashMap<String, Object> input = bp.getInputs().get(inputName);
158   assertNotNull(input);
159   assertEquals(defaultValue, input.get("default"));
160  }
161
162  private OnapBlueprint createBlueprintFromFile(String path) {
163   onapComponentSpec = onapComponentSpecService.createComponentSpecFromFile(path);
164   Input input = onapTestUtils.getInput(path, "", "", "", "o", "");
165   OnapBlueprint onapBlueprint = onapBlueprintService.createBlueprint(onapComponentSpec, input);
166   return onapBlueprint;
167  }
168 }