Merge "Handle null policy lists"
[policy/pap.git] / main / src / test / java / org / onap / policy / pap / main / comm / msgdata / UpdateReqTest.java
1 /*
2  * ============LICENSE_START=======================================================
3  * ONAP PAP
4  * ================================================================================
5  * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.policy.pap.main.comm.msgdata;
22
23 import static org.junit.Assert.assertEquals;
24 import static org.junit.Assert.assertFalse;
25 import static org.junit.Assert.assertNull;
26 import static org.junit.Assert.assertSame;
27 import static org.junit.Assert.assertTrue;
28
29 import java.util.ArrayList;
30 import java.util.Arrays;
31 import java.util.stream.Collectors;
32 import org.junit.Before;
33 import org.junit.Test;
34 import org.onap.policy.models.pdp.concepts.PdpStateChange;
35 import org.onap.policy.models.pdp.concepts.PdpStatus;
36 import org.onap.policy.models.pdp.concepts.PdpUpdate;
37 import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
38 import org.onap.policy.pap.main.comm.CommonRequestBase;
39
40 public class UpdateReqTest extends CommonRequestBase {
41
42     private UpdateReq data;
43     private PdpUpdate update;
44     private PdpStatus response;
45
46     /**
47      * Sets up.
48      * @throws Exception if an error occurs
49      */
50     @Before
51     public void setUp() throws Exception {
52         super.setUp();
53
54         response = new PdpStatus();
55
56         update = makeUpdate();
57
58         response.setName(MY_NAME);
59         response.setPdpGroup(update.getPdpGroup());
60         response.setPdpSubgroup(update.getPdpSubgroup());
61         response.setPolicies(
62                         update.getPolicies().stream().map(ToscaPolicy::getIdentifier).collect(Collectors.toList()));
63
64         data = new UpdateReq(reqParams, MY_REQ_NAME, update);
65     }
66
67     @Test
68     public void testGetMessage() {
69         assertEquals(MY_REQ_NAME, data.getName());
70         assertSame(update, data.getMessage());
71     }
72
73     @Test
74     public void testCheckResponse() {
75         assertNull(data.checkResponse(response));
76
77         // both policy lists null
78         update.setPolicies(null);
79         response.setPolicies(null);
80         assertNull(data.checkResponse(response));
81     }
82
83     @Test
84     public void testCheckResponse_NullName() {
85         response.setName(null);
86
87         assertEquals("null PDP name", data.checkResponse(response));
88     }
89
90     @Test
91     public void testCheckResponse_NullMsgName() {
92         update.setName(null);
93
94         assertEquals(null, data.checkResponse(response));
95     }
96
97     @Test
98     public void testUpdateReqCheckResponse_MismatchedGroup() {
99         response.setPdpGroup(DIFFERENT);
100
101         assertEquals("group does not match", data.checkResponse(response));
102     }
103
104     @Test
105     public void testUpdateReqCheckResponse_MismatchedSubGroup() {
106         response.setPdpSubgroup(DIFFERENT);
107
108         assertEquals("subgroup does not match", data.checkResponse(response));
109     }
110
111     @Test
112     public void testUpdateReqCheckResponse_MismatchedPolicies() {
113         ArrayList<ToscaPolicy> policies = new ArrayList<>(update.getPolicies());
114         policies.set(0, makePolicy(DIFFERENT, "10.0.0"));
115
116         response.setPolicies(policies.stream().map(ToscaPolicy::getIdentifier).collect(Collectors.toList()));
117
118         assertEquals("policies do not match", data.checkResponse(response));
119     }
120
121     @Test
122     public void testUpdateReqCheckResponse_MismatchedPolicies_Null_NotNull() {
123         update.setPolicies(null);
124
125         assertEquals("policies do not match", data.checkResponse(response));
126     }
127
128     @Test
129     public void testUpdateReqCheckResponse_MismatchedPolicies_NotNull_Null() {
130         response.setPolicies(null);
131
132         assertEquals("policies do not match", data.checkResponse(response));
133     }
134
135     @Test
136     public void isSameContent() {
137         PdpUpdate msg2 = new PdpUpdate(update);
138         msg2.setName("world");
139         assertTrue(data.isSameContent(new UpdateReq(reqParams, MY_REQ_NAME, msg2)));
140
141         // different request type
142         assertFalse(data.isSameContent(new StateChangeReq(reqParams, MY_REQ_NAME, new PdpStateChange())));
143
144         // both policy lists null
145         update.setPolicies(null);
146         msg2.setPolicies(null);
147         assertTrue(data.isSameContent(new UpdateReq(reqParams, MY_REQ_NAME, msg2)));
148     }
149
150     @Test
151     public void isSameContent_BothGroupNamesNull() {
152         PdpUpdate msg2 = new PdpUpdate(update);
153         msg2.setPdpGroup(null);
154         update.setPdpGroup(null);
155         assertTrue(data.isSameContent(new UpdateReq(reqParams, MY_REQ_NAME, msg2)));
156     }
157
158     @Test
159     public void isSameContent_BothSubGroupNamesNull() {
160         PdpUpdate msg2 = new PdpUpdate(update);
161         msg2.setPdpSubgroup(null);
162         update.setPdpSubgroup(null);
163         assertTrue(data.isSameContent(new UpdateReq(reqParams, MY_REQ_NAME, msg2)));
164     }
165
166     @Test
167     public void isSameContent_DiffGroup() {
168         PdpUpdate msg2 = new PdpUpdate(update);
169         msg2.setPdpGroup(null);
170         assertFalse(data.isSameContent(new UpdateReq(reqParams, MY_REQ_NAME, msg2)));
171
172         msg2.setPdpGroup(DIFFERENT);
173         assertFalse(data.isSameContent(new UpdateReq(reqParams, MY_REQ_NAME, msg2)));
174
175         update.setPdpGroup(null);
176         assertFalse(data.isSameContent(new UpdateReq(reqParams, MY_REQ_NAME, msg2)));
177     }
178
179     @Test
180     public void isSameContent_DiffSubGroup() {
181         PdpUpdate msg2 = new PdpUpdate(update);
182         msg2.setPdpSubgroup(null);
183         assertFalse(data.isSameContent(new UpdateReq(reqParams, MY_REQ_NAME, msg2)));
184
185         msg2.setPdpSubgroup(DIFFERENT);
186         assertFalse(data.isSameContent(new UpdateReq(reqParams, MY_REQ_NAME, msg2)));
187
188         update.setPdpSubgroup(null);
189         assertFalse(data.isSameContent(new UpdateReq(reqParams, MY_REQ_NAME, msg2)));
190     }
191
192     @Test
193     public void isSameContent_DiffPolicies() {
194         PdpUpdate msg2 = new PdpUpdate(update);
195
196         ArrayList<ToscaPolicy> policies = new ArrayList<>(update.getPolicies());
197         policies.set(0, makePolicy(DIFFERENT, "10.0.0"));
198         msg2.setPolicies(policies);
199
200         assertFalse(data.isSameContent(new UpdateReq(reqParams, MY_REQ_NAME, msg2)));
201     }
202
203     @Test
204     public void isSameContent_DiffPolicies_NotNull_Null() {
205         PdpUpdate msg2 = new PdpUpdate(update);
206         msg2.setPolicies(null);
207
208         assertFalse(data.isSameContent(new UpdateReq(reqParams, MY_REQ_NAME, msg2)));
209     }
210
211     @Test
212     public void isSameContent_DiffPolicies_Null_NotNull() {
213         PdpUpdate msg2 = new PdpUpdate(update);
214
215         update.setPolicies(null);
216
217         assertFalse(data.isSameContent(new UpdateReq(reqParams, MY_REQ_NAME, msg2)));
218     }
219
220     @Test
221     public void testGetPriority() {
222         assertTrue(data.getPriority() > new StateChangeReq(reqParams, MY_REQ_NAME, new PdpStateChange()).getPriority());
223     }
224
225     /**
226      * Makes an update message.
227      *
228      * @return a new update message
229      */
230     private PdpUpdate makeUpdate() {
231         PdpUpdate upd = new PdpUpdate();
232
233         upd.setDescription("update-description");
234         upd.setName(MY_NAME);
235         upd.setPdpGroup(MY_GROUP);
236         upd.setPdpSubgroup(MY_SUBGROUP);
237
238         ToscaPolicy policy1 = makePolicy("policy-1-a", "1.0.0");
239         ToscaPolicy policy2 = makePolicy("policy-2-a", "1.1.0");
240
241         upd.setPolicies(Arrays.asList(policy1, policy2));
242
243         return upd;
244     }
245 }