Remove version from PdpGroup
[policy/models.git] / models-pdp / src / test / java / org / onap / policy / models / pdp / concepts / PdpGroupFilterTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2019 Nordix Foundation.
4  * ================================================================================
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  * SPDX-License-Identifier: Apache-2.0
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.policy.models.pdp.concepts;
22
23 import static org.assertj.core.api.Assertions.assertThatThrownBy;
24 import static org.junit.Assert.assertEquals;
25 import static org.junit.Assert.assertTrue;
26
27 import java.util.ArrayList;
28 import java.util.List;
29
30 import org.junit.Before;
31 import org.junit.Test;
32 import org.onap.policy.common.utils.coder.CoderException;
33 import org.onap.policy.common.utils.coder.StandardCoder;
34 import org.onap.policy.common.utils.resources.ResourceUtils;
35 import org.onap.policy.models.pdp.enums.PdpState;
36 import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyIdentifier;
37 import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyTypeIdentifier;
38
39 /**
40  * Test of the {@link PdpGroupFilter} class.
41  *
42  * @author Liam Fallon (liam.fallon@est.tech)
43  */
44 public class PdpGroupFilterTest {
45     private List<PdpGroup> pdpGroupList;
46
47     /**
48      * Set up a PDP group list for filtering.
49      *
50      * @throws CoderException on JSON decoding errors
51      */
52     @Before
53     public void setupPdpGroupList() throws CoderException {
54         String originalJson = ResourceUtils.getResourceAsString("testdata/PdpGroupsForFiltering.json");
55         PdpGroups pdpGroups = new StandardCoder().decode(originalJson, PdpGroups.class);
56         pdpGroupList = pdpGroups.getGroups();
57     }
58
59     @Test
60     public void testNullList() {
61         PdpGroupFilter filter = PdpGroupFilter.builder().build();
62
63         assertThatThrownBy(() -> {
64             filter.filter(null);
65         }).hasMessage("originalList is marked @NonNull but is null");
66     }
67
68     @Test
69     public void testFilterNothing() {
70         PdpGroupFilter filter = PdpGroupFilter.builder().build();
71
72         List<PdpGroup> filteredList = filter.filter(pdpGroupList);
73         assertTrue(filteredList.containsAll(pdpGroupList));
74     }
75
76     @Test
77     public void testFilterName() {
78         PdpGroupFilter filter = PdpGroupFilter.builder().name("PdpGroup0").build();
79         List<PdpGroup> filteredList = filter.filter(pdpGroupList);
80         assertEquals(1, filteredList.size());
81
82         filter = PdpGroupFilter.builder().name("PdpGroup1").build();
83         filteredList = filter.filter(pdpGroupList);
84         assertEquals(1, filteredList.size());
85
86         filter = PdpGroupFilter.builder().name("PdpGroup20").build();
87         filteredList = filter.filter(pdpGroupList);
88         assertEquals(1, filteredList.size());
89
90         filter = PdpGroupFilter.builder().build();
91         filteredList = filter.filter(pdpGroupList);
92         assertEquals(5, filteredList.size());
93
94         filter = PdpGroupFilter.builder().name("PdpGroup0").build();
95         filteredList = filter.filter(pdpGroupList);
96         assertEquals(1, filteredList.size());
97
98         filter = PdpGroupFilter.builder().name("PdpGroup19").build();
99         filteredList = filter.filter(pdpGroupList);
100         assertEquals(0, filteredList.size());
101     }
102
103     @Test
104     public void testFilterPdpGroupState() {
105         PdpGroupFilter filter = PdpGroupFilter.builder().groupState(PdpState.ACTIVE).build();
106         List<PdpGroup> filteredList = filter.filter(pdpGroupList);
107         assertEquals(1, filteredList.size());
108
109         filter = PdpGroupFilter.builder().groupState(PdpState.PASSIVE).build();
110         filteredList = filter.filter(pdpGroupList);
111         assertEquals(2, filteredList.size());
112
113         filter = PdpGroupFilter.builder().groupState(PdpState.TEST).build();
114         filteredList = filter.filter(pdpGroupList);
115         assertEquals(1, filteredList.size());
116
117         filter = PdpGroupFilter.builder().groupState(PdpState.SAFE).build();
118         filteredList = filter.filter(pdpGroupList);
119         assertEquals(1, filteredList.size());
120
121         filter = PdpGroupFilter.builder().groupState(PdpState.TERMINATED).build();
122         filteredList = filter.filter(pdpGroupList);
123         assertEquals(0, filteredList.size());
124     }
125
126     @Test
127     public void testFilterPdpType() {
128         PdpGroupFilter filter = PdpGroupFilter.builder().pdpType("APEX").build();
129         List<PdpGroup> filteredList = filter.filter(pdpGroupList);
130         assertEquals(5, filteredList.size());
131
132         filter = PdpGroupFilter.builder().pdpType("DROOLS").build();
133         filteredList = filter.filter(pdpGroupList);
134         assertEquals(2, filteredList.size());
135
136         filter = PdpGroupFilter.builder().pdpType("XACML").build();
137         filteredList = filter.filter(pdpGroupList);
138         assertEquals(1, filteredList.size());
139     }
140
141     @Test
142     public void testFilterPdpState() {
143         PdpGroupFilter filter = PdpGroupFilter.builder().pdpState(PdpState.ACTIVE).build();
144         List<PdpGroup> filteredList = filter.filter(pdpGroupList);
145         assertEquals(3, filteredList.size());
146
147         filter = PdpGroupFilter.builder().pdpState(PdpState.PASSIVE).build();
148         filteredList = filter.filter(pdpGroupList);
149         assertEquals(3, filteredList.size());
150
151         filter = PdpGroupFilter.builder().pdpState(PdpState.SAFE).build();
152         filteredList = filter.filter(pdpGroupList);
153         assertEquals(2, filteredList.size());
154
155         filter = PdpGroupFilter.builder().pdpState(PdpState.TEST).build();
156         filteredList = filter.filter(pdpGroupList);
157         assertEquals(2, filteredList.size());
158     }
159
160     @Test
161     public void testFilterPolicyType() {
162         List<ToscaPolicyTypeIdentifier> identifierList = new ArrayList<>();
163
164         identifierList.add(new ToscaPolicyTypeIdentifier("Nonexistant", "1.2.3"));
165         PdpGroupFilter filter =
166                 PdpGroupFilter.builder().policyTypeList(identifierList).build();
167         List<PdpGroup> filteredList = filter.filter(pdpGroupList);
168         assertEquals(0, filteredList.size());
169         identifierList.clear();
170
171         identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.0", "1.2.3"));
172         filter = PdpGroupFilter.builder().policyTypeList(identifierList).build();
173         filteredList = filter.filter(pdpGroupList);
174         assertEquals(4, filteredList.size());
175         identifierList.clear();
176
177         identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.1", "4.5.6"));
178         filter = PdpGroupFilter.builder().policyTypeList(identifierList).build();
179         filteredList = filter.filter(pdpGroupList);
180         assertEquals(4, filteredList.size());
181         identifierList.clear();
182
183         identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.2", "7.8.9"));
184         filter = PdpGroupFilter.builder().policyTypeList(identifierList).build();
185         filteredList = filter.filter(pdpGroupList);
186         assertEquals(2, filteredList.size());
187         identifierList.clear();
188
189         identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.3", "0.1.2"));
190         filter = PdpGroupFilter.builder().policyTypeList(identifierList).build();
191         filteredList = filter.filter(pdpGroupList);
192         assertEquals(2, filteredList.size());
193         identifierList.clear();
194
195         identifierList.add(new ToscaPolicyTypeIdentifier("Nonexistant", "1.2.3"));
196         identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.0", "9.9.9"));
197         identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.0", "1.2.3"));
198         identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.1", "4.5.6"));
199         identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.2", "7.8.9"));
200         identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.3", "0.1.2"));
201         filter = PdpGroupFilter.builder().policyTypeList(identifierList).build();
202         filteredList = filter.filter(pdpGroupList);
203         assertEquals(5, filteredList.size());
204
205         filter = PdpGroupFilter.builder().policyTypeList(identifierList).matchPolicyTypesExactly(true).build();
206         filteredList = filter.filter(pdpGroupList);
207         assertEquals(0, filteredList.size());
208
209         identifierList.clear();
210         identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.0", "1.2.3"));
211         filter = PdpGroupFilter.builder().policyTypeList(identifierList).matchPolicyTypesExactly(true).build();
212         filteredList = filter.filter(pdpGroupList);
213         assertEquals(2, filteredList.size());
214
215         identifierList.clear();
216         identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.0", "1.2.3"));
217         identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.1", "4.5.6"));
218         identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.2", "7.8.9"));
219         filter = PdpGroupFilter.builder().policyTypeList(identifierList).matchPolicyTypesExactly(true).build();
220         filteredList = filter.filter(pdpGroupList);
221         assertEquals(1, filteredList.size());
222
223         identifierList.clear();
224         identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.0", "1.2.3"));
225         identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.1", "4.5.6"));
226         identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.3", "0.1.2"));
227         filter = PdpGroupFilter.builder().policyTypeList(identifierList).matchPolicyTypesExactly(true).build();
228         filteredList = filter.filter(pdpGroupList);
229         assertEquals(1, filteredList.size());
230
231         identifierList.clear();
232         identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.1", "4.5.6"));
233         identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.3", "0.1.2"));
234         filter = PdpGroupFilter.builder().policyTypeList(identifierList).matchPolicyTypesExactly(true).build();
235         filteredList = filter.filter(pdpGroupList);
236         assertEquals(1, filteredList.size());
237     }
238
239     @Test
240     public void testFilterPolicy() {
241         List<ToscaPolicyIdentifier> identifierList = new ArrayList<>();
242
243         identifierList.add(new ToscaPolicyIdentifier("Nonexistant", "1.2.3"));
244         PdpGroupFilter filter =
245                 PdpGroupFilter.builder().policyList(identifierList).build();
246         List<PdpGroup> filteredList = filter.filter(pdpGroupList);
247         assertEquals(0, filteredList.size());
248         identifierList.clear();
249
250         identifierList.add(new ToscaPolicyIdentifier("Policy0", "9.9.9"));
251         filter = PdpGroupFilter.builder().policyList(identifierList).build();
252         filteredList = filter.filter(pdpGroupList);
253         assertEquals(0, filteredList.size());
254         identifierList.clear();
255
256         identifierList.add(new ToscaPolicyIdentifier("Policy0", "4.5.6"));
257         filter = PdpGroupFilter.builder().policyList(identifierList).build();
258         filteredList = filter.filter(pdpGroupList);
259         assertEquals(4, filteredList.size());
260         identifierList.clear();
261
262         identifierList.add(new ToscaPolicyIdentifier("Policy1", "4.5.6"));
263         filter = PdpGroupFilter.builder().policyList(identifierList).build();
264         filteredList = filter.filter(pdpGroupList);
265         assertEquals(1, filteredList.size());
266         identifierList.clear();
267
268         identifierList.add(new ToscaPolicyIdentifier("Policy2", "4.5.6"));
269         filter = PdpGroupFilter.builder().policyList(identifierList).build();
270         filteredList = filter.filter(pdpGroupList);
271         assertEquals(2, filteredList.size());
272         identifierList.clear();
273
274         identifierList.add(new ToscaPolicyIdentifier("Policy3", "1.2.3"));
275         filter = PdpGroupFilter.builder().policyList(identifierList).build();
276         filteredList = filter.filter(pdpGroupList);
277         assertEquals(1, filteredList.size());
278         identifierList.clear();
279
280         identifierList.add(new ToscaPolicyIdentifier("Nonexistant", "1.2.3"));
281         identifierList.add(new ToscaPolicyIdentifier("Policy0", "9.9.9"));
282         identifierList.add(new ToscaPolicyIdentifier("Policy0", "4.5.6"));
283         identifierList.add(new ToscaPolicyIdentifier("Policy1", "4.5.6"));
284         identifierList.add(new ToscaPolicyIdentifier("Policy2", "4.5.6"));
285         identifierList.add(new ToscaPolicyIdentifier("Policy3", "1.2.3"));
286         filter = PdpGroupFilter.builder().policyList(identifierList).build();
287         filteredList = filter.filter(pdpGroupList);
288         assertEquals(5, filteredList.size());
289
290         filter = PdpGroupFilter.builder().policyList(identifierList).matchPoliciesExactly(true).build();
291         filteredList = filter.filter(pdpGroupList);
292         assertEquals(0, filteredList.size());
293
294         identifierList.clear();
295         identifierList.add(new ToscaPolicyIdentifier("Policy0", "4.5.6"));
296         filter = PdpGroupFilter.builder().policyList(identifierList).matchPoliciesExactly(true).build();
297         filteredList = filter.filter(pdpGroupList);
298         assertEquals(3, filteredList.size());
299
300         identifierList.clear();
301         identifierList.add(new ToscaPolicyIdentifier("Policy0", "4.5.6"));
302         identifierList.add(new ToscaPolicyIdentifier("Policy1", "4.5.6"));
303         filter = PdpGroupFilter.builder().policyList(identifierList).matchPoliciesExactly(true).build();
304         filteredList = filter.filter(pdpGroupList);
305         assertEquals(1, filteredList.size());
306
307         identifierList.clear();
308         identifierList.add(new ToscaPolicyIdentifier("Policy2", "4.5.6"));
309         filter = PdpGroupFilter.builder().policyList(identifierList).matchPoliciesExactly(true).build();
310         filteredList = filter.filter(pdpGroupList);
311         assertEquals(1, filteredList.size());
312
313         identifierList.clear();
314         identifierList.add(new ToscaPolicyIdentifier("Policy2", "4.5.6"));
315         identifierList.add(new ToscaPolicyIdentifier("Policy3", "1.2.3"));
316         filter = PdpGroupFilter.builder().policyList(identifierList).matchPoliciesExactly(true).build();
317         filteredList = filter.filter(pdpGroupList);
318         assertEquals(1, filteredList.size());
319     }
320 }