569719d6c0f4ea45776aba2658c83ed8cfde82da
[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(expected = SvcLogicException.class) // current behavior is multidimensional arrays are not supported
138     public void test2dJsonStringToCtx() throws Exception {
139         String path = "src/test/resources/2dArray.json";
140         String content = new String(Files.readAllBytes(Paths.get(path)));
141         Map<String, String> mm = JsonParser.convertToProperties(content);
142
143         // code will crash before these tests
144         assertEquals("apple", mm.get("[0][0]"));
145         assertEquals("orange", mm.get("[0][1]"));
146         assertEquals("banana", mm.get("[0][2]"));
147         assertEquals("3", mm.get("[0]_length"));
148         assertEquals("squash", mm.get("[1][0]"));
149         assertEquals("broccoli", mm.get("[1][1]"));
150         assertEquals("cauliflower", mm.get("[1][2]"));
151         assertEquals("3", mm.get("[1]_length"));
152         assertEquals("2", mm.get("_length"));
153     }
154
155     @Test(expected = SvcLogicException.class) // current behavior is multidimensional arrays are not supported
156     public void test3dJsonStringToCtx() throws Exception {
157         String path = "src/test/resources/3dArray.json";
158         String content = new String(Files.readAllBytes(Paths.get(path)));
159         Map<String, String> mm = JsonParser.convertToProperties(content);
160
161         // code will crash before these tests
162         assertEquals("a", mm.get("[0][0][0]"));
163         assertEquals("b", mm.get("[0][0][1]"));
164         assertEquals("c", mm.get("[0][0][2]"));
165         assertEquals("3", mm.get("[0][0]_length"));
166         assertEquals("d", mm.get("[0][1][0]"));
167         assertEquals("e", mm.get("[0][1][1]"));
168         assertEquals("f", mm.get("[0][1][2]"));
169         assertEquals("3", mm.get("[0][1]_length"));
170         assertEquals("2", mm.get("[0]_length"));
171         assertEquals("x", mm.get("[1][0][0]"));
172         assertEquals("y", mm.get("[1][0][1]"));
173         assertEquals("z", mm.get("[1][0][2]"));
174         assertEquals("3", mm.get("[1][0]_length"));
175         assertEquals("1", mm.get("[1]_length"));
176         assertEquals("2", mm.get("_length"));
177     }
178
179     @Test
180     public void testJsonWidgetStringToCtx() throws Exception {
181         String path = "src/test/resources/Widget.json";
182         String content = new String(Files.readAllBytes(Paths.get(path)));
183         Map<String, String> mm = JsonParser.convertToProperties(content);
184         assertEquals("false", mm.get("widget.debug"));
185         assertEquals("center", mm.get("widget.image.alignment"));
186         assertEquals("150", mm.get("widget.image.hOffset"));
187         assertEquals("moon", mm.get("widget.image.name"));
188         assertEquals("images/moon.png", mm.get("widget.image.src"));
189         assertEquals("150", mm.get("widget.image.vOffset"));
190         assertEquals("center", mm.get("widget.text.alignment"));
191         assertEquals("Click Me", mm.get("widget.text.data"));
192         assertEquals("350", mm.get("widget.text.hOffset"));
193         assertEquals("text1", mm.get("widget.text.name"));
194         assertEquals("21", mm.get("widget.text.size"));
195         assertEquals("bold", mm.get("widget.text.style"));
196         assertEquals("200", mm.get("widget.text.vOffset"));
197         assertEquals("300", mm.get("widget.window.height"));
198         assertEquals("main_window", mm.get("widget.window.name"));
199         assertEquals("ONAP Widget", mm.get("widget.window.title"));
200         assertEquals("200", mm.get("widget.window.width"));
201     }
202
203     @Test
204     public void testEmbeddedEscapedJsonJsonStringToCtx() throws Exception {
205         String path = "src/test/resources/EmbeddedEscapedJson.json";
206         String content = new String(Files.readAllBytes(Paths.get(path)));
207         Map<String, String> mm = JsonParser.convertToProperties(content);
208         assertEquals("escapedJsonObject", mm.get("input.parameters[0].name"));
209         assertEquals("[{\"id\":\"0.2.0.0/16\"},{\"id\":\"ge04::/64\"}]", mm.get("input.parameters[0].value"));
210         assertEquals("Hello/World", mm.get("input.parameters[1].value"));
211         assertEquals("resourceName", mm.get("input.parameters[2].name"));
212         assertEquals("The\t\"Best\"\tName", mm.get("input.parameters[2].value"));
213         assertEquals("3", mm.get("input.parameters_length"));
214
215         // Break the embedded json object into properties
216         mm = JsonParser.convertToProperties(mm.get("input.parameters[0].value"));
217         assertEquals("0.2.0.0/16", mm.get("[0].id"));
218         assertEquals("ge04::/64", mm.get("[1].id"));
219     }
220
221 }