aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--policy-management/src/test/java/org/onap/policy/drools/protocol/coders/JsonProtocolFilterTest.java184
1 files changed, 184 insertions, 0 deletions
diff --git a/policy-management/src/test/java/org/onap/policy/drools/protocol/coders/JsonProtocolFilterTest.java b/policy-management/src/test/java/org/onap/policy/drools/protocol/coders/JsonProtocolFilterTest.java
new file mode 100644
index 00000000..17ed8653
--- /dev/null
+++ b/policy-management/src/test/java/org/onap/policy/drools/protocol/coders/JsonProtocolFilterTest.java
@@ -0,0 +1,184 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Configuration Test
+ * ================================================================================
+ * Copyright (C) 2017 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.drools.protocol.coders;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+
+import org.junit.Test;
+
+import org.onap.policy.drools.protocol.coders.JsonProtocolFilter;
+import org.onap.policy.drools.protocol.coders.JsonProtocolFilter.FilterRule;
+
+import org.onap.policy.drools.utils.Pair;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+public class JsonProtocolFilterTest {
+
+ private static final Logger logger = LoggerFactory.getLogger(JsonProtocolFilterTest.class);
+
+ private static final String NAME1 = "name1";
+ private static final String REGEX1 = "regex1";
+
+ private static final String NAME2 = "name2";
+ private static final String REGEX2 = "regex2";
+
+ private static final String NAME3 = "name3";
+ private static final String REGEX3 = "regex3";
+
+ private static final String NAME4 = "name4";
+ private static final String REGEX4a = "regex4a";
+ private static final String REGEX4b = "regex4b";
+
+
+ @Test
+ public void test() {
+
+ // ******************** D E F I N E f i l t e r R u l e O b j e c t s ***************************
+ // DEFINE one (1) filterRule object (using constructor without parms passed; instead use set methods
+ FilterRule filterRule1 = new FilterRule();
+ filterRule1.setName(NAME1);
+ filterRule1.setRegex(REGEX1);
+ assertEquals(filterRule1.getName(), NAME1);
+ assertEquals(filterRule1.getRegex(), REGEX1);
+
+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ // DEFINE four (4) filterRule objects (using constructor passing the field values
+ FilterRule filterRule2 = new FilterRule(NAME2, REGEX2);
+ assertEquals(filterRule2.getName(), NAME2);
+ assertEquals(filterRule2.getRegex(), REGEX2);
+
+ FilterRule filterRule3 = new FilterRule(NAME3, REGEX3);
+ assertEquals(filterRule3.getName(), NAME3);
+ assertEquals(filterRule3.getRegex(), REGEX3);
+
+ FilterRule filterRule4a = new FilterRule(NAME4, REGEX4a);
+ assertEquals(filterRule4a.getName(), NAME4);
+ assertEquals(filterRule4a.getRegex(), REGEX4a);
+
+ FilterRule filterRule4b = new FilterRule(NAME4, REGEX4b);
+ assertEquals(filterRule4b.getName(), NAME4);
+ assertEquals(filterRule4b.getRegex(), REGEX4b);
+
+
+
+ // ************************ D E F I N E f i l t e r L i s t s ************************************
+ // DEFINE rawFiltersA
+ List<Pair<String,String>> rawFiltersA = new ArrayList<>();
+ rawFiltersA.add(new Pair<String,String>(filterRule1.getName(), filterRule1.getRegex()));
+ rawFiltersA.add(new Pair<String,String>(filterRule2.getName(), filterRule2.getRegex()));
+
+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ // DEFINE filtersA
+ List<FilterRule> filtersA = new ArrayList<>();
+ for (Pair<String, String> filterPair: rawFiltersA) {
+ if (filterPair.first() == null || filterPair.first().isEmpty()) {
+ continue;
+ }
+ filtersA.add(new FilterRule(filterPair.first(), filterPair.second()));
+ }
+
+
+
+ // *********** I N S T A N T I A T E J s o n P r o t o c o l F i l t e r O b j e c t s **********
+ // INSTANTIATE protocolFilterA (passing raw filters to the 'fromRawFilters' constructor)
+ JsonProtocolFilter protocolFilterA = JsonProtocolFilter.fromRawFilters(rawFiltersA);
+ assertTrue(protocolFilterA.isRules());
+ assertEquals(protocolFilterA.getRules().toString(), filtersA.toString());
+
+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ // INSTANTIATE protocolFilterB (passing filters list to constructor which accepts such)
+ JsonProtocolFilter protocolFilterB = new JsonProtocolFilter(filtersA);
+ assertTrue(protocolFilterB.isRules());
+ assertEquals(protocolFilterB.getRules(), filtersA);
+
+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ // INSTANTIATE protocolFilterC (using constructor without parms; add instead using setRules() method
+ JsonProtocolFilter protocolFilterC = new JsonProtocolFilter();
+ protocolFilterC.setRules(filtersA);
+ assertTrue(protocolFilterC.isRules());
+ assertEquals(protocolFilterC.getRules(), filtersA);
+
+
+
+ // *** D E F I N E o t h e r f i l t e r L i s t s f o r v a l i d a t i o n s ************
+ // DEFINE rawFiltersB
+ List<Pair<String,String>> rawFiltersB = new ArrayList<>();
+ rawFiltersB.add(new Pair<String,String>(filterRule1.getName(), filterRule1.getRegex()));
+ rawFiltersB.add(new Pair<String,String>(filterRule2.getName(), filterRule2.getRegex()));
+ rawFiltersB.add(new Pair<String,String>(filterRule3.getName(), filterRule3.getRegex()));
+ rawFiltersB.add(new Pair<String,String>(filterRule4a.getName(), filterRule4a.getRegex()));
+ rawFiltersB.add(new Pair<String,String>(filterRule4b.getName(), filterRule4b.getRegex()));
+
+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ // DEFINE filtersB
+ List<FilterRule> filtersB = new ArrayList<>();
+ for (Pair<String, String> filterPair: rawFiltersB) {
+ filtersB.add(new FilterRule(filterPair.first(), filterPair.second()));
+ }
+
+
+
+ // *********** A D D T O p r o t o c o l F i l t e r B 3 m o r e f i l t e r s ************
+ protocolFilterB.addRule(filterRule3.getName(), filterRule3.getRegex());
+ protocolFilterB.addRule(filterRule4a.getName(), filterRule4a.getRegex());
+ protocolFilterB.addRule(filterRule4b.getName(), filterRule4b.getRegex());
+
+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ // VALIDATE that protocolFilterB now contains filters passed using filtersA and the new ones just added
+ assertEquals(protocolFilterB.getRules().toString(), filtersB.toString());
+
+
+
+ // ************ D E L E T E f i l t e r s f r o m p r o t o c o l F i l t e r B ***********
+ // DELETE specific filter from protocolFilterB by passing both the name & regex values
+ protocolFilterB.deleteRule(NAME3, REGEX3);
+
+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ // DELETE all filters from protocolFilterB that have a match to the same name value
+ protocolFilterB.deleteRules(NAME4);
+
+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ // VALIDATE that protocolFilterB now only contains the filters that were originally passed using filtersA
+ assertEquals(protocolFilterB.getRules(), filtersA);
+
+
+
+ // ************ A C C E P T J S O N I F I T P A S S E S A L L F I L T E R S ***********
+ // ACCEPT TRUE a JSON that passes all filters
+ String jsonA = "{ \"name1\":\"regex1\",\"name2\":\"regex2\"}";
+ assertTrue(protocolFilterA.accept(jsonA));
+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ // ACCEPT FALSE a JSON that does NOT pass all filters
+ String jsonB = "{ \"name1\":\"regex1\"}";
+ assertFalse(protocolFilterA.accept(jsonB));
+
+ }
+
+} \ No newline at end of file