2 * ============LICENSE_START=======================================================
3 * Copyright (C) 2019 Nordix Foundation.
4 * Modifications Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
5 * ================================================================================
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
18 * SPDX-License-Identifier: Apache-2.0
19 * ============LICENSE_END=========================================================
22 package org.onap.policy.models.pdp.concepts;
24 import static org.assertj.core.api.Assertions.assertThatThrownBy;
25 import static org.junit.Assert.assertEquals;
26 import static org.junit.Assert.assertTrue;
28 import java.util.ArrayList;
29 import java.util.List;
31 import org.junit.Before;
32 import org.junit.Test;
33 import org.onap.policy.common.utils.coder.CoderException;
34 import org.onap.policy.common.utils.coder.StandardCoder;
35 import org.onap.policy.common.utils.resources.ResourceUtils;
36 import org.onap.policy.models.pdp.enums.PdpState;
37 import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyIdentifier;
38 import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyTypeIdentifier;
41 * Test of the {@link PdpGroupFilter} class.
43 * @author Liam Fallon (liam.fallon@est.tech)
45 public class PdpGroupFilterTest {
46 private static final String POLICY_TYPE3 = "policy.type.3";
47 private static final String POLICY_TYPE2 = "policy.type.2";
48 private static final String POLICY_TYPE1 = "policy.type.1";
49 private static final String POLICY_TYPE0 = "policy.type.0";
50 private static final String POLICY3 = "Policy3";
51 private static final String POLICY2 = "Policy2";
52 private static final String POLICY1 = "Policy1";
53 private static final String POLICY0 = "Policy0";
54 private static final String NON_EXISTANT = "Nonexistant";
55 private static final String VERSION9 = "9.9.9";
56 private static final String VERSION7 = "7.8.9";
57 private static final String VERSION4 = "4.5.6";
58 private static final String VERSION1 = "1.2.3";
59 private static final String VERSION0 = "0.1.2";
60 private List<PdpGroup> pdpGroupList;
63 * Set up a PDP group list for filtering.
65 * @throws CoderException on JSON decoding errors
68 public void setupPdpGroupList() throws CoderException {
69 String originalJson = ResourceUtils.getResourceAsString("testdata/PdpGroupsForFiltering.json");
70 PdpGroups pdpGroups = new StandardCoder().decode(originalJson, PdpGroups.class);
71 pdpGroupList = pdpGroups.getGroups();
75 public void testNullList() {
76 PdpGroupFilter filter = PdpGroupFilter.builder().build();
78 assertThatThrownBy(() -> {
80 }).hasMessage("originalList is marked @NonNull but is null");
84 public void testFilterNothing() {
85 PdpGroupFilter filter = PdpGroupFilter.builder().build();
87 List<PdpGroup> filteredList = filter.filter(pdpGroupList);
88 assertTrue(filteredList.containsAll(pdpGroupList));
92 public void testFilterName() {
93 PdpGroupFilter filter = PdpGroupFilter.builder().name("PdpGroup0").build();
94 List<PdpGroup> filteredList = filter.filter(pdpGroupList);
95 assertEquals(1, filteredList.size());
97 filter = PdpGroupFilter.builder().name("PdpGroup1").build();
98 filteredList = filter.filter(pdpGroupList);
99 assertEquals(1, filteredList.size());
101 filter = PdpGroupFilter.builder().name("PdpGroup20").build();
102 filteredList = filter.filter(pdpGroupList);
103 assertEquals(1, filteredList.size());
105 filter = PdpGroupFilter.builder().build();
106 filteredList = filter.filter(pdpGroupList);
107 assertEquals(5, filteredList.size());
109 filter = PdpGroupFilter.builder().name("PdpGroup0").build();
110 filteredList = filter.filter(pdpGroupList);
111 assertEquals(1, filteredList.size());
113 filter = PdpGroupFilter.builder().name("PdpGroup19").build();
114 filteredList = filter.filter(pdpGroupList);
115 assertEquals(0, filteredList.size());
119 public void testFilterPdpGroupState() {
120 PdpGroupFilter filter = PdpGroupFilter.builder().groupState(PdpState.ACTIVE).build();
121 List<PdpGroup> filteredList = filter.filter(pdpGroupList);
122 assertEquals(1, filteredList.size());
124 filter = PdpGroupFilter.builder().groupState(PdpState.PASSIVE).build();
125 filteredList = filter.filter(pdpGroupList);
126 assertEquals(2, filteredList.size());
128 filter = PdpGroupFilter.builder().groupState(PdpState.TEST).build();
129 filteredList = filter.filter(pdpGroupList);
130 assertEquals(1, filteredList.size());
132 filter = PdpGroupFilter.builder().groupState(PdpState.SAFE).build();
133 filteredList = filter.filter(pdpGroupList);
134 assertEquals(1, filteredList.size());
136 filter = PdpGroupFilter.builder().groupState(PdpState.TERMINATED).build();
137 filteredList = filter.filter(pdpGroupList);
138 assertEquals(0, filteredList.size());
142 public void testFilterPdpType() {
143 PdpGroupFilter filter = PdpGroupFilter.builder().pdpType("APEX").build();
144 List<PdpGroup> filteredList = filter.filter(pdpGroupList);
145 assertEquals(5, filteredList.size());
147 filter = PdpGroupFilter.builder().pdpType("DROOLS").build();
148 filteredList = filter.filter(pdpGroupList);
149 assertEquals(2, filteredList.size());
151 filter = PdpGroupFilter.builder().pdpType("XACML").build();
152 filteredList = filter.filter(pdpGroupList);
153 assertEquals(1, filteredList.size());
157 public void testFilterPdpState() {
158 PdpGroupFilter filter = PdpGroupFilter.builder().pdpState(PdpState.ACTIVE).build();
159 List<PdpGroup> filteredList = filter.filter(pdpGroupList);
160 assertEquals(3, filteredList.size());
162 filter = PdpGroupFilter.builder().pdpState(PdpState.PASSIVE).build();
163 filteredList = filter.filter(pdpGroupList);
164 assertEquals(3, filteredList.size());
166 filter = PdpGroupFilter.builder().pdpState(PdpState.SAFE).build();
167 filteredList = filter.filter(pdpGroupList);
168 assertEquals(2, filteredList.size());
170 filter = PdpGroupFilter.builder().pdpState(PdpState.TEST).build();
171 filteredList = filter.filter(pdpGroupList);
172 assertEquals(2, filteredList.size());
176 public void testFilterPolicyType() {
177 List<ToscaPolicyTypeIdentifier> identifierList = new ArrayList<>();
179 identifierList.add(new ToscaPolicyTypeIdentifier(NON_EXISTANT, VERSION1));
180 PdpGroupFilter filter =
181 PdpGroupFilter.builder().policyTypeList(identifierList).build();
182 List<PdpGroup> filteredList = filter.filter(pdpGroupList);
183 assertEquals(0, filteredList.size());
184 identifierList.clear();
186 identifierList.add(new ToscaPolicyTypeIdentifier(POLICY_TYPE0, VERSION1));
187 filter = PdpGroupFilter.builder().policyTypeList(identifierList).build();
188 filteredList = filter.filter(pdpGroupList);
189 assertEquals(4, filteredList.size());
190 identifierList.clear();
192 identifierList.add(new ToscaPolicyTypeIdentifier(POLICY_TYPE1, VERSION4));
193 filter = PdpGroupFilter.builder().policyTypeList(identifierList).build();
194 filteredList = filter.filter(pdpGroupList);
195 assertEquals(4, filteredList.size());
196 identifierList.clear();
198 identifierList.add(new ToscaPolicyTypeIdentifier(POLICY_TYPE2, VERSION7));
199 filter = PdpGroupFilter.builder().policyTypeList(identifierList).build();
200 filteredList = filter.filter(pdpGroupList);
201 assertEquals(2, filteredList.size());
202 identifierList.clear();
204 identifierList.add(new ToscaPolicyTypeIdentifier(POLICY_TYPE3, VERSION0));
205 filter = PdpGroupFilter.builder().policyTypeList(identifierList).build();
206 filteredList = filter.filter(pdpGroupList);
207 assertEquals(2, filteredList.size());
208 identifierList.clear();
210 identifierList.add(new ToscaPolicyTypeIdentifier(NON_EXISTANT, VERSION1));
211 identifierList.add(new ToscaPolicyTypeIdentifier(POLICY_TYPE0, VERSION9));
212 identifierList.add(new ToscaPolicyTypeIdentifier(POLICY_TYPE0, VERSION1));
213 identifierList.add(new ToscaPolicyTypeIdentifier(POLICY_TYPE1, VERSION4));
214 identifierList.add(new ToscaPolicyTypeIdentifier(POLICY_TYPE2, VERSION7));
215 identifierList.add(new ToscaPolicyTypeIdentifier(POLICY_TYPE3, VERSION0));
216 filter = PdpGroupFilter.builder().policyTypeList(identifierList).build();
217 filteredList = filter.filter(pdpGroupList);
218 assertEquals(5, filteredList.size());
220 filter = PdpGroupFilter.builder().policyTypeList(identifierList).matchPolicyTypesExactly(true).build();
221 filteredList = filter.filter(pdpGroupList);
222 assertEquals(0, filteredList.size());
224 identifierList.clear();
225 identifierList.add(new ToscaPolicyTypeIdentifier(POLICY_TYPE0, VERSION1));
226 filter = PdpGroupFilter.builder().policyTypeList(identifierList).matchPolicyTypesExactly(true).build();
227 filteredList = filter.filter(pdpGroupList);
228 assertEquals(2, filteredList.size());
230 identifierList.clear();
231 identifierList.add(new ToscaPolicyTypeIdentifier(POLICY_TYPE0, VERSION1));
232 identifierList.add(new ToscaPolicyTypeIdentifier(POLICY_TYPE1, VERSION4));
233 identifierList.add(new ToscaPolicyTypeIdentifier(POLICY_TYPE2, VERSION7));
234 filter = PdpGroupFilter.builder().policyTypeList(identifierList).matchPolicyTypesExactly(true).build();
235 filteredList = filter.filter(pdpGroupList);
236 assertEquals(1, filteredList.size());
238 identifierList.clear();
239 identifierList.add(new ToscaPolicyTypeIdentifier(POLICY_TYPE0, VERSION1));
240 identifierList.add(new ToscaPolicyTypeIdentifier(POLICY_TYPE1, VERSION4));
241 identifierList.add(new ToscaPolicyTypeIdentifier(POLICY_TYPE3, VERSION0));
242 filter = PdpGroupFilter.builder().policyTypeList(identifierList).matchPolicyTypesExactly(true).build();
243 filteredList = filter.filter(pdpGroupList);
244 assertEquals(1, filteredList.size());
246 identifierList.clear();
247 identifierList.add(new ToscaPolicyTypeIdentifier(POLICY_TYPE1, VERSION4));
248 identifierList.add(new ToscaPolicyTypeIdentifier(POLICY_TYPE3, VERSION0));
249 filter = PdpGroupFilter.builder().policyTypeList(identifierList).matchPolicyTypesExactly(true).build();
250 filteredList = filter.filter(pdpGroupList);
251 assertEquals(1, filteredList.size());
255 public void testFilterPolicy() {
256 List<ToscaPolicyIdentifier> identifierList = new ArrayList<>();
258 identifierList.add(new ToscaPolicyIdentifier(NON_EXISTANT, VERSION1));
259 PdpGroupFilter filter =
260 PdpGroupFilter.builder().policyList(identifierList).build();
261 List<PdpGroup> filteredList = filter.filter(pdpGroupList);
262 assertEquals(0, filteredList.size());
263 identifierList.clear();
265 identifierList.add(new ToscaPolicyIdentifier(POLICY0, VERSION9));
266 filter = PdpGroupFilter.builder().policyList(identifierList).build();
267 filteredList = filter.filter(pdpGroupList);
268 assertEquals(0, filteredList.size());
269 identifierList.clear();
271 identifierList.add(new ToscaPolicyIdentifier(POLICY0, VERSION4));
272 filter = PdpGroupFilter.builder().policyList(identifierList).build();
273 filteredList = filter.filter(pdpGroupList);
274 assertEquals(4, filteredList.size());
275 identifierList.clear();
277 identifierList.add(new ToscaPolicyIdentifier(POLICY1, VERSION4));
278 filter = PdpGroupFilter.builder().policyList(identifierList).build();
279 filteredList = filter.filter(pdpGroupList);
280 assertEquals(1, filteredList.size());
281 identifierList.clear();
283 identifierList.add(new ToscaPolicyIdentifier(POLICY2, VERSION4));
284 filter = PdpGroupFilter.builder().policyList(identifierList).build();
285 filteredList = filter.filter(pdpGroupList);
286 assertEquals(2, filteredList.size());
287 identifierList.clear();
289 identifierList.add(new ToscaPolicyIdentifier(POLICY3, VERSION1));
290 filter = PdpGroupFilter.builder().policyList(identifierList).build();
291 filteredList = filter.filter(pdpGroupList);
292 assertEquals(1, filteredList.size());
293 identifierList.clear();
295 identifierList.add(new ToscaPolicyIdentifier(NON_EXISTANT, VERSION1));
296 identifierList.add(new ToscaPolicyIdentifier(POLICY0, VERSION9));
297 identifierList.add(new ToscaPolicyIdentifier(POLICY0, VERSION4));
298 identifierList.add(new ToscaPolicyIdentifier(POLICY1, VERSION4));
299 identifierList.add(new ToscaPolicyIdentifier(POLICY2, VERSION4));
300 identifierList.add(new ToscaPolicyIdentifier(POLICY3, VERSION1));
301 filter = PdpGroupFilter.builder().policyList(identifierList).build();
302 filteredList = filter.filter(pdpGroupList);
303 assertEquals(5, filteredList.size());
305 filter = PdpGroupFilter.builder().policyList(identifierList).matchPoliciesExactly(true).build();
306 filteredList = filter.filter(pdpGroupList);
307 assertEquals(0, filteredList.size());
309 identifierList.clear();
310 identifierList.add(new ToscaPolicyIdentifier(POLICY0, VERSION4));
311 filter = PdpGroupFilter.builder().policyList(identifierList).matchPoliciesExactly(true).build();
312 filteredList = filter.filter(pdpGroupList);
313 assertEquals(3, filteredList.size());
315 identifierList.clear();
316 identifierList.add(new ToscaPolicyIdentifier(POLICY0, VERSION4));
317 identifierList.add(new ToscaPolicyIdentifier(POLICY1, VERSION4));
318 filter = PdpGroupFilter.builder().policyList(identifierList).matchPoliciesExactly(true).build();
319 filteredList = filter.filter(pdpGroupList);
320 assertEquals(1, filteredList.size());
322 identifierList.clear();
323 identifierList.add(new ToscaPolicyIdentifier(POLICY2, VERSION4));
324 filter = PdpGroupFilter.builder().policyList(identifierList).matchPoliciesExactly(true).build();
325 filteredList = filter.filter(pdpGroupList);
326 assertEquals(1, filteredList.size());
328 identifierList.clear();
329 identifierList.add(new ToscaPolicyIdentifier(POLICY2, VERSION4));
330 identifierList.add(new ToscaPolicyIdentifier(POLICY3, VERSION1));
331 filter = PdpGroupFilter.builder().policyList(identifierList).matchPoliciesExactly(true).build();
332 filteredList = filter.filter(pdpGroupList);
333 assertEquals(1, filteredList.size());