d1da554d9d7ce12aade7a4cb7d800109fda4d393
[policy/engine.git] / ONAP-PDP-REST / src / test / java / org / onap / policy / pdp / rest / api / utils / test / PolicyApiUtilsTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP-PDP-REST
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
12  *
13  *      http://www.apache.org/licenses/LICENSE-2.0
14  *
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=========================================================
21  */
22
23 package org.onap.policy.pdp.rest.api.utils.test;
24
25
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;
34
35 public class PolicyApiUtilsTest {
36
37     @Test
38     public void testValidateDirectoryJsonFields() {
39
40         String dictonaryAction = "Action";
41
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();
45
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();
50
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"));
60
61         /* "type" parameter variations. */
62         JsonObject jsonObjAttrGoodTemp = jsonObjAttrGood;
63
64         // null/empty type
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"));
70
71         // missing type
72         jsonObjAttrGoodTemp =
73                 Json.createObjectBuilder().add("attributeName", "success").add("method", "GET")
74                         .add("url", "http://foobar.com").add("body", "foobody").build();
75
76         assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction)
77                 .contains("Missing type key in the dictionaryJson parameter"));
78
79         // invalid type
80         jsonObjAttrGoodTemp = Json.createObjectBuilder().add("attributeName", "success")
81                 .add("type", "INVALID").add("method", "GET").add("url", "http://foobar.com")
82                 .add("body", "foobody").build();
83
84         assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction)
85                 .contains("Invalid Type value"));
86
87         /* "method" parameter variations. */
88         jsonObjAttrGoodTemp = jsonObjAttrGood;
89
90         // null/empty method
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"));
96
97         // missing method
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"));
102
103         // valid method
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"));
109
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"));
115
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"));
121
122
123         // invalid method
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"));
129
130         /* url parameter variations */
131         jsonObjAttrGoodTemp = jsonObjAttrGood;
132
133         // null/empty url
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"));
139
140         // missing url
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"));
145
146         /* body parameter variations */
147         jsonObjAttrGoodTemp = jsonObjAttrGood;
148
149         // null body
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"));
155
156         // missing body
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"));
161
162         /* headers parameter variations */
163         JsonObject jsonObjOption;
164         JsonObject jsonObjNumber;
165         JsonArray jsonArrayHeaders;
166
167         // missing number headers
168         jsonObjOption = Json.createObjectBuilder().add("option", "foobar").build();
169         // jsonObjNumber = Json.createObjectBuilder().add("number","foobar").build();
170
171         jsonArrayHeaders = Json.createArrayBuilder().add(jsonObjOption)
172                 // .add(jsonObjNumber)
173                 .build();
174
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();
178
179         assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction)
180                 .contains(
181                         "Missing number key in the headers list of the dictionaryJson parameter."));
182
183         // missing options headers
184         jsonObjOption = Json.createObjectBuilder().add("option", "foobar").build();
185         jsonObjNumber = Json.createObjectBuilder().add("number", "foobar").build();
186
187         jsonArrayHeaders = Json.createArrayBuilder()
188                 // .add(jsonObjOption)
189                 .add(jsonObjNumber).build();
190
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();
194
195         assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction)
196                 .contains(
197                         "Missing option key in the headers list of the dictionaryJson parameter."));
198
199         // null option
200         jsonObjOption = Json.createObjectBuilder().add("option", "").build();
201         jsonObjNumber = Json.createObjectBuilder().add("number", "foobar").build();
202
203         jsonArrayHeaders = Json.createArrayBuilder().add(jsonObjOption).add(jsonObjNumber).build();
204
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();
208
209         assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction)
210                 .contains("Missing required Option value"));
211
212         // null number can't be tested
213     }
214
215     @Test
216     public void testStringToJsonObject() {
217         String jsonString = "{\"foo\":\"bar\"}";
218         JsonObject obj = PolicyApiUtils.stringToJsonObject(jsonString);
219         assertTrue(obj.get("foo").toString().equals("\"bar\""));
220     }
221
222     @Test
223     public void testIsNumeric() {
224         assertFalse(PolicyApiUtils.isNumeric("notNumeric"));
225         assertTrue(PolicyApiUtils.isNumeric("2"));
226     }
227 }