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);
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"));
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"));
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);
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"));
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);
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"));
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"));
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"));
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"));