Replaced all tabs with spaces in java and pom.xml
[so.git] / adapters / mso-adapter-utils / src / test / java / org / onap / so / openstack / utils / MsoHeatUtilsUnitTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
4  * ================================================================================
5  * Copyright (C) 2017 - 2019 AT&T Intellectual Property. 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.so.openstack.utils;
22
23 import static org.junit.Assert.assertEquals;
24 import static org.junit.Assert.assertNull;
25 import static org.junit.Assert.assertTrue;
26 import java.io.IOException;
27 import java.nio.file.Files;
28 import java.nio.file.Paths;
29 import java.util.ArrayList;
30 import java.util.HashMap;
31 import java.util.HashSet;
32 import java.util.List;
33 import java.util.Map;
34 import java.util.Set;
35 import org.junit.Test;
36 import org.onap.so.db.catalog.beans.HeatTemplate;
37 import org.onap.so.db.catalog.beans.HeatTemplateParam;
38 import org.skyscreamer.jsonassert.JSONAssert;
39 import com.fasterxml.jackson.core.JsonParseException;
40 import com.fasterxml.jackson.core.type.TypeReference;
41 import com.fasterxml.jackson.databind.JsonMappingException;
42 import com.fasterxml.jackson.databind.JsonNode;
43 import com.fasterxml.jackson.databind.ObjectMapper;
44
45 public class MsoHeatUtilsUnitTest {
46
47
48     private ObjectMapper mapper = new ObjectMapper();
49
50     @Test
51     public void convertInputMapTest() throws JsonParseException, JsonMappingException, IOException {
52         MsoHeatUtils utils = new MsoHeatUtils();
53
54         Map<String, Object> input = new HashMap<>();
55         HeatTemplate template = new HeatTemplate();
56         template.setArtifactUuid("my-uuid");
57         Set<HeatTemplateParam> parameters = template.getParameters();
58         HeatTemplateParam paramNum = new HeatTemplateParam();
59         paramNum.setParamType("number");
60         paramNum.setParamName("my-number");
61         input.put("my-number", "3");
62
63         HeatTemplateParam paramString = new HeatTemplateParam();
64         paramString.setParamType("string");
65         paramString.setParamName("my-string");
66         input.put("my-string", "hello");
67
68         HeatTemplateParam paramJson = new HeatTemplateParam();
69         paramJson.setParamType("json");
70         paramJson.setParamName("my-json");
71
72         HeatTemplateParam paramJsonEscaped = new HeatTemplateParam();
73         paramJsonEscaped.setParamType("json");
74         paramJsonEscaped.setParamName("my-json-escaped");
75
76         Map<String, Object> jsonMap =
77                 mapper.readValue(getJson("free-form.json"), new TypeReference<Map<String, Object>>() {});
78         input.put("my-json", jsonMap);
79
80         input.put("my-json-escaped", getJson("free-form.json"));
81
82         parameters.add(paramNum);
83         parameters.add(paramString);
84         parameters.add(paramJson);
85         parameters.add(paramJsonEscaped);
86
87         Map<String, Object> output = utils.convertInputMap(input, template);
88
89         assertEquals(3, output.get("my-number"));
90         assertEquals("hello", output.get("my-string"));
91         assertTrue("expect no change in type", output.get("my-json") instanceof Map);
92         assertTrue("expect string to become jsonNode", output.get("my-json-escaped") instanceof JsonNode);
93
94         JSONAssert.assertEquals(getJson("free-form.json"), mapper.writeValueAsString(output.get("my-json-escaped")),
95                 false);
96     }
97
98     @Test
99     public final void convertInputMapValuesTest() {
100         MsoHeatUtils utils = new MsoHeatUtils();
101         Map<String, Object> inputs = new HashMap<>();
102         Set<HeatTemplateParam> params = new HashSet<>();
103         HeatTemplate ht = new HeatTemplate();
104         HeatTemplateParam htp = new HeatTemplateParam();
105         htp.setParamName("vnf_name");
106         htp.setParamType("string");
107         params.add(htp);
108         inputs.put("vnf_name", "a_vnf_name");
109         htp = new HeatTemplateParam();
110         htp.setParamName("image_size");
111         htp.setParamType("number");
112         params.add(htp);
113         inputs.put("image_size", "1024");
114         htp = new HeatTemplateParam();
115         htp.setParamName("external");
116         htp.setParamType("boolean");
117         params.add(htp);
118         inputs.put("external", "false");
119         htp = new HeatTemplateParam();
120         htp.setParamName("oam_ips");
121         htp.setParamType("comma_delimited_list");
122         params.add(htp);
123         inputs.put("oam_ips", "a,b");
124         htp = new HeatTemplateParam();
125         htp.setParamName("oam_prefixes");
126         htp.setParamType("json");
127         params.add(htp);
128         String jsonEscInput = "[{\"prefix\": \"aValue\"}, {\"prefix\": \"aValue2\"}]";
129         inputs.put("oam_prefixes", jsonEscInput);
130         ht.setParameters(params);
131
132         Map<String, Object> output = utils.convertInputMap(inputs, ht);
133
134         assertEquals("a_vnf_name", output.get("vnf_name"));
135         assertEquals(1024, output.get("image_size"));
136         assertEquals(false, output.get("external"));
137         List<String> cdl = new ArrayList<>();
138         cdl.add(0, "a");
139         cdl.add(1, "b");
140         assertEquals(cdl, output.get("oam_ips"));
141         ObjectMapper JSON_MAPPER = new ObjectMapper();
142         JsonNode jn = null;
143         try {
144             jn = JSON_MAPPER.readTree(jsonEscInput);
145         } catch (Exception e) {
146         }
147         assertEquals(jn, output.get("oam_prefixes"));
148     }
149
150     @Test
151     public final void convertInputMapNullsTest() {
152         MsoHeatUtils utils = new MsoHeatUtils();
153         Map<String, Object> inputs = new HashMap<>();
154         Set<HeatTemplateParam> params = new HashSet<>();
155         HeatTemplate ht = new HeatTemplate();
156         HeatTemplateParam htp = new HeatTemplateParam();
157         htp.setParamName("vnf_name");
158         htp.setParamType("string");
159         params.add(htp);
160         inputs.put("vnf_name", null);
161         htp = new HeatTemplateParam();
162         htp.setParamName("image_size");
163         htp.setParamType("number");
164         params.add(htp);
165         inputs.put("image_size", null);
166         htp = new HeatTemplateParam();
167         htp.setParamName("external");
168         htp.setParamType("boolean");
169         params.add(htp);
170         inputs.put("external", null);
171         htp = new HeatTemplateParam();
172         htp.setParamName("oam_ips");
173         htp.setParamType("comma_delimited_list");
174         params.add(htp);
175         inputs.put("oam_ips", null);
176         htp = new HeatTemplateParam();
177         htp.setParamName("oam_prefixes");
178         htp.setParamType("json");
179         params.add(htp);
180         inputs.put("oam_prefixes", null);
181         ht.setParameters(params);
182
183         Map<String, Object> output = utils.convertInputMap(inputs, ht);
184
185         assertNull(output.get("vnf_name"));
186         assertNull(output.get("image_size"));
187         assertEquals(false, output.get("external"));
188         assertNull(output.get("oam_ips"));
189         assertNull(output.get("oam_prefixes"));
190     }
191
192     private String getJson(String filename) throws IOException {
193         return new String(Files.readAllBytes(Paths.get("src/test/resources/__files/MsoHeatUtils/" + filename)));
194     }
195
196 }