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
9 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 * SPDX-License-Identifier: Apache-2.0
18 * ============LICENSE_END=========================================================
21 package org.onap.policy.models.pdp.concepts;
23 import static org.assertj.core.api.Assertions.assertThatThrownBy;
24 import static org.junit.Assert.assertEquals;
25 import static org.junit.Assert.assertTrue;
27 import java.util.ArrayList;
28 import java.util.List;
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;
40 * Test of the {@link PdpGroupFilter} class.
42 * @author Liam Fallon (liam.fallon@est.tech)
44 public class PdpGroupFilterTest {
45 private List<PdpGroup> pdpGroupList;
48 * Set up a PDP group list for filtering.
50 * @throws CoderException on JSON decoding errors
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();
60 public void testNullList() {
61 PdpGroupFilter filter = PdpGroupFilter.builder().build();
63 assertThatThrownBy(() -> {
65 }).hasMessage("originalList is marked @NonNull but is null");
69 public void testFilterNothing() {
70 PdpGroupFilter filter = PdpGroupFilter.builder().build();
72 List<PdpGroup> filteredList = filter.filter(pdpGroupList);
73 assertTrue(filteredList.containsAll(pdpGroupList));
77 public void testFilterLatestVersion() {
78 PdpGroupFilter filter = PdpGroupFilter.builder().version(PdpGroupFilter.LATEST_VERSION).build();
80 List<PdpGroup> filteredList = filter.filter(pdpGroupList);
81 assertEquals(2, filteredList.size());
82 assertEquals("1.2.4", filteredList.get(0).getVersion());
83 assertEquals("1.2.3", filteredList.get(1).getVersion());
87 public void testFilterNameVersion() {
88 PdpGroupFilter filter = PdpGroupFilter.builder().name("PdpGroup0").build();
89 List<PdpGroup> filteredList = filter.filter(pdpGroupList);
90 assertEquals(3, filteredList.size());
92 filter = PdpGroupFilter.builder().name("PdpGroup1").build();
93 filteredList = filter.filter(pdpGroupList);
94 assertEquals(2, filteredList.size());
96 filter = PdpGroupFilter.builder().name("PdpGroup2").build();
97 filteredList = filter.filter(pdpGroupList);
98 assertEquals(0, filteredList.size());
100 filter = PdpGroupFilter.builder().version("1.2.3").build();
101 filteredList = filter.filter(pdpGroupList);
102 assertEquals(2, filteredList.size());
104 filter = PdpGroupFilter.builder().name("PdpGroup0").version("1.2.3").build();
105 filteredList = filter.filter(pdpGroupList);
106 assertEquals(1, filteredList.size());
108 filter = PdpGroupFilter.builder().name("PdpGroup1").version("1.2.9").build();
109 filteredList = filter.filter(pdpGroupList);
110 assertEquals(0, filteredList.size());
114 public void testFilterPdpGroupState() {
115 PdpGroupFilter filter = PdpGroupFilter.builder().groupState(PdpState.ACTIVE).build();
116 List<PdpGroup> filteredList = filter.filter(pdpGroupList);
117 assertEquals(1, filteredList.size());
119 filter = PdpGroupFilter.builder().groupState(PdpState.PASSIVE).build();
120 filteredList = filter.filter(pdpGroupList);
121 assertEquals(2, filteredList.size());
123 filter = PdpGroupFilter.builder().groupState(PdpState.TEST).build();
124 filteredList = filter.filter(pdpGroupList);
125 assertEquals(1, filteredList.size());
127 filter = PdpGroupFilter.builder().groupState(PdpState.SAFE).build();
128 filteredList = filter.filter(pdpGroupList);
129 assertEquals(1, filteredList.size());
131 filter = PdpGroupFilter.builder().groupState(PdpState.TERMINATED).build();
132 filteredList = filter.filter(pdpGroupList);
133 assertEquals(0, filteredList.size());
137 public void testFilterPdpType() {
138 PdpGroupFilter filter = PdpGroupFilter.builder().pdpType("APEX").build();
139 List<PdpGroup> filteredList = filter.filter(pdpGroupList);
140 assertEquals(5, filteredList.size());
142 filter = PdpGroupFilter.builder().pdpType("DROOLS").build();
143 filteredList = filter.filter(pdpGroupList);
144 assertEquals(2, filteredList.size());
146 filter = PdpGroupFilter.builder().pdpType("XACML").build();
147 filteredList = filter.filter(pdpGroupList);
148 assertEquals(1, filteredList.size());
152 public void testFilterPdpState() {
153 PdpGroupFilter filter = PdpGroupFilter.builder().pdpState(PdpState.ACTIVE).build();
154 List<PdpGroup> filteredList = filter.filter(pdpGroupList);
155 assertEquals(3, filteredList.size());
157 filter = PdpGroupFilter.builder().pdpState(PdpState.PASSIVE).build();
158 filteredList = filter.filter(pdpGroupList);
159 assertEquals(3, filteredList.size());
161 filter = PdpGroupFilter.builder().pdpState(PdpState.SAFE).build();
162 filteredList = filter.filter(pdpGroupList);
163 assertEquals(2, filteredList.size());
165 filter = PdpGroupFilter.builder().pdpState(PdpState.TEST).build();
166 filteredList = filter.filter(pdpGroupList);
167 assertEquals(2, filteredList.size());
171 public void testFilterPolicyType() {
172 List<ToscaPolicyTypeIdentifier> identifierList = new ArrayList<>();
174 identifierList.add(new ToscaPolicyTypeIdentifier("Nonexistant", "1.2.3"));
175 PdpGroupFilter filter =
176 PdpGroupFilter.builder().policyTypeList(identifierList).build();
177 List<PdpGroup> filteredList = filter.filter(pdpGroupList);
178 assertEquals(0, filteredList.size());
179 identifierList.clear();
181 identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.0", "1.2.3"));
182 filter = PdpGroupFilter.builder().policyTypeList(identifierList).build();
183 filteredList = filter.filter(pdpGroupList);
184 assertEquals(4, filteredList.size());
185 identifierList.clear();
187 identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.1", "4.5.6"));
188 filter = PdpGroupFilter.builder().policyTypeList(identifierList).build();
189 filteredList = filter.filter(pdpGroupList);
190 assertEquals(4, filteredList.size());
191 identifierList.clear();
193 identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.2", "7.8.9"));
194 filter = PdpGroupFilter.builder().policyTypeList(identifierList).build();
195 filteredList = filter.filter(pdpGroupList);
196 assertEquals(2, filteredList.size());
197 identifierList.clear();
199 identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.3", "0.1.2"));
200 filter = PdpGroupFilter.builder().policyTypeList(identifierList).build();
201 filteredList = filter.filter(pdpGroupList);
202 assertEquals(2, filteredList.size());
203 identifierList.clear();
205 identifierList.add(new ToscaPolicyTypeIdentifier("Nonexistant", "1.2.3"));
206 identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.0", "9.9.9"));
207 identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.0", "1.2.3"));
208 identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.1", "4.5.6"));
209 identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.2", "7.8.9"));
210 identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.3", "0.1.2"));
211 filter = PdpGroupFilter.builder().policyTypeList(identifierList).build();
212 filteredList = filter.filter(pdpGroupList);
213 assertEquals(5, filteredList.size());
215 filter = PdpGroupFilter.builder().policyTypeList(identifierList).matchPolicyTypesExactly(true).build();
216 filteredList = filter.filter(pdpGroupList);
217 assertEquals(0, filteredList.size());
219 identifierList.clear();
220 identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.0", "1.2.3"));
221 filter = PdpGroupFilter.builder().policyTypeList(identifierList).matchPolicyTypesExactly(true).build();
222 filteredList = filter.filter(pdpGroupList);
223 assertEquals(2, filteredList.size());
225 identifierList.clear();
226 identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.0", "1.2.3"));
227 identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.1", "4.5.6"));
228 identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.2", "7.8.9"));
229 filter = PdpGroupFilter.builder().policyTypeList(identifierList).matchPolicyTypesExactly(true).build();
230 filteredList = filter.filter(pdpGroupList);
231 assertEquals(1, filteredList.size());
233 identifierList.clear();
234 identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.0", "1.2.3"));
235 identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.1", "4.5.6"));
236 identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.3", "0.1.2"));
237 filter = PdpGroupFilter.builder().policyTypeList(identifierList).matchPolicyTypesExactly(true).build();
238 filteredList = filter.filter(pdpGroupList);
239 assertEquals(1, filteredList.size());
241 identifierList.clear();
242 identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.1", "4.5.6"));
243 identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.3", "0.1.2"));
244 filter = PdpGroupFilter.builder().policyTypeList(identifierList).matchPolicyTypesExactly(true).build();
245 filteredList = filter.filter(pdpGroupList);
246 assertEquals(1, filteredList.size());
250 public void testFilterPolicy() {
251 List<ToscaPolicyIdentifier> identifierList = new ArrayList<>();
253 identifierList.add(new ToscaPolicyIdentifier("Nonexistant", "1.2.3"));
254 PdpGroupFilter filter =
255 PdpGroupFilter.builder().policyList(identifierList).build();
256 List<PdpGroup> filteredList = filter.filter(pdpGroupList);
257 assertEquals(0, filteredList.size());
258 identifierList.clear();
260 identifierList.add(new ToscaPolicyIdentifier("Policy0", "9.9.9"));
261 filter = PdpGroupFilter.builder().policyList(identifierList).build();
262 filteredList = filter.filter(pdpGroupList);
263 assertEquals(0, filteredList.size());
264 identifierList.clear();
266 identifierList.add(new ToscaPolicyIdentifier("Policy0", "4.5.6"));
267 filter = PdpGroupFilter.builder().policyList(identifierList).build();
268 filteredList = filter.filter(pdpGroupList);
269 assertEquals(4, filteredList.size());
270 identifierList.clear();
272 identifierList.add(new ToscaPolicyIdentifier("Policy1", "4.5.6"));
273 filter = PdpGroupFilter.builder().policyList(identifierList).build();
274 filteredList = filter.filter(pdpGroupList);
275 assertEquals(1, filteredList.size());
276 identifierList.clear();
278 identifierList.add(new ToscaPolicyIdentifier("Policy2", "4.5.6"));
279 filter = PdpGroupFilter.builder().policyList(identifierList).build();
280 filteredList = filter.filter(pdpGroupList);
281 assertEquals(2, filteredList.size());
282 identifierList.clear();
284 identifierList.add(new ToscaPolicyIdentifier("Policy3", "1.2.3"));
285 filter = PdpGroupFilter.builder().policyList(identifierList).build();
286 filteredList = filter.filter(pdpGroupList);
287 assertEquals(1, filteredList.size());
288 identifierList.clear();
290 identifierList.add(new ToscaPolicyIdentifier("Nonexistant", "1.2.3"));
291 identifierList.add(new ToscaPolicyIdentifier("Policy0", "9.9.9"));
292 identifierList.add(new ToscaPolicyIdentifier("Policy0", "4.5.6"));
293 identifierList.add(new ToscaPolicyIdentifier("Policy1", "4.5.6"));
294 identifierList.add(new ToscaPolicyIdentifier("Policy2", "4.5.6"));
295 identifierList.add(new ToscaPolicyIdentifier("Policy3", "1.2.3"));
296 filter = PdpGroupFilter.builder().policyList(identifierList).build();
297 filteredList = filter.filter(pdpGroupList);
298 assertEquals(5, filteredList.size());
300 filter = PdpGroupFilter.builder().policyList(identifierList).matchPoliciesExactly(true).build();
301 filteredList = filter.filter(pdpGroupList);
302 assertEquals(0, filteredList.size());
304 identifierList.clear();
305 identifierList.add(new ToscaPolicyIdentifier("Policy0", "4.5.6"));
306 filter = PdpGroupFilter.builder().policyList(identifierList).matchPoliciesExactly(true).build();
307 filteredList = filter.filter(pdpGroupList);
308 assertEquals(3, filteredList.size());
310 identifierList.clear();
311 identifierList.add(new ToscaPolicyIdentifier("Policy0", "4.5.6"));
312 identifierList.add(new ToscaPolicyIdentifier("Policy1", "4.5.6"));
313 filter = PdpGroupFilter.builder().policyList(identifierList).matchPoliciesExactly(true).build();
314 filteredList = filter.filter(pdpGroupList);
315 assertEquals(1, filteredList.size());
317 identifierList.clear();
318 identifierList.add(new ToscaPolicyIdentifier("Policy2", "4.5.6"));
319 filter = PdpGroupFilter.builder().policyList(identifierList).matchPoliciesExactly(true).build();
320 filteredList = filter.filter(pdpGroupList);
321 assertEquals(1, filteredList.size());
323 identifierList.clear();
324 identifierList.add(new ToscaPolicyIdentifier("Policy2", "4.5.6"));
325 identifierList.add(new ToscaPolicyIdentifier("Policy3", "1.2.3"));
326 filter = PdpGroupFilter.builder().policyList(identifierList).matchPoliciesExactly(true).build();
327 filteredList = filter.filter(pdpGroupList);
328 assertEquals(1, filteredList.size());