Merge "Copy files for docker image in packages/docker/pom"
[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  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.policy.pdp.rest.api.utils.test;
22
23
24 import static org.junit.Assert.assertFalse;
25 import static org.junit.Assert.assertTrue;
26
27 import javax.json.Json;
28 import javax.json.JsonArray;
29 import javax.json.JsonObject;
30
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                 
43                 JsonObject jsonObjAttrGood = Json.createObjectBuilder().add("attributeName", "success")
44                                 .add("type", "REST")
45                                 .add("method", "GET")
46                                 .add("url", "http://foobar.com")
47                                 .add("body", "foobody")
48                                 .build();
49                 
50                 JsonObject jsonObjAttrNull = Json.createObjectBuilder().add("attributeName", "").build();
51                 JsonObject jsonObjAttrBad = Json.createObjectBuilder().add("attributeName", "succ ess").build();
52                 JsonObject jsonObjectMissingAttrName = Json.createObjectBuilder().add("foo", "bar").build();
53         
54                 
55                 assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGood, dictonaryAction).contains("success"));
56                 assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrNull, dictonaryAction).contains("No Attribute Name provided"));
57                 assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrBad, dictonaryAction).contains("Invalid Attribute Name"));
58                 assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjectMissingAttrName, dictonaryAction).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", "")
66                                 .add("method", "GET")
67                                 .add("url", "http://foobar.com")
68                                 .add("body", "foobody")
69                                 .build();
70                 assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction).contains("No Type provided"));
71                 
72                         //missing type
73                 jsonObjAttrGoodTemp = Json.createObjectBuilder().add("attributeName", "success")
74                                 .add("method", "GET")
75                                 .add("url", "http://foobar.com")
76                                 .add("body", "foobody")
77                                 .build();
78                 
79                 assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction).contains("Missing type key in the dictionaryJson parameter"));
80                 
81                         //invalid type
82                 jsonObjAttrGoodTemp = Json.createObjectBuilder().add("attributeName", "success")
83                                 .add("type", "INVALID")
84                                 .add("method", "GET")
85                                 .add("url", "http://foobar.com")
86                                 .add("body", "foobody")
87                                 .build();
88                 
89                 assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction).contains("Invalid Type value"));
90                 
91                         /* "method" parameter variations. */
92                 jsonObjAttrGoodTemp = jsonObjAttrGood;
93                 
94                         //null/empty method
95                 jsonObjAttrGoodTemp = Json.createObjectBuilder().add("attributeName", "success")
96                                 .add("type", "REST")
97                                 .add("method", "")
98                                 .add("url", "http://foobar.com")
99                                 .add("body", "foobody")
100                                 .build();
101                 assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction).contains("No Method provided"));
102
103                         //missing method
104                 jsonObjAttrGoodTemp = Json.createObjectBuilder().add("attributeName", "success")
105                                 .add("type", "REST")
106                                 .add("url", "http://foobar.com")
107                                 .add("body", "foobody")
108                                 .build();
109                 assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction).contains("Missing method key in the dictionaryJson parameter"));           
110
111                         //valid method
112                 jsonObjAttrGoodTemp = Json.createObjectBuilder().add("attributeName", "success")
113                                 .add("type", "REST")
114                                 .add("method", "GET")
115                                 .add("url", "http://foobar.com")
116                                 .add("body", "foobody")
117                                 .build();
118                 assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction).contains("success"));
119
120                 jsonObjAttrGoodTemp = Json.createObjectBuilder().add("attributeName", "success")
121                                 .add("type", "REST")
122                                 .add("method", "PUT")
123                                 .add("url", "http://foobar.com")
124                                 .add("body", "foobody")
125                                 .build();
126                 assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction).contains("success"));
127         
128                 jsonObjAttrGoodTemp = Json.createObjectBuilder().add("attributeName", "success")
129                                 .add("type", "REST")
130                                 .add("method", "POST")
131                                 .add("url", "http://foobar.com")
132                                 .add("body", "foobody")
133                                 .build();
134                 assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction).contains("success"));
135         
136                 
137                         //invalid method
138                 jsonObjAttrGoodTemp = Json.createObjectBuilder().add("attributeName", "success")
139                                 .add("type", "REST")
140                                 .add("method", "INVALID")
141                                 .add("url", "http://foobar.com")
142                                 .add("body", "foobody")
143                                 .build();
144                 assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction).contains("Invalid Method value"));
145                         
146                 
147                         /* url parameter variations */
148                 jsonObjAttrGoodTemp = jsonObjAttrGood;
149                 
150                         //null/empty url
151                 jsonObjAttrGoodTemp = Json.createObjectBuilder().add("attributeName", "success")
152                                 .add("type", "REST")
153                                 .add("method", "GET")
154                                 .add("url", "")
155                                 .add("body", "foobody")
156                                 .build();
157                 assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction).contains("No URL provided"));
158
159                         //missing url
160                 jsonObjAttrGoodTemp = Json.createObjectBuilder().add("attributeName", "success")
161                                 .add("type", "REST")
162                                 .add("method", "GET")
163                                 .add("body", "foobody")
164                                 .build();
165                 assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction).contains("Missing url key in the dictionaryJson parameter"));
166                         
167                         /* body parameter variations */
168                 jsonObjAttrGoodTemp = jsonObjAttrGood;
169                 
170                         //null body
171                 jsonObjAttrGoodTemp = Json.createObjectBuilder().add("attributeName", "success")
172                                 .add("type", "REST")
173                                 .add("method", "GET")
174                                 .add("url", "http://foobar.com")
175                                 .add("body", "")
176                                 .build();
177                 assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction).contains("No Body provided"));
178                 
179                         //missing body
180                 jsonObjAttrGoodTemp = Json.createObjectBuilder().add("attributeName", "success")
181                                 .add("type", "REST")
182                                 .add("method", "GET")
183                                 .add("url", "http://foobar.com")
184                                 .build();
185                 assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction).contains("Missing body key in the dictionaryJson parameter"));
186                                 
187                 
188                         /*headers parameter variations*/
189                 JsonObject jsonObjOption;
190                 JsonObject jsonObjNumber;
191                 JsonArray jsonArrayHeaders;
192
193                         //missing number headers                
194                 jsonObjOption = Json.createObjectBuilder().add("option","foobar").build();
195                 //jsonObjNumber = Json.createObjectBuilder().add("number","foobar").build();
196                 
197                 jsonArrayHeaders = Json.createArrayBuilder()
198                                 .add(jsonObjOption)
199                                 //.add(jsonObjNumber)
200                                 .build();
201                 
202                 jsonObjAttrGoodTemp = Json.createObjectBuilder().add("attributeName", "success")
203                                 .add("type", "REST")
204                                 .add("method", "GET")
205                                 .add("url", "http://foobar.com")
206                                 .add("body", "foobody")
207                                 .add("headers", jsonArrayHeaders)
208                                 .build();
209
210                 assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction).contains("Missing number key in the headers list of the dictionaryJson parameter."));
211                 
212                         //missing options headers               
213                 jsonObjOption = Json.createObjectBuilder().add("option","foobar").build();
214                 jsonObjNumber = Json.createObjectBuilder().add("number","foobar").build();
215                 
216                 jsonArrayHeaders = Json.createArrayBuilder()
217                                 //.add(jsonObjOption)
218                                 .add(jsonObjNumber)
219                                 .build();
220                 
221                 jsonObjAttrGoodTemp = Json.createObjectBuilder().add("attributeName", "success")
222                                 .add("type", "REST")
223                                 .add("method", "GET")
224                                 .add("url", "http://foobar.com")
225                                 .add("body", "foobody")
226                                 .add("headers", jsonArrayHeaders)
227                                 .build();
228
229                 assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction).contains("Missing option key in the headers list of the dictionaryJson parameter."));
230
231                         //null option
232                 jsonObjOption = Json.createObjectBuilder().add("option","").build();
233                 jsonObjNumber = Json.createObjectBuilder().add("number","foobar").build();
234                 
235                 jsonArrayHeaders = Json.createArrayBuilder()
236                                 .add(jsonObjOption)
237                                 .add(jsonObjNumber)
238                                 .build();
239                 
240                 jsonObjAttrGoodTemp = Json.createObjectBuilder().add("attributeName", "success")
241                                 .add("type", "REST")
242                                 .add("method", "GET")
243                                 .add("url", "http://foobar.com")
244                                 .add("body", "foobody")
245                                 .add("headers", jsonArrayHeaders)
246                                 .build();
247
248                 assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction).contains("Missing required Option value"));
249                 
250                         //null number can't be tested
251         
252         }
253         
254         @Test
255         public void testStringToJsonObject() {
256                 String jsonString = "{\"foo\":\"bar\"}";
257                 JsonObject obj = PolicyApiUtils.stringToJsonObject(jsonString);
258                 assertTrue(obj.get("foo").toString().equals("\"bar\""));
259         }
260         
261         @Test
262         public void testIsNumeric() {
263                 assertFalse(PolicyApiUtils.isNumeric("notNumeric"));
264                 assertTrue(PolicyApiUtils.isNumeric("2"));
265         }
266         
267         
268 }