2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights
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
12 * http://www.apache.org/licenses/LICENSE-2.0
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=========================================================
22 package org.onap.ccsdk.sli.plugins.restapicall;
24 import static org.junit.Assert.assertEquals;
25 import java.io.IOException;
26 import java.nio.file.Files;
27 import java.nio.file.Paths;
29 import org.junit.Test;
30 import org.onap.ccsdk.sli.core.sli.SvcLogicException;
32 public class TestJsonParser {
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.",
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"));
61 @Test(expected = NullPointerException.class)
62 public void testNullString() throws SvcLogicException {
63 JsonParser.convertToProperties(null);
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 assertEquals("plain", mm.get("name"));
72 assertEquals("true", mm.get("vegetarian"));
73 assertEquals("1", mm.get("id"));
74 assertEquals("1000", mm.get("calories"));
75 assertEquals("pizza", mm.get("type"));
77 // The below statements are how I expected it to work, but it does not work this way
79 assertEquals("1000", mm.get("[0].calories"));
80 assertEquals("1", mm.get("[0].id"));
81 assertEquals("plain", mm.get("[0].name"));
82 assertEquals("pizza", mm.get("[0].type"));
83 assertEquals("true", mm.get("[0].vegetarian"));
84 assertEquals("2000", mm.get("[1].calories"));
85 assertEquals("2", mm.get("[1].id"));
86 assertEquals("Tuesday Special", mm.get("[1].name"));
87 assertEquals("1", mm.get("[1].topping[0].id"));
88 assertEquals("onion", mm.get("[1].topping[0].name"));
89 assertEquals("2", mm.get("[1].topping[1].id"));
90 assertEquals("pepperoni", mm.get("[1].topping[1].name"));
91 assertEquals("2", mm.get("[1].topping_length"));
92 assertEquals("pizza", mm.get("[1].type"));
93 assertEquals("false", mm.get("[1].vegetarian"));
94 assertEquals("1500", mm.get("[2].calories"));
95 assertEquals("3", mm.get("[2].id"));
96 assertEquals("House Special", mm.get("[2].name"));
97 assertEquals("3", mm.get("[2].topping[0].id"));
98 assertEquals("basil", mm.get("[2].topping[0].name"));
99 assertEquals("4", mm.get("[2].topping[1].id"));
100 assertEquals("fresh mozzarella", mm.get("[2].topping[1].name"));
101 assertEquals("5", mm.get("[2].topping[2].id"));
102 assertEquals("tomato", mm.get("[2].topping[2].name"));
103 assertEquals("3", mm.get("[2].topping_length"));
104 assertEquals("pizza", mm.get("[2].type"));
105 assertEquals("true", mm.get("[2].vegetarian"));
106 assertEquals("3", mm.get("_length"));
111 public void testJsonStringToCtx() throws Exception {
112 String path = "src/test/resources/ObjectMenu.json";
113 String content = new String(Files.readAllBytes(Paths.get(path)));
114 Map<String, String> mm = JsonParser.convertToProperties(content);
115 assertEquals("1000", mm.get("menu[0].calories"));
116 assertEquals("1", mm.get("menu[0].id"));
117 assertEquals("plain", mm.get("menu[0].name"));
118 assertEquals("pizza", mm.get("menu[0].type"));
119 assertEquals("true", mm.get("menu[0].vegetarian"));
120 assertEquals("2000", mm.get("menu[1].calories"));
121 assertEquals("2", mm.get("menu[1].id"));
122 assertEquals("Tuesday Special", mm.get("menu[1].name"));
123 assertEquals("1", mm.get("menu[1].topping[0].id"));
124 assertEquals("onion", mm.get("menu[1].topping[0].name"));
125 assertEquals("2", mm.get("menu[1].topping[1].id"));
126 assertEquals("pepperoni", mm.get("menu[1].topping[1].name"));
127 assertEquals("2", mm.get("menu[1].topping_length"));
128 assertEquals("pizza", mm.get("menu[1].type"));
129 assertEquals("false", mm.get("menu[1].vegetarian"));
130 assertEquals("1500", mm.get("menu[2].calories"));
131 assertEquals("3", mm.get("menu[2].id"));
132 assertEquals("House Special", mm.get("menu[2].name"));
133 assertEquals("3", mm.get("menu[2].topping[0].id"));
134 assertEquals("basil", mm.get("menu[2].topping[0].name"));
135 assertEquals("4", mm.get("menu[2].topping[1].id"));
136 assertEquals("fresh mozzarella", mm.get("menu[2].topping[1].name"));
137 assertEquals("5", mm.get("menu[2].topping[2].id"));
138 assertEquals("tomato", mm.get("menu[2].topping[2].name"));
139 assertEquals("3", mm.get("menu[2].topping_length"));
140 assertEquals("pizza", mm.get("menu[2].type"));
141 assertEquals("true", mm.get("menu[2].vegetarian"));
142 assertEquals("3", mm.get("menu_length"));
145 @Test(expected = SvcLogicException.class) // current behavior is multidimensional arrays are not supported
146 public void test2dJsonStringToCtx() throws Exception {
147 String path = "src/test/resources/2dArray.json";
148 String content = new String(Files.readAllBytes(Paths.get(path)));
149 Map<String, String> mm = JsonParser.convertToProperties(content);
151 // code will crash before these tests
152 assertEquals("apple", mm.get("[0][0]"));
153 assertEquals("orange", mm.get("[0][1]"));
154 assertEquals("banana", mm.get("[0][2]"));
155 assertEquals("3", mm.get("[0]_length"));
156 assertEquals("squash", mm.get("[1][0]"));
157 assertEquals("broccoli", mm.get("[1][1]"));
158 assertEquals("cauliflower", mm.get("[1][2]"));
159 assertEquals("3", mm.get("[1]_length"));
160 assertEquals("2", mm.get("_length"));
163 @Test(expected = SvcLogicException.class) // current behavior is multidimensional arrays are not supported
164 public void test3dJsonStringToCtx() throws Exception {
165 String path = "src/test/resources/3dArray.json";
166 String content = new String(Files.readAllBytes(Paths.get(path)));
167 Map<String, String> mm = JsonParser.convertToProperties(content);
169 // code will crash before these tests
170 assertEquals("a", mm.get("[0][0][0]"));
171 assertEquals("b", mm.get("[0][0][1]"));
172 assertEquals("c", mm.get("[0][0][2]"));
173 assertEquals("3", mm.get("[0][0]_length"));
174 assertEquals("d", mm.get("[0][1][0]"));
175 assertEquals("e", mm.get("[0][1][1]"));
176 assertEquals("f", mm.get("[0][1][2]"));
177 assertEquals("3", mm.get("[0][1]_length"));
178 assertEquals("2", mm.get("[0]_length"));
179 assertEquals("x", mm.get("[1][0][0]"));
180 assertEquals("y", mm.get("[1][0][1]"));
181 assertEquals("z", mm.get("[1][0][2]"));
182 assertEquals("3", mm.get("[1][0]_length"));
183 assertEquals("1", mm.get("[1]_length"));
184 assertEquals("2", mm.get("_length"));
188 public void testJsonWidgetStringToCtx() throws Exception {
189 String path = "src/test/resources/Widget.json";
190 String content = new String(Files.readAllBytes(Paths.get(path)));
191 Map<String, String> mm = JsonParser.convertToProperties(content);
192 assertEquals("false", mm.get("widget.debug"));
193 assertEquals("center", mm.get("widget.image.alignment"));
194 assertEquals("150", mm.get("widget.image.hOffset"));
195 assertEquals("moon", mm.get("widget.image.name"));
196 assertEquals("images/moon.png", mm.get("widget.image.src"));
197 assertEquals("150", mm.get("widget.image.vOffset"));
198 assertEquals("center", mm.get("widget.text.alignment"));
199 assertEquals("Click Me", mm.get("widget.text.data"));
200 assertEquals("350", mm.get("widget.text.hOffset"));
201 assertEquals("text1", mm.get("widget.text.name"));
202 assertEquals("21", mm.get("widget.text.size"));
203 assertEquals("bold", mm.get("widget.text.style"));
204 assertEquals("200", mm.get("widget.text.vOffset"));
205 assertEquals("300", mm.get("widget.window.height"));
206 assertEquals("main_window", mm.get("widget.window.name"));
207 assertEquals("ONAP Widget", mm.get("widget.window.title"));
208 assertEquals("200", mm.get("widget.window.width"));
212 public void testEmbeddedEscapedJsonJsonStringToCtx() throws Exception {
213 String path = "src/test/resources/EmbeddedEscapedJson.json";
214 String content = new String(Files.readAllBytes(Paths.get(path)));
215 Map<String, String> mm = JsonParser.convertToProperties(content);
216 assertEquals("escapedJsonObject", mm.get("input.parameters[0].name"));
217 assertEquals("[{\"id\":\"0.2.0.0/16\"},{\"id\":\"ge04::/64\"}]", mm.get("input.parameters[0].value"));
218 assertEquals("Hello/World", mm.get("input.parameters[1].value"));
219 assertEquals("resourceName", mm.get("input.parameters[2].name"));
220 assertEquals("The\t\"Best\"\tName", mm.get("input.parameters[2].value"));
221 assertEquals("3", mm.get("input.parameters_length"));
223 // Break the embedded json object into properties
224 mm = JsonParser.convertToProperties(mm.get("input.parameters[0].value"));
225 assertEquals("0.2.0.0/16", mm.get("id"));
226 // assertEquals("ge04::/64", mm.get("id")); this second value gets lost