2 * # ============LICENSE_START=======================================================
3 * # Copyright (c) 2021-2022 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
9 * # http://www.apache.org/licenses/LICENSE-2.0
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=========================================================
19 package org.onap.dcaegen2.platform.helmchartgenerator;
21 import com.fasterxml.jackson.databind.ObjectMapper;
22 import org.junit.jupiter.api.Assertions;
23 import org.junit.jupiter.api.BeforeEach;
24 import org.junit.jupiter.api.Test;
25 import org.junit.jupiter.api.extension.ExtendWith;
26 import org.mockito.Mock;
27 import org.mockito.junit.jupiter.MockitoExtension;
28 import org.onap.dcaegen2.platform.helmchartgenerator.chartbuilder.ComponentSpecParser;
29 import org.onap.dcaegen2.platform.helmchartgenerator.models.chartinfo.ChartInfo;
30 import org.onap.dcaegen2.platform.helmchartgenerator.validation.ComponentSpecValidator;
32 import java.util.ArrayList;
33 import java.util.List;
36 import static org.assertj.core.api.Assertions.assertThat;
37 import static org.junit.jupiter.api.Assertions.assertTrue;
39 @ExtendWith({MockitoExtension.class})
40 class ComponentSpecParserTest {
42 ComponentSpecParser parser;
45 ComponentSpecValidator validator;
49 parser = new ComponentSpecParser(validator, new Utils());
53 void extractChartInfo() throws Exception{
54 String specLocation = "src/test/input/specs/ves.json";
55 String chartTemplateLocation = "src/test/input/blueprint";
56 String specSchemaLocation = "";
57 ChartInfo chartInfo = parser.extractChartInfo(specLocation, chartTemplateLocation, specSchemaLocation);
59 assertMetadata(chartInfo);
60 assertOuterKeyValues(chartInfo);
61 assertApplicationConfigSection(chartInfo);
62 assertReadinessCheck(chartInfo);
63 assertApplicationEnv(chartInfo);
64 assertService(chartInfo);
65 assertPolicyInfo(chartInfo);
66 assertCertificates(chartInfo);
67 assertConfigMap(chartInfo);
68 assertPostgres(chartInfo);
69 assertSecrets(chartInfo);
72 private void assertApplicationConfigSection(ChartInfo chartInfo) {
73 Map<String, Object> applicationConfig = (Map<String, Object>) chartInfo.getValues().get("applicationConfig");
74 assertThat(((Map<String,Object>) applicationConfig.get("streams_publishes"))).isInstanceOf(Map.class);
75 assertThat(applicationConfig.size()).isEqualTo(20);
78 private void assertOuterKeyValues(ChartInfo chartInfo) {
79 Map<String, Object> outerKv = chartInfo.getValues();
80 assertThat(outerKv.get("image")).isEqualTo("nexus3.onap.org:10001/onap/org.onap.dcaegen2.collectors.ves.vescollector:latest");
81 Map<String, Object> logPath = (Map<String, Object>) chartInfo.getValues().get("log");
82 assertThat(logPath.get("path")).isEqualTo("/opt/app/VESCollector/logs/");
83 assertThat(outerKv.get("certDirectory")).isEqualTo("/opt/app/dcae-certificate/");
84 assertTrue((Boolean) outerKv.get("tlsServer"));
85 assertTrue((Boolean) outerKv.get("useCmpv2Certificates"));
88 private void assertMetadata(ChartInfo chartInfo) {
89 assertThat(chartInfo.getMetadata().getName()).isEqualTo("dcae-ves-collector");
90 assertThat(chartInfo.getMetadata().getVersion()).isEqualTo("1.8.0");
91 assertThat(chartInfo.getMetadata().getDescription()).
92 isEqualTo("Collector for receiving VES events through restful interface");
95 private void assertReadinessCheck(ChartInfo chartInfo) {
96 Map<String, Object> readiness = (Map<String, Object>) chartInfo.getValues().get("readiness");
97 assertThat(readiness.get("scheme")).isEqualTo("http");
98 assertThat(readiness.get("path")).isEqualTo("/healthcheck");
99 assertThat(readiness.get("periodSeconds")).isEqualTo(15);
100 assertThat(readiness.get("port")).isEqualTo(8080);
101 assertThat(readiness.get("initialDelaySeconds")).isEqualTo(5);
102 assertThat(readiness.get("timeoutSeconds")).isEqualTo(1);
105 private void assertApplicationEnv(ChartInfo chartInfo) {
106 ObjectMapper oMapper = new ObjectMapper();
107 Map<String, Object> applicationEnv = (Map<String, Object>) chartInfo.getValues().get("applicationEnv");
108 Map<String, Object> PMSH_PG_USERNAME = oMapper.convertValue(applicationEnv.get("PMSH_PG_USERNAME"), Map.class);
109 Map<String, Object> PMSH_PG_PASSWORD = oMapper.convertValue(applicationEnv.get("PMSH_PG_PASSWORD"), Map.class);
111 assertThat(applicationEnv.get("PMSH_PG_URL")).isEqualTo("dcae-pmsh-pg-primary");
112 assertThat(PMSH_PG_USERNAME.get("secretUid")).isEqualTo("pgUserCredsSecretUid");
113 assertThat(PMSH_PG_USERNAME.get("key")).isEqualTo("login");
114 assertThat(PMSH_PG_PASSWORD.get("secretUid")).isEqualTo("pgUserCredsSecretUid");
115 assertThat(PMSH_PG_PASSWORD.get("key")).isEqualTo("password");
118 private void assertService(ChartInfo chartInfo) {
119 Map<String, Object> service = (Map<String, Object>) chartInfo.getValues().get("service");
120 List<Map> ports = new ArrayList<Map>();
121 for(Object portsGroup : (ArrayList) service.get("ports")){
122 ports.add((Map<String, Object>) portsGroup);
124 assertThat(service.get("type")).isEqualTo("NodePort");
125 assertThat(service.get("name")).isEqualTo("dcae-ves-collector");
126 assertTrue((Boolean) service.get("has_internal_only_ports"));
127 assertThat(ports.get(0).get("name")).isEqualTo("http");
128 assertThat(ports.get(0).get("port")).isEqualTo(8443);
129 assertThat(ports.get(0).get("plain_port")).isEqualTo(8080);
130 assertThat(ports.get(0).get("port_protocol")).isEqualTo("http");
131 assertThat(ports.get(0).get("nodePort")).isEqualTo(17);
132 assertTrue((Boolean) ports.get(0).get("useNodePortExt"));
133 assertThat(ports.get(1).get("name")).isEqualTo("metrics");
134 assertThat(ports.get(1).get("port")).isEqualTo(4444);
135 assertTrue((Boolean) ports.get(1).get("internal_only"));
138 private void assertPolicyInfo(ChartInfo chartInfo) {
139 Map<String, Object> policyInfo = (Map<String, Object>) chartInfo.getValues().get("policies");
140 assertThat(policyInfo.get("policyID")).isEqualTo("'[\"tca_policy_id_10\", \"tca_policy_id_11\"]'\n");
143 private void assertCertificates(ChartInfo chartInfo) {
144 List certificates = (List) chartInfo.getValues().get("certificates");
145 Map<String, Object> certificate = (Map<String, Object>) certificates.get(0);
146 assertThat(certificate.get("mountPath")).isEqualTo("/opt/app/dcae-certificate/external");
147 assertThat(certificate.get("commonName")).isEqualTo("dcae-ves-collector");
148 assertThat(((List) certificate.get("dnsNames")).get(0)).isEqualTo("dcae-ves-collector");
149 assertThat(((List) ((Map<String, Map>) certificate.get("keystore")).get("outputType")).get(0)).isEqualTo("jks");
150 assertThat((((Map<String, Map>) certificate.get("keystore")).get("passwordSecretRef")).get("name")).isEqualTo("vescollector-cmpv2-keystore-password");
151 assertThat((((Map<String, Map>) certificate.get("keystore")).get("passwordSecretRef")).get("key")).isEqualTo("password");
152 assertTrue((Boolean) (((Map<String, Map>) certificate.get("keystore")).get("passwordSecretRef")).get("create"));
155 private void assertConfigMap(ChartInfo chartInfo) {
156 List externalVolumes = (List) chartInfo.getValues().get("externalVolumes");
157 Map<String, Object> volume_one = (Map<String, Object>) externalVolumes.get(0);
158 Map<String, Object> volume_two = (Map<String, Object>) externalVolumes.get(1);
159 assertThat(volume_one.get("name")).isEqualTo("dcae-external-repo-configmap-schema-map");
160 assertThat(volume_one.get("type")).isEqualTo("configMap");
161 assertThat(volume_one.get("mountPath")).isEqualTo("/opt/app/VESCollector/etc/externalRepo/");
162 assertTrue((Boolean) volume_one.get("optional"));
165 private void assertPostgres(ChartInfo chartInfo) {
166 Map<String, Object> postgres = (Map<String, Object>) chartInfo.getValues().get("postgres");
167 assertThat(postgres.get("nameOverride")).isEqualTo("dcae-ves-collector-postgres");
168 assertThat(((Map<String, Object>) postgres.get("service")).get("name")).isEqualTo("dcae-ves-collector-postgres");
169 assertThat(((Map<String, Object>) postgres.get("service")).get("name2")).isEqualTo("dcae-ves-collector-pg-primary");
170 assertThat(((Map<String, Object>) postgres.get("service")).get("name3")).isEqualTo("dcae-ves-collector-pg-replica");
171 assertThat(((Map<String, Object>) ((Map<String, Object>) postgres.get("container")).get("name")).get("primary")).isEqualTo("dcae-ves-collector-pg-primary");
172 assertThat(((Map<String, Object>) ((Map<String, Object>) postgres.get("container")).get("name")).get("replica")).isEqualTo("dcae-ves-collector-pg-replica");
173 assertThat(((Map<String, Object>) postgres.get("persistence")).get("mountSubPath")).isEqualTo("dcae-ves-collector/data");
174 assertThat(((Map<String, Object>) postgres.get("persistence")).get("mountInitPath")).isEqualTo("dcae-ves-collector");
175 assertThat(((Map<String, Object>) postgres.get("config")).get("pgUserName")).isEqualTo("vescollector");
176 assertThat(((Map<String, Object>) postgres.get("config")).get("pgDatabase")).isEqualTo("vescollector");
177 assertThat(((Map<String, Object>) postgres.get("config")).get("pgUserExternalSecret")).isEqualTo("{{ include \"common.release\" . }}-vescollector-pg-user-creds");
180 private void assertSecrets(ChartInfo chartInfo) {
181 List<Object> secrets = (List<Object>) chartInfo.getValues().get("secrets");
182 Map<String, Object> secret1 = (Map<String, Object>) secrets.get(0);
183 assertThat(secret1.get("uid")).isEqualTo("pg-user-creds");
184 assertThat(secret1.get("name")).isEqualTo("{{ include \"common.release\" . }}-vescollector-pg-user-creds");
185 assertThat(secret1.get("type")).isEqualTo("basicAuth");
186 assertThat(secret1.get("externalSecret")).isEqualTo("{{ ternary \"\" (tpl (default \"\" .Values.postgres.config.pgUserExternalSecret) .) (hasSuffix \"vescollector-pg-user-creds\" .Values.postgres.config.pgUserExternalSecret) }}");
187 assertThat(secret1.get("login")).isEqualTo("{{ .Values.postgres.config.pgUserName }}");
188 assertThat(secret1.get("password")).isEqualTo("{{ .Values.postgres.config.pgUserPassword }}");
189 assertThat(secret1.get("passwordPolicy")).isEqualTo("generate");