MultiDimension JSON Array Parser
[ccsdk/sli/plugins.git] / restapi-call-node / provider / src / test / java / org / onap / ccsdk / sli / plugins / restapicall / TestJsonParser.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * openECOMP : SDN-C
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights
6  *                      reserved.
7  * ================================================================================
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  *      http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  * ============LICENSE_END=========================================================
20  */
21
22 package org.onap.ccsdk.sli.plugins.restapicall;
23
24 import static org.junit.Assert.assertEquals;
25 import java.io.IOException;
26 import java.nio.file.Files;
27 import java.nio.file.Paths;
28 import java.util.Map;
29 import org.junit.Test;
30 import org.onap.ccsdk.sli.core.sli.SvcLogicException;
31
32 public class TestJsonParser {
33
34     @Test
35     public void test() throws SvcLogicException, IOException {
36         String path = "src/test/resources/test.json";
37         String content = new String(Files.readAllBytes(Paths.get(path)));
38         Map<String, String> mm = JsonParser.convertToProperties(content);
39         assertEquals("Server1", mm.get("equipment-data[0].equipment-id"));
40         assertEquals("1600000", mm.get("equipment-data[0].max-server-speed"));
41         assertEquals("2", mm.get("equipment-data[0].number-primary-servers"));
42         assertEquals("4", mm.get("equipment-data[0].server-count"));
43         assertEquals("Server1", mm.get("equipment-data[0].server-id"));
44         assertEquals("Unknown", mm.get("equipment-data[0].server-model"));
45         assertEquals("Test-Value", mm.get("equipment-data[0].test-node.test-inner-node"));
46         assertEquals("1", mm.get("equipment-data_length"));
47         assertEquals("The provisioned access bandwidth is at or exceeds 50% of the total server capacity.",
48                 mm.get("message"));
49         assertEquals("VCE-Cust", mm.get("resource-rule.endpoint-position"));
50         assertEquals("Server", mm.get("resource-rule.equipment-level"));
51         assertEquals("max-server-speed * number-primary-servers", mm.get("resource-rule.hard-limit-expression"));
52         assertEquals("Bandwidth", mm.get("resource-rule.resource-name"));
53         assertEquals("DUMMY", mm.get("resource-rule.service-model"));
54         assertEquals("0.6 * max-server-speed * number-primary-servers", mm.get("resource-rule.soft-limit-expression"));
55         assertEquals("1605000", mm.get("resource-state.last-added"));
56         assertEquals("1920000", mm.get("resource-state.limit-value"));
57         assertEquals("1600000", mm.get("resource-state.threshold-value"));
58         assertEquals("1605000", mm.get("resource-state.used"));
59     }
60
61     @Test(expected = NullPointerException.class)
62     public void testNullString() throws SvcLogicException {
63         JsonParser.convertToProperties(null);
64     }
65
66     @Test
67     public void testJsonStringToCtxToplevelArray() throws Exception {
68         String path = "src/test/resources/ArrayMenu.json";
69         String content = new String(Files.readAllBytes(Paths.get(path)));
70         Map<String, String> mm = JsonParser.convertToProperties(content);
71
72         assertEquals("1000", mm.get("[0].calories"));
73         assertEquals("1", mm.get("[0].id"));
74         assertEquals("plain", mm.get("[0].name"));
75         assertEquals("pizza", mm.get("[0].type"));
76         assertEquals("true", mm.get("[0].vegetarian"));
77         assertEquals("2000", mm.get("[1].calories"));
78         assertEquals("2", mm.get("[1].id"));
79         assertEquals("Tuesday Special", mm.get("[1].name"));
80         assertEquals("1", mm.get("[1].topping[0].id"));
81         assertEquals("onion", mm.get("[1].topping[0].name"));
82         assertEquals("2", mm.get("[1].topping[1].id"));
83         assertEquals("pepperoni", mm.get("[1].topping[1].name"));
84         assertEquals("2", mm.get("[1].topping_length"));
85         assertEquals("pizza", mm.get("[1].type"));
86         assertEquals("false", mm.get("[1].vegetarian"));
87         assertEquals("1500", mm.get("[2].calories"));
88         assertEquals("3", mm.get("[2].id"));
89         assertEquals("House Special", mm.get("[2].name"));
90         assertEquals("3", mm.get("[2].topping[0].id"));
91         assertEquals("basil", mm.get("[2].topping[0].name"));
92         assertEquals("4", mm.get("[2].topping[1].id"));
93         assertEquals("fresh mozzarella", mm.get("[2].topping[1].name"));
94         assertEquals("5", mm.get("[2].topping[2].id"));
95         assertEquals("tomato", mm.get("[2].topping[2].name"));
96         assertEquals("3", mm.get("[2].topping_length"));
97         assertEquals("pizza", mm.get("[2].type"));
98         assertEquals("true", mm.get("[2].vegetarian"));
99         assertEquals("3", mm.get("_length"));
100     }
101
102     @Test
103     public void testJsonStringToCtx() throws Exception {
104         String path = "src/test/resources/ObjectMenu.json";
105         String content = new String(Files.readAllBytes(Paths.get(path)));
106         Map<String, String> mm = JsonParser.convertToProperties(content);
107         assertEquals("1000", mm.get("menu[0].calories"));
108         assertEquals("1", mm.get("menu[0].id"));
109         assertEquals("plain", mm.get("menu[0].name"));
110         assertEquals("pizza", mm.get("menu[0].type"));
111         assertEquals("true", mm.get("menu[0].vegetarian"));
112         assertEquals("2000", mm.get("menu[1].calories"));
113         assertEquals("2", mm.get("menu[1].id"));
114         assertEquals("Tuesday Special", mm.get("menu[1].name"));
115         assertEquals("1", mm.get("menu[1].topping[0].id"));
116         assertEquals("onion", mm.get("menu[1].topping[0].name"));
117         assertEquals("2", mm.get("menu[1].topping[1].id"));
118         assertEquals("pepperoni", mm.get("menu[1].topping[1].name"));
119         assertEquals("2", mm.get("menu[1].topping_length"));
120         assertEquals("pizza", mm.get("menu[1].type"));
121         assertEquals("false", mm.get("menu[1].vegetarian"));
122         assertEquals("1500", mm.get("menu[2].calories"));
123         assertEquals("3", mm.get("menu[2].id"));
124         assertEquals("House Special", mm.get("menu[2].name"));
125         assertEquals("3", mm.get("menu[2].topping[0].id"));
126         assertEquals("basil", mm.get("menu[2].topping[0].name"));
127         assertEquals("4", mm.get("menu[2].topping[1].id"));
128         assertEquals("fresh mozzarella", mm.get("menu[2].topping[1].name"));
129         assertEquals("5", mm.get("menu[2].topping[2].id"));
130         assertEquals("tomato", mm.get("menu[2].topping[2].name"));
131         assertEquals("3", mm.get("menu[2].topping_length"));
132         assertEquals("pizza", mm.get("menu[2].type"));
133         assertEquals("true", mm.get("menu[2].vegetarian"));
134         assertEquals("3", mm.get("menu_length"));
135     }
136
137     @Test
138     public void test1dJsonStringToCtx() throws Exception {
139         String path = "src/test/resources/1dArray.json";
140         String content = new String(Files.readAllBytes(Paths.get(path)));
141         Map<String, String> mm = JsonParser.convertToProperties(content);
142
143         System.out.println(mm);
144         assertEquals("6", mm.get("_length"));
145         assertEquals("apple", mm.get("[0]"));
146         assertEquals("orange", mm.get("[1]"));
147         assertEquals("banana", mm.get("[2]"));
148         assertEquals("squash", mm.get("[3]"));
149         assertEquals("broccoli", mm.get("[4]"));
150         assertEquals("cauliflower", mm.get("[5]"));
151     }
152
153     @Test
154     public void test2dJsonStringToCtx() throws Exception {
155         String path = "src/test/resources/2dArray.json";
156         String content = new String(Files.readAllBytes(Paths.get(path)));
157         Map<String, String> mm = JsonParser.convertToProperties(content);
158
159         // code will crash before these tests
160         assertEquals("apple", mm.get("[0][0]"));
161         assertEquals("orange", mm.get("[0][1]"));
162         assertEquals("banana", mm.get("[0][2]"));
163         assertEquals("3", mm.get("[0]_length"));
164
165         assertEquals("squash", mm.get("[1][0]"));
166         assertEquals("broccoli", mm.get("[1][1]"));
167         assertEquals("cauliflower", mm.get("[1][2]"));
168         assertEquals("3", mm.get("[1]_length"));
169         assertEquals("2", mm.get("_length"));
170     }
171
172     @Test
173     public void test3dJsonStringToCtx() throws Exception {
174         String path = "src/test/resources/3dArray.json";
175         String content = new String(Files.readAllBytes(Paths.get(path)));
176         Map<String, String> mm = JsonParser.convertToProperties(content);
177
178         assertEquals("3", mm.get("_length"));
179         assertEquals("1", mm.get("[0]_length"));
180         assertEquals("3", mm.get("[0][0]_length"));
181
182         assertEquals("2", mm.get("[1]_length"));
183         assertEquals("3", mm.get("[1][0]_length"));
184         assertEquals("3", mm.get("[1][1]_length"));
185
186         assertEquals("3", mm.get("[2]_length"));
187         assertEquals("3", mm.get("[2][0]_length"));
188         assertEquals("3", mm.get("[2][1]_length"));
189         assertEquals("3", mm.get("[2][2]_length"));
190
191         assertEquals("x", mm.get("[0][0][0]"));
192         assertEquals("y", mm.get("[0][0][1]"));
193         assertEquals("z", mm.get("[0][0][2]"));
194
195         assertEquals("abc", mm.get("[1][0][0]"));
196         assertEquals("def", mm.get("[1][0][1]"));
197         assertEquals("xyz", mm.get("[1][0][2]"));
198
199         assertEquals("123", mm.get("[1][1][0]"));
200         assertEquals("456", mm.get("[1][1][1]"));
201         assertEquals("789", mm.get("[1][1][2]"));
202
203         assertEquals("a", mm.get("[2][0][0]"));
204         assertEquals("b", mm.get("[2][0][1]"));
205         assertEquals("c", mm.get("[2][0][2]"));
206
207         assertEquals("d", mm.get("[2][1][0]"));
208         assertEquals("e", mm.get("[2][1][1]"));
209         assertEquals("f", mm.get("[2][1][2]"));
210
211         assertEquals("1", mm.get("[2][2][0]"));
212         assertEquals("2", mm.get("[2][2][1]"));
213         assertEquals("3", mm.get("[2][2][2]"));
214     }
215
216     @Test
217     public void testJsonWidgetStringToCtx() throws Exception {
218         String path = "src/test/resources/Widget.json";
219         String content = new String(Files.readAllBytes(Paths.get(path)));
220         Map<String, String> mm = JsonParser.convertToProperties(content);
221         assertEquals("false", mm.get("widget.debug"));
222         assertEquals("center", mm.get("widget.image.alignment"));
223         assertEquals("150", mm.get("widget.image.hOffset"));
224         assertEquals("moon", mm.get("widget.image.name"));
225         assertEquals("images/moon.png", mm.get("widget.image.src"));
226         assertEquals("150", mm.get("widget.image.vOffset"));
227         assertEquals("center", mm.get("widget.text.alignment"));
228         assertEquals("Click Me", mm.get("widget.text.data"));
229         assertEquals("350", mm.get("widget.text.hOffset"));
230         assertEquals("text1", mm.get("widget.text.name"));
231         assertEquals("21", mm.get("widget.text.size"));
232         assertEquals("bold", mm.get("widget.text.style"));
233         assertEquals("200", mm.get("widget.text.vOffset"));
234         assertEquals("300", mm.get("widget.window.height"));
235         assertEquals("main_window", mm.get("widget.window.name"));
236         assertEquals("ONAP Widget", mm.get("widget.window.title"));
237         assertEquals("200", mm.get("widget.window.width"));
238     }
239
240     @Test
241     public void testEmbeddedEscapedJsonJsonStringToCtx() throws Exception {
242         String path = "src/test/resources/EmbeddedEscapedJson.json";
243         String content = new String(Files.readAllBytes(Paths.get(path)));
244         Map<String, String> mm = JsonParser.convertToProperties(content);
245         assertEquals("escapedJsonObject", mm.get("input.parameters[0].name"));
246         assertEquals("[{\"id\":\"0.2.0.0/16\"},{\"id\":\"ge04::/64\"}]", mm.get("input.parameters[0].value"));
247         assertEquals("Hello/World", mm.get("input.parameters[1].value"));
248         assertEquals("resourceName", mm.get("input.parameters[2].name"));
249         assertEquals("The\t\"Best\"\tName", mm.get("input.parameters[2].value"));
250         assertEquals("3", mm.get("input.parameters_length"));
251
252         // Break the embedded json object into properties
253         mm = JsonParser.convertToProperties(mm.get("input.parameters[0].value"));
254         assertEquals("0.2.0.0/16", mm.get("[0].id"));
255         assertEquals("ge04::/64", mm.get("[1].id"));
256         assertEquals("2", mm.get("_length"));
257     }
258
259 }