2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2018 AT&T Intellectual Property. All rights reserved.
6 * Modifications Copyright (C) 2019 Nordix Foundation.
7 * ================================================================================
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
19 * ============LICENSE_END=========================================================
22 package org.onap.policy.rest.util;
24 import static org.assertj.core.api.Assertions.assertThatThrownBy;
25 import static org.junit.Assert.assertEquals;
26 import static org.junit.Assert.assertFalse;
27 import static org.junit.Assert.assertNotNull;
28 import static org.junit.Assert.assertNull;
29 import static org.junit.Assert.assertTrue;
31 import com.att.eelf.configuration.EELFLogger;
32 import com.att.eelf.configuration.EELFLogger.Level;
33 import com.att.eelf.configuration.EELFManager;
34 import com.att.research.xacml.api.pap.PDP;
35 import com.att.research.xacml.api.pap.PDPPolicy;
36 import com.fasterxml.jackson.databind.ObjectMapper;
38 import java.io.IOException;
39 import java.util.HashSet;
42 import org.junit.Before;
43 import org.junit.Test;
44 import org.onap.policy.common.logging.eelf.PolicyLogger;
45 import org.onap.policy.rest.util.PdpPolicyContainer.PdpPolicyItem;
46 import org.onap.policy.xacml.std.pap.StdPDP;
47 import org.onap.policy.xacml.std.pap.StdPDPGroup;
48 import org.onap.policy.xacml.std.pap.StdPDPPolicy;
50 public class PdpPolicyContainerTest {
52 PdpPolicyContainer container;
60 group = new StdPDPGroup();
61 group.setDefault(true);
62 group.setDefaultGroup(true);
63 group.setDescription("Test");
65 group.setName("Test");
66 group.setOnapPdps(new HashSet<>());
67 group.setOperation("Test");
68 group.setPipConfigs(new HashSet<>());
69 policy = new StdPDPPolicy();
70 policy.setName("Config_test.1.xml");
71 policy.setId("Config_test");
72 policy.setVersion("1.0");
73 policy.setDescription("testDescription");
75 HashSet<PDPPolicy> policies = new HashSet<>();
77 group.setPolicies(policies);
78 group.setSelectedPolicies(new HashSet<>());
79 container = new PdpPolicyContainer(group);
83 public void testPdpPolicyContainer() {
84 container.nextItemId(policy);
85 container.prevItemId(policy);
86 container.firstItemId();
87 container.lastItemId();
88 container.isFirstId(policy);
89 container.isLastId(policy);
90 container.addItemAfter(policy);
91 container.getContainerPropertyIds();
92 container.getItemIds();
93 container.getType("Id");
94 assertNull(container.getType("NonExistant"));
95 assertTrue(String.class.equals(String.class));
96 container.getType("Name");
97 assertTrue(String.class.equals(String.class));
98 container.getType("Version");
99 assertTrue(String.class.equals(String.class));
100 container.getType("Description");
101 assertTrue(String.class.equals(String.class));
102 container.getType("Root");
103 assertTrue(Boolean.class.equals(Boolean.class));
104 assertTrue(container.size() == 1);
105 container.containsId(policy);
106 container.removeItem(policy);
107 container.addContainerProperty(null, null, null);
108 container.removeContainerProperty(policy);
109 container.removeAllItems();
111 assertFalse(container.isFirstId(policy));
112 assertFalse(container.isLastId(policy));
113 assertNull(container.firstItemId());
114 assertNull(container.lastItemId());
115 assertNull(container.prevItemId(policy));
117 assertThatThrownBy(() -> container.getItemIds(0, -1)).isInstanceOf(IllegalArgumentException.class);
119 container.addItemAt(0);
123 public void testPdpPolicyContainerWithTrace() {
124 EELFLogger debugLogger = EELFManager.getInstance().getDebugLogger();
126 final Level currentLevel = PolicyLogger.getDebugLevel();
127 debugLogger.setLevel(Level.TRACE);
129 testPdpPolicyContainer();
130 debugLogger.setLevel(currentLevel);
133 @Test(expected = NullPointerException.class)
134 public void testConstructor() {
135 // Test PDP based constructor
136 PDP pdp = new StdPDP();
137 PdpPolicyContainer container1 = new PdpPolicyContainer(pdp);
138 assertNotNull(container1);
140 // Test set based constructor
141 Set<PDPPolicy> set = new HashSet<PDPPolicy>();
142 PdpPolicyContainer container2 = new PdpPolicyContainer(set);
143 assertNotNull(container2);
145 // Test object based constructor
146 PdpPolicyContainer container3 = new PdpPolicyContainer("testObject");
147 assertNotNull(container3);
150 @Test(expected = UnsupportedOperationException.class)
151 public void testAddItem() {
156 public void testGettersWithTrace() {
157 EELFLogger debugLogger = EELFManager.getInstance().getDebugLogger();
159 final Level currentLevel = PolicyLogger.getDebugLevel();
160 debugLogger.setLevel(Level.TRACE);
163 debugLogger.setLevel(currentLevel);
167 public void testGetters() {
168 assertNull(container.nextItemId("testItem"));
169 assertNull(container.prevItemId("testItem"));
170 assertNotNull(container.firstItemId());
171 assertNotNull(container.lastItemId());
172 assertEquals(container.indexOfId("testItem"), -1);
173 assertNotNull(container.getIdByIndex(0));
174 assertNotNull(container.getItemIds(0, 1));
178 public void testPdpPolicyItemWithTrace() {
179 EELFLogger debugLogger = EELFManager.getInstance().getDebugLogger();
181 final Level currentLevel = PolicyLogger.getDebugLevel();
182 debugLogger.setLevel(Level.TRACE);
185 debugLogger.setLevel(currentLevel);
189 public void testPdpPolicyItem() {
190 PdpPolicyItem item = container.new PdpPolicyItem(policy);
191 assertEquals("Config_test", item.getId());
192 assertEquals("Config_test.1.xml", item.getName());
193 assertEquals("1.0", item.getVersion());
194 assertEquals("testDescription", item.getDescription());
196 assertEquals(true, item.getRoot());
200 public void testContainerListOfPolicies() {
201 StdPDPGroup testGroup = new StdPDPGroup();
202 testGroup.setDefault(true);
203 testGroup.setDefaultGroup(true);
204 testGroup.setDescription("Test");
205 testGroup.setId("Test");
206 testGroup.setName("Test");
207 testGroup.setOnapPdps(new HashSet<>());
208 testGroup.setOperation("Test");
209 testGroup.setPipConfigs(new HashSet<>());
211 StdPDPPolicy testPolicy0 = new StdPDPPolicy();
212 testPolicy0.setName("Config_test.0.xml");
213 testPolicy0.setId("Config_test0");
214 testPolicy0.setVersion("1.0");
215 testPolicy0.setDescription("testDescription0");
217 StdPDPPolicy testPolicy1 = new StdPDPPolicy();
218 testPolicy1.setName("Config_test.1.xml");
219 testPolicy1.setId("Config_test1");
220 testPolicy1.setVersion("1.0");
221 testPolicy1.setDescription("testDescription1");
223 HashSet<PDPPolicy> policies = new HashSet<>();
224 policies.add(testPolicy0);
225 policies.add(testPolicy1);
227 testGroup.setPolicies(policies);
228 testGroup.setSelectedPolicies(new HashSet<>());
229 PdpPolicyContainer testContainer = new PdpPolicyContainer(testGroup);
231 assertEquals("Config_test0", ((PdpPolicyItem) testContainer.nextItemId(testPolicy1)).getId());
232 assertEquals("Config_test1", ((PdpPolicyItem) testContainer.prevItemId(testPolicy0)).getId());
234 ObjectMapper mapper = new ObjectMapper();
236 mapper.writeValue(System.err, testPolicy0);
237 } catch (IOException e) {
238 // TODO Auto-generated catch block
243 assertTrue(testContainer.removeItem("{"
244 + "\"PDPPolicyType\":\"StdPDPPolicy\","
245 + "\"id\":\"Config_test0\","
246 + "\"name\":\"Config_test.0.xml\","
247 + "\"policyId\":null,"
248 + "\"description\":\"testDescription0\","
249 + "\"version\":\"1.0\","
250 + "\"location\":null,"
254 assertFalse(testContainer.removeItem("{"
255 + "\"PDPPolicyType\":\"StdPDPPolicy\","
256 + "\"id\":\"Config_test99\","
257 + "\"name\":\"Config_test.0.xml\","
258 + "\"policyId\":null,"
259 + "\"description\":\"testDescription0\","
260 + "\"version\":\"1.0\","
261 + "\"location\":null,"