Remove useless imports and vars
[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.junit.Test;
32 import org.onap.policy.pdp.rest.api.utils.PolicyApiUtils;
33
34 public class PolicyApiUtilsTest {
35
36     @Test
37     public void testValidateDirectoryJsonFields() {
38
39         String dictonaryAction = "Action";
40
41         JsonObject jsonObjAttrGood = Json.createObjectBuilder().add("attributeName", "success")
42                 .add("type", "REST").add("method", "GET").add("url", "http://foobar.com")
43                 .add("body", "foobody").build();
44
45         JsonObject jsonObjAttrNull = Json.createObjectBuilder().add("attributeName", "").build();
46         JsonObject jsonObjAttrBad =
47                 Json.createObjectBuilder().add("attributeName", "succ ess").build();
48         JsonObject jsonObjectMissingAttrName = Json.createObjectBuilder().add("foo", "bar").build();
49
50         assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGood, dictonaryAction)
51                 .contains("success"));
52         assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrNull, dictonaryAction)
53                 .contains("No Attribute Name provided"));
54         assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrBad, dictonaryAction)
55                 .contains("Invalid Attribute Name"));
56         assertTrue(PolicyApiUtils
57                 .validateDictionaryJsonFields(jsonObjectMissingAttrName, dictonaryAction)
58                 .contains("Missing attributeName"));
59
60         /* "type" parameter variations. */
61         JsonObject jsonObjAttrGoodTemp = jsonObjAttrGood;
62
63         // null/empty type
64         jsonObjAttrGoodTemp = Json.createObjectBuilder().add("attributeName", "success")
65                 .add("type", "").add("method", "GET").add("url", "http://foobar.com")
66                 .add("body", "foobody").build();
67         assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction)
68                 .contains("No Type provided"));
69
70         // missing type
71         jsonObjAttrGoodTemp =
72                 Json.createObjectBuilder().add("attributeName", "success").add("method", "GET")
73                         .add("url", "http://foobar.com").add("body", "foobody").build();
74
75         assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction)
76                 .contains("Missing type key in the dictionaryJson parameter"));
77
78         // invalid type
79         jsonObjAttrGoodTemp = Json.createObjectBuilder().add("attributeName", "success")
80                 .add("type", "INVALID").add("method", "GET").add("url", "http://foobar.com")
81                 .add("body", "foobody").build();
82
83         assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction)
84                 .contains("Invalid Type value"));
85
86         /* "method" parameter variations. */
87         jsonObjAttrGoodTemp = jsonObjAttrGood;
88
89         // null/empty method
90         jsonObjAttrGoodTemp = Json.createObjectBuilder().add("attributeName", "success")
91                 .add("type", "REST").add("method", "").add("url", "http://foobar.com")
92                 .add("body", "foobody").build();
93         assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction)
94                 .contains("No Method provided"));
95
96         // missing method
97         jsonObjAttrGoodTemp = Json.createObjectBuilder().add("attributeName", "success")
98                 .add("type", "REST").add("url", "http://foobar.com").add("body", "foobody").build();
99         assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction)
100                 .contains("Missing method key in the dictionaryJson parameter"));
101
102         // valid method
103         jsonObjAttrGoodTemp = Json.createObjectBuilder().add("attributeName", "success")
104                 .add("type", "REST").add("method", "GET").add("url", "http://foobar.com")
105                 .add("body", "foobody").build();
106         assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction)
107                 .contains("success"));
108
109         jsonObjAttrGoodTemp = Json.createObjectBuilder().add("attributeName", "success")
110                 .add("type", "REST").add("method", "PUT").add("url", "http://foobar.com")
111                 .add("body", "foobody").build();
112         assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction)
113                 .contains("success"));
114
115         jsonObjAttrGoodTemp = Json.createObjectBuilder().add("attributeName", "success")
116                 .add("type", "REST").add("method", "POST").add("url", "http://foobar.com")
117                 .add("body", "foobody").build();
118         assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction)
119                 .contains("success"));
120
121
122         // invalid method
123         jsonObjAttrGoodTemp = Json.createObjectBuilder().add("attributeName", "success")
124                 .add("type", "REST").add("method", "INVALID").add("url", "http://foobar.com")
125                 .add("body", "foobody").build();
126         assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction)
127                 .contains("Invalid Method value"));
128
129         /* url parameter variations */
130         jsonObjAttrGoodTemp = jsonObjAttrGood;
131
132         // null/empty url
133         jsonObjAttrGoodTemp =
134                 Json.createObjectBuilder().add("attributeName", "success").add("type", "REST")
135                         .add("method", "GET").add("url", "").add("body", "foobody").build();
136         assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction)
137                 .contains("No URL provided"));
138
139         // missing url
140         jsonObjAttrGoodTemp = Json.createObjectBuilder().add("attributeName", "success")
141                 .add("type", "REST").add("method", "GET").add("body", "foobody").build();
142         assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction)
143                 .contains("Missing url key in the dictionaryJson parameter"));
144
145         /* body parameter variations */
146         jsonObjAttrGoodTemp = jsonObjAttrGood;
147
148         // null body
149         jsonObjAttrGoodTemp = Json.createObjectBuilder().add("attributeName", "success")
150                 .add("type", "REST").add("method", "GET").add("url", "http://foobar.com")
151                 .add("body", "").build();
152         assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction)
153                 .contains("No Body provided"));
154
155         // missing body
156         jsonObjAttrGoodTemp = Json.createObjectBuilder().add("attributeName", "success")
157                 .add("type", "REST").add("method", "GET").add("url", "http://foobar.com").build();
158         assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction)
159                 .contains("Missing body key in the dictionaryJson parameter"));
160
161         /* headers parameter variations */
162         JsonObject jsonObjOption;
163         JsonObject jsonObjNumber;
164         JsonArray jsonArrayHeaders;
165
166         // missing number headers
167         jsonObjOption = Json.createObjectBuilder().add("option", "foobar").build();
168         // jsonObjNumber = Json.createObjectBuilder().add("number","foobar").build();
169
170         jsonArrayHeaders = Json.createArrayBuilder().add(jsonObjOption)
171                 // .add(jsonObjNumber)
172                 .build();
173
174         jsonObjAttrGoodTemp = Json.createObjectBuilder().add("attributeName", "success")
175                 .add("type", "REST").add("method", "GET").add("url", "http://foobar.com")
176                 .add("body", "foobody").add("headers", jsonArrayHeaders).build();
177
178         assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction)
179                 .contains(
180                         "Missing number key in the headers list of the dictionaryJson parameter."));
181
182         // missing options headers
183         jsonObjOption = Json.createObjectBuilder().add("option", "foobar").build();
184         jsonObjNumber = Json.createObjectBuilder().add("number", "foobar").build();
185
186         jsonArrayHeaders = Json.createArrayBuilder()
187                 // .add(jsonObjOption)
188                 .add(jsonObjNumber).build();
189
190         jsonObjAttrGoodTemp = Json.createObjectBuilder().add("attributeName", "success")
191                 .add("type", "REST").add("method", "GET").add("url", "http://foobar.com")
192                 .add("body", "foobody").add("headers", jsonArrayHeaders).build();
193
194         assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction)
195                 .contains(
196                         "Missing option key in the headers list of the dictionaryJson parameter."));
197
198         // null option
199         jsonObjOption = Json.createObjectBuilder().add("option", "").build();
200         jsonObjNumber = Json.createObjectBuilder().add("number", "foobar").build();
201
202         jsonArrayHeaders = Json.createArrayBuilder().add(jsonObjOption).add(jsonObjNumber).build();
203
204         jsonObjAttrGoodTemp = Json.createObjectBuilder().add("attributeName", "success")
205                 .add("type", "REST").add("method", "GET").add("url", "http://foobar.com")
206                 .add("body", "foobody").add("headers", jsonArrayHeaders).build();
207
208         assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction)
209                 .contains("Missing required Option value"));
210
211         // null number can't be tested
212     }
213
214     @Test
215     public void testStringToJsonObject() {
216         String jsonString = "{\"foo\":\"bar\"}";
217         JsonObject obj = PolicyApiUtils.stringToJsonObject(jsonString);
218         assertTrue(obj.get("foo").toString().equals("\"bar\""));
219     }
220
221     @Test
222     public void testIsNumeric() {
223         assertFalse(PolicyApiUtils.isNumeric("notNumeric"));
224         assertTrue(PolicyApiUtils.isNumeric("2"));
225     }
226 }