From: Jorge Hernandez Date: Tue, 6 Mar 2018 22:55:25 +0000 (+0000) Subject: Merge "PolicyApiUtils junits" X-Git-Tag: v1.2.0~88 X-Git-Url: https://gerrit.onap.org/r/gitweb?p=policy%2Fengine.git;a=commitdiff_plain;h=b2d7646daa4c1a15af8df0a5a915dbbda9a1b2ee;hp=47cf51f5ec5e618d1ca9e1e9607a40ddef9283d8 Merge "PolicyApiUtils junits" --- diff --git a/ONAP-PDP-REST/src/test/java/org/onap/policy/pdp/rest/api/utils/test/PolicyApiUtilsTest.java b/ONAP-PDP-REST/src/test/java/org/onap/policy/pdp/rest/api/utils/test/PolicyApiUtilsTest.java new file mode 100644 index 000000000..a38603a33 --- /dev/null +++ b/ONAP-PDP-REST/src/test/java/org/onap/policy/pdp/rest/api/utils/test/PolicyApiUtilsTest.java @@ -0,0 +1,268 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP-PDP-REST + * ================================================================================ + * Copyright (C) 2018 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.pdp.rest.api.utils.test; + + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import javax.json.Json; +import javax.json.JsonArray; +import javax.json.JsonObject; + +import org.json.JSONObject; +import org.junit.Test; +import org.onap.policy.pdp.rest.api.utils.PolicyApiUtils; + +public class PolicyApiUtilsTest { + + @Test + public void testValidateDirectoryJsonFields() { + + String dictonaryAction = "Action"; + + + JsonObject jsonObjAttrGood = Json.createObjectBuilder().add("attributeName", "success") + .add("type", "REST") + .add("method", "GET") + .add("url", "http://foobar.com") + .add("body", "foobody") + .build(); + + JsonObject jsonObjAttrNull = Json.createObjectBuilder().add("attributeName", "").build(); + JsonObject jsonObjAttrBad = Json.createObjectBuilder().add("attributeName", "succ ess").build(); + JsonObject jsonObjectMissingAttrName = Json.createObjectBuilder().add("foo", "bar").build(); + + + assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGood, dictonaryAction).contains("success")); + assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrNull, dictonaryAction).contains("No Attribute Name provided")); + assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrBad, dictonaryAction).contains("Invalid Attribute Name")); + assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjectMissingAttrName, dictonaryAction).contains("Missing attributeName")); + + /* "type" parameter variations. */ + JsonObject jsonObjAttrGoodTemp = jsonObjAttrGood; + + //null/empty type + jsonObjAttrGoodTemp = Json.createObjectBuilder().add("attributeName", "success") + .add("type", "") + .add("method", "GET") + .add("url", "http://foobar.com") + .add("body", "foobody") + .build(); + assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction).contains("No Type provided")); + + //missing type + jsonObjAttrGoodTemp = Json.createObjectBuilder().add("attributeName", "success") + .add("method", "GET") + .add("url", "http://foobar.com") + .add("body", "foobody") + .build(); + + assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction).contains("Missing type key in the dictionaryJson parameter")); + + //invalid type + jsonObjAttrGoodTemp = Json.createObjectBuilder().add("attributeName", "success") + .add("type", "INVALID") + .add("method", "GET") + .add("url", "http://foobar.com") + .add("body", "foobody") + .build(); + + assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction).contains("Invalid Type value")); + + /* "method" parameter variations. */ + jsonObjAttrGoodTemp = jsonObjAttrGood; + + //null/empty method + jsonObjAttrGoodTemp = Json.createObjectBuilder().add("attributeName", "success") + .add("type", "REST") + .add("method", "") + .add("url", "http://foobar.com") + .add("body", "foobody") + .build(); + assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction).contains("No Method provided")); + + //missing method + jsonObjAttrGoodTemp = Json.createObjectBuilder().add("attributeName", "success") + .add("type", "REST") + .add("url", "http://foobar.com") + .add("body", "foobody") + .build(); + assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction).contains("Missing method key in the dictionaryJson parameter")); + + //valid method + jsonObjAttrGoodTemp = Json.createObjectBuilder().add("attributeName", "success") + .add("type", "REST") + .add("method", "GET") + .add("url", "http://foobar.com") + .add("body", "foobody") + .build(); + assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction).contains("success")); + + jsonObjAttrGoodTemp = Json.createObjectBuilder().add("attributeName", "success") + .add("type", "REST") + .add("method", "PUT") + .add("url", "http://foobar.com") + .add("body", "foobody") + .build(); + assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction).contains("success")); + + jsonObjAttrGoodTemp = Json.createObjectBuilder().add("attributeName", "success") + .add("type", "REST") + .add("method", "POST") + .add("url", "http://foobar.com") + .add("body", "foobody") + .build(); + assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction).contains("success")); + + + //invalid method + jsonObjAttrGoodTemp = Json.createObjectBuilder().add("attributeName", "success") + .add("type", "REST") + .add("method", "INVALID") + .add("url", "http://foobar.com") + .add("body", "foobody") + .build(); + assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction).contains("Invalid Method value")); + + + /* url parameter variations */ + jsonObjAttrGoodTemp = jsonObjAttrGood; + + //null/empty url + jsonObjAttrGoodTemp = Json.createObjectBuilder().add("attributeName", "success") + .add("type", "REST") + .add("method", "GET") + .add("url", "") + .add("body", "foobody") + .build(); + assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction).contains("No URL provided")); + + //missing url + jsonObjAttrGoodTemp = Json.createObjectBuilder().add("attributeName", "success") + .add("type", "REST") + .add("method", "GET") + .add("body", "foobody") + .build(); + assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction).contains("Missing url key in the dictionaryJson parameter")); + + /* body parameter variations */ + jsonObjAttrGoodTemp = jsonObjAttrGood; + + //null body + jsonObjAttrGoodTemp = Json.createObjectBuilder().add("attributeName", "success") + .add("type", "REST") + .add("method", "GET") + .add("url", "http://foobar.com") + .add("body", "") + .build(); + assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction).contains("No Body provided")); + + //missing body + jsonObjAttrGoodTemp = Json.createObjectBuilder().add("attributeName", "success") + .add("type", "REST") + .add("method", "GET") + .add("url", "http://foobar.com") + .build(); + assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction).contains("Missing body key in the dictionaryJson parameter")); + + + /*headers parameter variations*/ + JsonObject jsonObjOption; + JsonObject jsonObjNumber; + JsonArray jsonArrayHeaders; + + //missing number headers + jsonObjOption = Json.createObjectBuilder().add("option","foobar").build(); + //jsonObjNumber = Json.createObjectBuilder().add("number","foobar").build(); + + jsonArrayHeaders = Json.createArrayBuilder() + .add(jsonObjOption) + //.add(jsonObjNumber) + .build(); + + jsonObjAttrGoodTemp = Json.createObjectBuilder().add("attributeName", "success") + .add("type", "REST") + .add("method", "GET") + .add("url", "http://foobar.com") + .add("body", "foobody") + .add("headers", jsonArrayHeaders) + .build(); + + assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction).contains("Missing number key in the headers list of the dictionaryJson parameter.")); + + //missing options headers + jsonObjOption = Json.createObjectBuilder().add("option","foobar").build(); + jsonObjNumber = Json.createObjectBuilder().add("number","foobar").build(); + + jsonArrayHeaders = Json.createArrayBuilder() + //.add(jsonObjOption) + .add(jsonObjNumber) + .build(); + + jsonObjAttrGoodTemp = Json.createObjectBuilder().add("attributeName", "success") + .add("type", "REST") + .add("method", "GET") + .add("url", "http://foobar.com") + .add("body", "foobody") + .add("headers", jsonArrayHeaders) + .build(); + + assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction).contains("Missing option key in the headers list of the dictionaryJson parameter.")); + + //null option + jsonObjOption = Json.createObjectBuilder().add("option","").build(); + jsonObjNumber = Json.createObjectBuilder().add("number","foobar").build(); + + jsonArrayHeaders = Json.createArrayBuilder() + .add(jsonObjOption) + .add(jsonObjNumber) + .build(); + + jsonObjAttrGoodTemp = Json.createObjectBuilder().add("attributeName", "success") + .add("type", "REST") + .add("method", "GET") + .add("url", "http://foobar.com") + .add("body", "foobody") + .add("headers", jsonArrayHeaders) + .build(); + + assertTrue(PolicyApiUtils.validateDictionaryJsonFields(jsonObjAttrGoodTemp, dictonaryAction).contains("Missing required Option value")); + + //null number can't be tested + + } + + @Test + public void testStringToJsonObject() { + String jsonString = "{\"foo\":\"bar\"}"; + JsonObject obj = PolicyApiUtils.stringToJsonObject(jsonString); + assertTrue(obj.get("foo").toString().equals("\"bar\"")); + } + + @Test + public void testIsNumeric() { + assertFalse(PolicyApiUtils.isNumeric("notNumeric")); + assertTrue(PolicyApiUtils.isNumeric("2")); + } + + +}