Convert streams_publishes and streams_subscribes json strings under applicationConfig...
[dcaegen2/platform.git] / mod2 / helm-generator / helmchartgenerator-core / src / test / java / org / onap / dcaegen2 / platform / helmchartgenerator / ComponentSpecParserTest.java
1 /*
2  * # ============LICENSE_START=======================================================
3  * # Copyright (c) 2021 AT&T Intellectual Property. All rights reserved.
4  * # ================================================================================
5  * # Licensed under the Apache License, Version 2.0 (the "License");
6  * # you may not use this file except in compliance with the License.
7  * # You may obtain a copy of the License at
8  * #
9  * #      http://www.apache.org/licenses/LICENSE-2.0
10  * #
11  * # Unless required by applicable law or agreed to in writing, software
12  * # distributed under the License is distributed on an "AS IS" BASIS,
13  * # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * # See the License for the specific language governing permissions and
15  * # limitations under the License.
16  * # ============LICENSE_END=========================================================
17  */
18
19 package org.onap.dcaegen2.platform.helmchartgenerator;
20
21 import com.fasterxml.jackson.databind.ObjectMapper;
22 import org.junit.jupiter.api.BeforeEach;
23 import org.junit.jupiter.api.Test;
24 import org.junit.jupiter.api.extension.ExtendWith;
25 import org.mockito.Mock;
26 import org.mockito.junit.jupiter.MockitoExtension;
27 import org.onap.dcaegen2.platform.helmchartgenerator.chartbuilder.ComponentSpecParser;
28 import org.onap.dcaegen2.platform.helmchartgenerator.models.chartinfo.ChartInfo;
29 import org.onap.dcaegen2.platform.helmchartgenerator.validation.ComponentSpecValidator;
30
31 import java.util.ArrayList;
32 import java.util.List;
33 import java.util.Map;
34
35 import static org.assertj.core.api.Assertions.assertThat;
36
37 @ExtendWith({MockitoExtension.class})
38 class ComponentSpecParserTest {
39
40     ComponentSpecParser parser;
41
42     @Mock
43     ComponentSpecValidator validator;
44
45     @BeforeEach
46     void setUp() {
47         parser = new ComponentSpecParser(validator, new Utils());
48     }
49
50     @Test
51     void extractChartInfo() throws Exception{
52         String specLocation = "src/test/input/specs/ves.json";
53         String chartTemplateLocation = "src/test/input/blueprint";
54         String specSchemaLocation = "";
55         ChartInfo chartInfo = parser.extractChartInfo(specLocation, chartTemplateLocation, specSchemaLocation);
56
57         assertMetadata(chartInfo);
58         assertOuterKeyValues(chartInfo);
59         assertApplicationConfigSection(chartInfo);
60         assertReadinessCheck(chartInfo);
61         assertApplicationEnv(chartInfo);
62         assertService(chartInfo);
63         assertPolicyInfo(chartInfo);
64         assertCertificates(chartInfo);
65         assertConfigMap(chartInfo);
66         assertPostgres(chartInfo);
67         assertSecrets(chartInfo);
68     }
69
70     private void assertApplicationConfigSection(ChartInfo chartInfo) {
71         Map<String, Object> applicationConfig = (Map<String, Object>) chartInfo.getValues().get("applicationConfig");
72         assertThat(((Map<String,Object>) applicationConfig.get("streams_publishes"))).isInstanceOf(Map.class);
73         assertThat(applicationConfig.size()).isEqualTo(20);
74     }
75
76     private void assertOuterKeyValues(ChartInfo chartInfo) {
77         Map<String, Object> outerKv = chartInfo.getValues();
78         assertThat(outerKv.get("image")).isEqualTo("nexus3.onap.org:10001/onap/org.onap.dcaegen2.collectors.ves.vescollector:latest");
79         assertThat(outerKv.get("logDirectory")).isEqualTo("/opt/app/VESCollector/logs/");
80         assertThat(outerKv.get("certDirectory")).isEqualTo("/opt/app/dcae-certificate/");
81         assertThat(outerKv.get("tlsServer")).isEqualTo(true);
82     }
83
84     private void assertMetadata(ChartInfo chartInfo) {
85         assertThat(chartInfo.getMetadata().getName()).isEqualTo("dcae-ves-collector");
86         assertThat(chartInfo.getMetadata().getVersion()).isEqualTo("1.8.0");
87         assertThat(chartInfo.getMetadata().getDescription()).
88                 isEqualTo("Collector for receiving VES events through restful interface");
89     }
90
91     private void assertReadinessCheck(ChartInfo chartInfo) {
92         Map<String, Object> readiness = (Map<String, Object>) chartInfo.getValues().get("readiness");
93         assertThat(readiness.get("scheme")).isEqualTo("http");
94         assertThat(readiness.get("path")).isEqualTo("/healthcheck");
95         assertThat(readiness.get("periodSeconds")).isEqualTo(15);
96         assertThat(readiness.get("port")).isEqualTo(8080);
97         assertThat(readiness.get("initialDelaySeconds")).isEqualTo(5);
98         assertThat(readiness.get("timeoutSeconds")).isEqualTo(1);
99     }
100
101     private void assertApplicationEnv(ChartInfo chartInfo) {
102         ObjectMapper oMapper = new ObjectMapper();
103         Map<String, Object> applicationEnv = (Map<String, Object>) chartInfo.getValues().get("applicationEnv");
104         Map<String, Object> PMSH_PG_USERNAME = oMapper.convertValue(applicationEnv.get("PMSH_PG_USERNAME"), Map.class);
105         Map<String, Object> PMSH_PG_PASSWORD = oMapper.convertValue(applicationEnv.get("PMSH_PG_PASSWORD"), Map.class);
106
107         assertThat(applicationEnv.get("PMSH_PG_URL")).isEqualTo("dcae-pmsh-pg-primary");
108         assertThat(PMSH_PG_USERNAME.get("secretUid")).isEqualTo("pgUserCredsSecretUid");
109         assertThat(PMSH_PG_USERNAME.get("key")).isEqualTo("login");
110         assertThat(PMSH_PG_PASSWORD.get("secretUid")).isEqualTo("pgUserCredsSecretUid");
111         assertThat(PMSH_PG_PASSWORD.get("key")).isEqualTo("password");
112     }
113
114     private void assertService(ChartInfo chartInfo) {
115         Map<String, Object> service = (Map<String, Object>) chartInfo.getValues().get("service");
116         List<Map> ports = new ArrayList<Map>();
117         for(Object portsGroup : (ArrayList) service.get("ports")){
118             ports.add((Map<String, Object>) portsGroup);
119         }
120         assertThat(service.get("type")).isEqualTo("NodePort");
121         assertThat(service.get("name")).isEqualTo("dcae-ves-collector");
122         assertThat(service.get("has_internal_only_ports")).isEqualTo(true);
123         assertThat(ports.get(0).get("name")).isEqualTo("http");
124         assertThat(ports.get(0).get("port")).isEqualTo(8443);
125         assertThat(ports.get(0).get("plain_port")).isEqualTo(8080);
126         assertThat(ports.get(0).get("port_protocol")).isEqualTo("http");
127         assertThat(ports.get(0).get("nodePort")).isEqualTo(17);
128         assertThat(ports.get(0).get("useNodePortExt")).isEqualTo(true);
129         assertThat(ports.get(1).get("name")).isEqualTo("metrics");
130         assertThat(ports.get(1).get("port")).isEqualTo(4444);
131         assertThat(ports.get(1).get("internal_only")).isEqualTo(true);
132     }
133
134     private void assertPolicyInfo(ChartInfo chartInfo) {
135         Map<String, Object> policyInfo = (Map<String, Object>) chartInfo.getValues().get("policies");
136         assertThat(policyInfo.get("policyID")).isEqualTo("'[\"tca_policy_id_10\", \"tca_policy_id_11\"]'\n");
137     }
138
139     private void assertCertificates(ChartInfo chartInfo) {
140         List certificates = (List) chartInfo.getValues().get("certificates");
141         Map<String, Object> certificate = (Map<String, Object>) certificates.get(0);
142         assertThat(certificate.get("mountPath")).isEqualTo("/opt/app/dcae-certificate/external");
143         assertThat(certificate.get("commonName")).isEqualTo("dcae-ves-collector");
144         assertThat(((List) certificate.get("dnsNames")).get(0)).isEqualTo("dcae-ves-collector");
145         assertThat(((List) ((Map<String, Map>) certificate.get("keystore")).get("outputType")).get(0)).isEqualTo("jks");
146         assertThat((((Map<String, Map>) certificate.get("keystore")).get("passwordSecretRef")).get("name")).isEqualTo("ves-collector-cmpv2-keystore-password");
147         assertThat((((Map<String, Map>) certificate.get("keystore")).get("passwordSecretRef")).get("key")).isEqualTo("password");
148         assertThat((((Map<String, Map>) certificate.get("keystore")).get("passwordSecretRef")).get("create")).isEqualTo(true);
149     }
150
151     private void assertConfigMap(ChartInfo chartInfo) {
152         List externalVolumes = (List) chartInfo.getValues().get("externalVolumes");
153         Map<String, Object> volume_one = (Map<String, Object>) externalVolumes.get(0);
154         Map<String, Object> volume_two = (Map<String, Object>) externalVolumes.get(1);
155         assertThat(volume_one.get("name")).isEqualTo("dcae-external-repo-configmap-schema-map");
156         assertThat(volume_one.get("type")).isEqualTo("configMap");
157         assertThat(volume_one.get("mountPath")).isEqualTo("/opt/app/VESCollector/etc/externalRepo/");
158         assertThat(volume_one.get("optional")).isEqualTo(true);
159     }
160
161     private void assertPostgres(ChartInfo chartInfo) {
162         Map<String, Object> postgres = (Map<String, Object>) chartInfo.getValues().get("postgres");
163         assertThat(postgres.get("nameOverride")).isEqualTo("dcae-ves-collector-postgres");
164         assertThat(((Map<String, Object>) postgres.get("service")).get("name")).isEqualTo("dcae-ves-collector-postgres");
165         assertThat(((Map<String, Object>) postgres.get("service")).get("name2")).isEqualTo("dcae-ves-collector-pg-primary");
166         assertThat(((Map<String, Object>) postgres.get("service")).get("name3")).isEqualTo("dcae-ves-collector-pg-replica");
167         assertThat(((Map<String, Object>) ((Map<String, Object>) postgres.get("container")).get("name")).get("primary")).isEqualTo("dcae-ves-collector-pg-primary");
168         assertThat(((Map<String, Object>) ((Map<String, Object>) postgres.get("container")).get("name")).get("replica")).isEqualTo("dcae-ves-collector-pg-replica");
169         assertThat(((Map<String, Object>) postgres.get("persistence")).get("mountSubPath")).isEqualTo("dcae-ves-collector/data");
170         assertThat(((Map<String, Object>) postgres.get("persistence")).get("mountInitPath")).isEqualTo("dcae-ves-collector");
171         assertThat(((Map<String, Object>) postgres.get("config")).get("pgUserName")).isEqualTo("ves-collector");
172         assertThat(((Map<String, Object>) postgres.get("config")).get("pgDatabase")).isEqualTo("ves-collector");
173         assertThat(((Map<String, Object>) postgres.get("config")).get("pgUserExternalSecret")).isEqualTo("{{ include \"common.release\" . }}-ves-collector-pg-user-creds");
174     }
175
176     private void assertSecrets(ChartInfo chartInfo) {
177         List<Object> secrets = (List<Object>) chartInfo.getValues().get("secrets");
178         Map<String, Object> secret1 = (Map<String, Object>) secrets.get(0);
179         assertThat(secret1.get("uid")).isEqualTo("pg-user-creds");
180         assertThat(secret1.get("name")).isEqualTo("{{ include \"common.release\" . }}-ves-collector-pg-user-creds");
181         assertThat(secret1.get("type")).isEqualTo("basicAuth");
182         assertThat(secret1.get("externalSecret")).isEqualTo("{{ ternary \"\" (tpl (default \"\" .Values.postgres.config.pgUserExternalSecret) .) (hasSuffix \"ves-collector-pg-user-creds\" .Values.postgres.config.pgUserExternalSecret) }}");
183         assertThat(secret1.get("login")).isEqualTo("{{ .Values.postgres.config.pgUserName }}");
184         assertThat(secret1.get("password")).isEqualTo("{{ .Values.postgres.config.pgUserPassword }}");
185         assertThat(secret1.get("passwordPolicy")).isEqualTo("generate");
186     }
187 }
188