Unit/SONAR/Checkstyle in ONAP-REST
[policy/engine.git] / ONAP-REST / src / test / java / org / onap / policy / rest / util / PdpPolicyContainerTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP Policy Engine
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
11  *
12  *      http://www.apache.org/licenses/LICENSE-2.0
13  *
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=========================================================
20  */
21
22 package org.onap.policy.rest.util;
23
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;
30
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;
37
38 import java.io.IOException;
39 import java.util.HashSet;
40 import java.util.Set;
41
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;
49
50 public class PdpPolicyContainerTest {
51     StdPDPGroup group;
52     PdpPolicyContainer container;
53     StdPDPPolicy policy;
54
55     /**
56      * Set test up.
57      */
58     @Before
59     public void setUp() {
60         group = new StdPDPGroup();
61         group.setDefault(true);
62         group.setDefaultGroup(true);
63         group.setDescription("Test");
64         group.setId("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");
74
75         HashSet<PDPPolicy> policies = new HashSet<>();
76         policies.add(policy);
77         group.setPolicies(policies);
78         group.setSelectedPolicies(new HashSet<>());
79         container = new PdpPolicyContainer(group);
80     }
81
82     @Test
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();
110
111         assertFalse(container.isFirstId(policy));
112         assertFalse(container.isLastId(policy));
113         assertNull(container.firstItemId());
114         assertNull(container.lastItemId());
115         assertNull(container.prevItemId(policy));
116
117         assertThatThrownBy(() -> container.getItemIds(0, -1)).isInstanceOf(IllegalArgumentException.class);
118
119         container.addItemAt(0);
120     }
121
122     @Test
123     public void testPdpPolicyContainerWithTrace() {
124         EELFLogger debugLogger = EELFManager.getInstance().getDebugLogger();
125
126         final Level currentLevel = PolicyLogger.getDebugLevel();
127         debugLogger.setLevel(Level.TRACE);
128
129         testPdpPolicyContainer();
130         debugLogger.setLevel(currentLevel);
131     }
132
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);
139
140         // Test set based constructor
141         Set<PDPPolicy> set = new HashSet<PDPPolicy>();
142         PdpPolicyContainer container2 = new PdpPolicyContainer(set);
143         assertNotNull(container2);
144
145         // Test object based constructor
146         PdpPolicyContainer container3 = new PdpPolicyContainer("testObject");
147         assertNotNull(container3);
148     }
149
150     @Test(expected = UnsupportedOperationException.class)
151     public void testAddItem() {
152         container.addItem();
153     }
154
155     @Test
156     public void testGettersWithTrace() {
157         EELFLogger debugLogger = EELFManager.getInstance().getDebugLogger();
158
159         final Level currentLevel = PolicyLogger.getDebugLevel();
160         debugLogger.setLevel(Level.TRACE);
161
162         testGetters();
163         debugLogger.setLevel(currentLevel);
164     }
165
166     @Test
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));
175     }
176
177     @Test
178     public void testPdpPolicyItemWithTrace() {
179         EELFLogger debugLogger = EELFManager.getInstance().getDebugLogger();
180
181         final Level currentLevel = PolicyLogger.getDebugLevel();
182         debugLogger.setLevel(Level.TRACE);
183
184         testPdpPolicyItem();
185         debugLogger.setLevel(currentLevel);
186     }
187
188     @Test
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());
195         item.setRoot(true);
196         assertEquals(true, item.getRoot());
197     }
198
199     @Test
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<>());
210
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");
216
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");
222
223         HashSet<PDPPolicy> policies = new HashSet<>();
224         policies.add(testPolicy0);
225         policies.add(testPolicy1);
226
227         testGroup.setPolicies(policies);
228         testGroup.setSelectedPolicies(new HashSet<>());
229         PdpPolicyContainer testContainer = new PdpPolicyContainer(testGroup);
230
231         assertEquals("Config_test0", ((PdpPolicyItem) testContainer.nextItemId(testPolicy1)).getId());
232         assertEquals("Config_test1", ((PdpPolicyItem) testContainer.prevItemId(testPolicy0)).getId());
233
234         ObjectMapper mapper = new ObjectMapper();
235         try {
236             mapper.writeValue(System.err, testPolicy0);
237         } catch (IOException e) {
238             // TODO Auto-generated catch block
239             e.printStackTrace();
240         }
241
242         // @formatter:off
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,"
251                         + "\"valid\":false,"
252                         + "\"root\":false"
253                         + "}"));
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,"
262                         + "\"valid\":false,"
263                         + "\"root\":false"
264                         + "}"));
265         // @formatter:on
266     }
267 }