2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2018 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Modifications Copyright (C) 2019 Samsung
8 * ================================================================================
9 * Licensed under the Apache License, Version 2.0 (the "License");
10 * you may not use this file except in compliance with the License.
11 * You may obtain a copy of the License at
13 * http://www.apache.org/licenses/LICENSE-2.0
15 * Unless required by applicable law or agreed to in writing, software
16 * distributed under the License is distributed on an "AS IS" BASIS,
17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
20 * ============LICENSE_END=========================================================
23 package org.onap.policy.pdp.rest.api.utils.test;
26 import static org.junit.Assert.assertFalse;
27 import static org.junit.Assert.assertTrue;
28 import javax.json.Json;
29 import javax.json.JsonArray;
30 import javax.json.JsonObject;
31 import org.json.JSONObject;
32 import org.junit.Test;
33 import org.onap.policy.pdp.rest.api.utils.PolicyApiUtils;
35 public class PolicyApiUtilsTest {
38 public void testValidateDirectoryJsonFields() {
40 String dictonaryAction = "Action";
42 JsonObject jsonObjAttrGood = Json.createObjectBuilder().add("attributeName", "success")
43 .add("type", "REST").add("method", "GET").add("url", "http://foobar.com")
44 .add("body", "foobody").build();
46 JsonObject jsonObjAttrNull = Json.createObjectBuilder().add("attributeName", "").build();
47 JsonObject jsonObjAttrBad =
48 Json.createObjectBuilder().add("attributeName", "succ ess").build();
49 JsonObject jsonObjectMissingAttrName = Json.createObjectBuilder().add("foo", "bar").build();
51 assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGood, dictonaryAction)
52 .contains("success"));
53 assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrNull, dictonaryAction)
54 .contains("No Attribute Name provided"));
55 assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrBad, dictonaryAction)
56 .contains("Invalid Attribute Name"));
57 assertTrue(PolicyApiUtils
58 .validateDictionaryJsonFields(jsonObjectMissingAttrName, dictonaryAction)
59 .contains("Missing attributeName"));
61 /* "type" parameter variations. */
62 JsonObject jsonObjAttrGoodTemp = jsonObjAttrGood;
65 jsonObjAttrGoodTemp = Json.createObjectBuilder().add("attributeName", "success")
66 .add("type", "").add("method", "GET").add("url", "http://foobar.com")
67 .add("body", "foobody").build();
68 assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction)
69 .contains("No Type provided"));
73 Json.createObjectBuilder().add("attributeName", "success").add("method", "GET")
74 .add("url", "http://foobar.com").add("body", "foobody").build();
76 assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction)
77 .contains("Missing type key in the dictionaryJson parameter"));
80 jsonObjAttrGoodTemp = Json.createObjectBuilder().add("attributeName", "success")
81 .add("type", "INVALID").add("method", "GET").add("url", "http://foobar.com")
82 .add("body", "foobody").build();
84 assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction)
85 .contains("Invalid Type value"));
87 /* "method" parameter variations. */
88 jsonObjAttrGoodTemp = jsonObjAttrGood;
91 jsonObjAttrGoodTemp = Json.createObjectBuilder().add("attributeName", "success")
92 .add("type", "REST").add("method", "").add("url", "http://foobar.com")
93 .add("body", "foobody").build();
94 assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction)
95 .contains("No Method provided"));
98 jsonObjAttrGoodTemp = Json.createObjectBuilder().add("attributeName", "success")
99 .add("type", "REST").add("url", "http://foobar.com").add("body", "foobody").build();
100 assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction)
101 .contains("Missing method key in the dictionaryJson parameter"));
104 jsonObjAttrGoodTemp = Json.createObjectBuilder().add("attributeName", "success")
105 .add("type", "REST").add("method", "GET").add("url", "http://foobar.com")
106 .add("body", "foobody").build();
107 assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction)
108 .contains("success"));
110 jsonObjAttrGoodTemp = Json.createObjectBuilder().add("attributeName", "success")
111 .add("type", "REST").add("method", "PUT").add("url", "http://foobar.com")
112 .add("body", "foobody").build();
113 assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction)
114 .contains("success"));
116 jsonObjAttrGoodTemp = Json.createObjectBuilder().add("attributeName", "success")
117 .add("type", "REST").add("method", "POST").add("url", "http://foobar.com")
118 .add("body", "foobody").build();
119 assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction)
120 .contains("success"));
124 jsonObjAttrGoodTemp = Json.createObjectBuilder().add("attributeName", "success")
125 .add("type", "REST").add("method", "INVALID").add("url", "http://foobar.com")
126 .add("body", "foobody").build();
127 assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction)
128 .contains("Invalid Method value"));
130 /* url parameter variations */
131 jsonObjAttrGoodTemp = jsonObjAttrGood;
134 jsonObjAttrGoodTemp =
135 Json.createObjectBuilder().add("attributeName", "success").add("type", "REST")
136 .add("method", "GET").add("url", "").add("body", "foobody").build();
137 assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction)
138 .contains("No URL provided"));
141 jsonObjAttrGoodTemp = Json.createObjectBuilder().add("attributeName", "success")
142 .add("type", "REST").add("method", "GET").add("body", "foobody").build();
143 assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction)
144 .contains("Missing url key in the dictionaryJson parameter"));
146 /* body parameter variations */
147 jsonObjAttrGoodTemp = jsonObjAttrGood;
150 jsonObjAttrGoodTemp = Json.createObjectBuilder().add("attributeName", "success")
151 .add("type", "REST").add("method", "GET").add("url", "http://foobar.com")
152 .add("body", "").build();
153 assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction)
154 .contains("No Body provided"));
157 jsonObjAttrGoodTemp = Json.createObjectBuilder().add("attributeName", "success")
158 .add("type", "REST").add("method", "GET").add("url", "http://foobar.com").build();
159 assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction)
160 .contains("Missing body key in the dictionaryJson parameter"));
162 /* headers parameter variations */
163 JsonObject jsonObjOption;
164 JsonObject jsonObjNumber;
165 JsonArray jsonArrayHeaders;
167 // missing number headers
168 jsonObjOption = Json.createObjectBuilder().add("option", "foobar").build();
169 // jsonObjNumber = Json.createObjectBuilder().add("number","foobar").build();
171 jsonArrayHeaders = Json.createArrayBuilder().add(jsonObjOption)
172 // .add(jsonObjNumber)
175 jsonObjAttrGoodTemp = Json.createObjectBuilder().add("attributeName", "success")
176 .add("type", "REST").add("method", "GET").add("url", "http://foobar.com")
177 .add("body", "foobody").add("headers", jsonArrayHeaders).build();
179 assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction)
181 "Missing number key in the headers list of the dictionaryJson parameter."));
183 // missing options headers
184 jsonObjOption = Json.createObjectBuilder().add("option", "foobar").build();
185 jsonObjNumber = Json.createObjectBuilder().add("number", "foobar").build();
187 jsonArrayHeaders = Json.createArrayBuilder()
188 // .add(jsonObjOption)
189 .add(jsonObjNumber).build();
191 jsonObjAttrGoodTemp = Json.createObjectBuilder().add("attributeName", "success")
192 .add("type", "REST").add("method", "GET").add("url", "http://foobar.com")
193 .add("body", "foobody").add("headers", jsonArrayHeaders).build();
195 assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction)
197 "Missing option key in the headers list of the dictionaryJson parameter."));
200 jsonObjOption = Json.createObjectBuilder().add("option", "").build();
201 jsonObjNumber = Json.createObjectBuilder().add("number", "foobar").build();
203 jsonArrayHeaders = Json.createArrayBuilder().add(jsonObjOption).add(jsonObjNumber).build();
205 jsonObjAttrGoodTemp = Json.createObjectBuilder().add("attributeName", "success")
206 .add("type", "REST").add("method", "GET").add("url", "http://foobar.com")
207 .add("body", "foobody").add("headers", jsonArrayHeaders).build();
209 assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction)
210 .contains("Missing required Option value"));
212 // null number can't be tested
216 public void testStringToJsonObject() {
217 String jsonString = "{\"foo\":\"bar\"}";
218 JsonObject obj = PolicyApiUtils.stringToJsonObject(jsonString);
219 assertTrue(obj.get("foo").toString().equals("\"bar\""));
223 public void testIsNumeric() {
224 assertFalse(PolicyApiUtils.isNumeric("notNumeric"));
225 assertTrue(PolicyApiUtils.isNumeric("2"));