Merge "Fix database properties"
[policy/models.git] / models-pdp / src / test / java / org / onap / policy / models / pdp / persistence / provider / PdpProviderTest.java
1 /*-
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
9  *
10  *      http://www.apache.org/licenses/LICENSE-2.0
11  *
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.
17  *
18  * SPDX-License-Identifier: Apache-2.0
19  * ============LICENSE_END=========================================================
20  */
21
22 package org.onap.policy.models.pdp.persistence.provider;
23
24 import static org.assertj.core.api.Assertions.assertThatThrownBy;
25 import static org.junit.Assert.assertEquals;
26 import static org.junit.Assert.assertNotEquals;
27 import static org.junit.Assert.assertTrue;
28
29 import java.util.ArrayList;
30 import java.util.List;
31 import java.util.Properties;
32
33 import org.junit.After;
34 import org.junit.Before;
35 import org.junit.Test;
36 import org.onap.policy.common.utils.coder.StandardCoder;
37 import org.onap.policy.common.utils.resources.ResourceUtils;
38 import org.onap.policy.models.base.PfModelException;
39 import org.onap.policy.models.dao.DaoParameters;
40 import org.onap.policy.models.dao.PfDao;
41 import org.onap.policy.models.dao.PfDaoFactory;
42 import org.onap.policy.models.dao.impl.DefaultPfDao;
43 import org.onap.policy.models.pdp.concepts.Pdp;
44 import org.onap.policy.models.pdp.concepts.PdpGroup;
45 import org.onap.policy.models.pdp.concepts.PdpGroupFilter;
46 import org.onap.policy.models.pdp.concepts.PdpGroups;
47 import org.onap.policy.models.pdp.concepts.PdpStatistics;
48 import org.onap.policy.models.pdp.concepts.PdpSubGroup;
49 import org.onap.policy.models.pdp.enums.PdpHealthStatus;
50 import org.onap.policy.models.pdp.enums.PdpState;
51 import org.onap.policy.models.pdp.persistence.provider.PdpProvider;
52 import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyIdentifier;
53 import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyTypeIdentifier;
54 import org.onap.policy.models.tosca.simple.provider.SimpleToscaProvider;
55
56 /**
57  * Test the {@link SimpleToscaProvider} class.
58  *
59  * @author Liam Fallon (liam.fallon@est.tech)
60  */
61 public class PdpProviderTest {
62     private PfDao pfDao;
63     private StandardCoder standardCoder;
64
65
66     /**
67      * Set up the DAO towards the database.
68      *
69      * @throws Exception on database errors
70      */
71     @Before
72     public void setupDao() throws Exception {
73         final DaoParameters daoParameters = new DaoParameters();
74         daoParameters.setPluginClass(DefaultPfDao.class.getCanonicalName());
75
76         daoParameters.setPersistenceUnit("ToscaConceptTest");
77
78         Properties jdbcProperties = new Properties();
79         jdbcProperties.setProperty("javax.persistence.jdbc.user", "policy");
80         jdbcProperties.setProperty("javax.persistence.jdbc.password", "P01icY");
81
82         // H2
83         jdbcProperties.setProperty("javax.persistence.jdbc.driver", "org.h2.Driver");
84         jdbcProperties.setProperty("javax.persistence.jdbc.url", "jdbc:h2:mem:testdb");
85
86         // MariaDB
87         //jdbcProperties.setProperty("javax.persistence.jdbc.driver", "org.mariadb.jdbc.Driver");
88         //jdbcProperties.setProperty("javax.persistence.jdbc.url", "jdbc:mariadb://localhost:3306/policy");
89
90         daoParameters.setJdbcProperties(jdbcProperties );
91
92         pfDao = new PfDaoFactory().createPfDao(daoParameters);
93         pfDao.init(daoParameters);
94     }
95
96     /**
97      * Set up GSON.
98      */
99     @Before
100     public void setupGson() {
101         standardCoder = new StandardCoder();
102     }
103
104     @After
105     public void teardown() throws Exception {
106         pfDao.close();
107     }
108
109     @Test
110     public void testGroupsGet() throws Exception {
111         assertThatThrownBy(() -> {
112             new PdpProvider().getPdpGroups(null, null, null);
113         }).hasMessage("dao is marked @NonNull but is null");
114
115         assertThatThrownBy(() -> {
116             new PdpProvider().getPdpGroups(null, null, "version");
117         }).hasMessage("dao is marked @NonNull but is null");
118
119         assertThatThrownBy(() -> {
120             new PdpProvider().getPdpGroups(null, "name", "version");
121         }).hasMessage("dao is marked @NonNull but is null");
122
123         String originalJson = ResourceUtils.getResourceAsString("testdata/PdpGroups0.json");
124         PdpGroups pdpGroups0 = standardCoder.decode(originalJson, PdpGroups.class);
125
126         PdpGroups createdPdpGroups0 = new PdpGroups();
127         createdPdpGroups0.setGroups(new PdpProvider().createPdpGroups(pfDao, pdpGroups0.getGroups()));
128         String createdJson = standardCoder.encode(createdPdpGroups0);
129         assertEquals(originalJson.replaceAll("\\s+", ""), createdJson.replaceAll("\\s+", ""));
130
131         PdpGroups gotPdpGroups0 = new PdpGroups();
132         gotPdpGroups0.setGroups(new PdpProvider().getPdpGroups(pfDao, "PdpGroup0", "1.2.3"));
133
134         String gotJson = standardCoder.encode(gotPdpGroups0);
135
136         assertEquals(originalJson.replaceAll("\\s+", ""), gotJson.replaceAll("\\s+", ""));
137     }
138
139     @Test
140     public void testFilteredPdpGroupGet() throws Exception {
141         assertThatThrownBy(() -> {
142             new PdpProvider().getFilteredPdpGroups(null, null);
143         }).hasMessage("dao is marked @NonNull but is null");
144
145         assertThatThrownBy(() -> {
146             new PdpProvider().getFilteredPdpGroups(null, PdpGroupFilter.builder().build());
147         }).hasMessage("dao is marked @NonNull but is null");
148
149         assertThatThrownBy(() -> {
150             new PdpProvider().getFilteredPdpGroups(pfDao, null);
151         }).hasMessage("filter is marked @NonNull but is null");
152
153         String originalJson = ResourceUtils.getResourceAsString("testdata/PdpGroupsForFiltering.json");
154         PdpGroups pdpGroups0 = standardCoder.decode(originalJson, PdpGroups.class);
155
156         assertEquals(5, new PdpProvider().createPdpGroups(pfDao, pdpGroups0.getGroups()).size());
157
158         List<ToscaPolicyTypeIdentifier> policyTypeList = new ArrayList<>();
159         policyTypeList.add(new ToscaPolicyTypeIdentifier("policy.type.0", "1.2.3"));
160
161         List<ToscaPolicyIdentifier> policyList = new ArrayList<>();
162         policyList.add(new ToscaPolicyIdentifier("Policy0", "4.5.6"));
163
164         // @formatter:off
165         final PdpGroupFilter filter = PdpGroupFilter.builder()
166                 .groupState(PdpState.PASSIVE)
167                 .name("PdpGroup0")
168                 .version("1.2.3")
169                 .matchPoliciesExactly(false)
170                 .matchPolicyTypesExactly(false)
171                 .pdpState(PdpState.PASSIVE)
172                 .pdpType("APEX")
173                 .policyTypeList(policyTypeList)
174                 .policyList(policyList)
175                 .build();
176         // @formatter:on
177         assertEquals(1, new PdpProvider().getFilteredPdpGroups(pfDao, filter).size());
178     }
179
180     @Test
181     public void testGroupsCreate() throws Exception {
182         assertThatThrownBy(() -> {
183             new PdpProvider().createPdpGroups(null, null);
184         }).hasMessage("dao is marked @NonNull but is null");
185
186         assertThatThrownBy(() -> {
187             new PdpProvider().createPdpGroups(null, new ArrayList<>());
188         }).hasMessage("dao is marked @NonNull but is null");
189
190         assertThatThrownBy(() -> {
191             new PdpProvider().createPdpGroups(pfDao, null);
192         }).hasMessage("pdpGroups is marked @NonNull but is null");
193
194         String originalJson = ResourceUtils.getResourceAsString("testdata/PdpGroups0.json");
195         PdpGroups pdpGroups0 = standardCoder.decode(originalJson, PdpGroups.class);
196
197         PdpGroups createdPdpGroups0 = new PdpGroups();
198         createdPdpGroups0.setGroups(new PdpProvider().createPdpGroups(pfDao, pdpGroups0.getGroups()));
199         String createdJson = standardCoder.encode(createdPdpGroups0);
200         assertEquals(originalJson.replaceAll("\\s+", ""), createdJson.replaceAll("\\s+", ""));
201
202         PdpGroups gotPdpGroups0 = new PdpGroups();
203         gotPdpGroups0.setGroups(new PdpProvider().getPdpGroups(pfDao, "PdpGroup0", "1.2.3"));
204
205         String gotJson = standardCoder.encode(gotPdpGroups0);
206         assertEquals(originalJson.replaceAll("\\s+", ""), gotJson.replaceAll("\\s+", ""));
207
208         pdpGroups0.getGroups().get(0).setPdpGroupState(null);
209         assertThatThrownBy(() -> {
210             new PdpProvider().createPdpGroups(pfDao, pdpGroups0.getGroups());
211         }).hasMessageContaining("INVALID:pdpGroupState may not be null");
212     }
213
214     @Test
215     public void testGroupsCreateNoPdp() throws Exception {
216         String originalJson = ResourceUtils.getResourceAsString("testdata/PdpGroupsNoPDPs.json");
217
218         PdpGroups pdpGroups0 = standardCoder.decode(originalJson, PdpGroups.class);
219
220         PdpGroups createdPdpGroups0 = new PdpGroups();
221         createdPdpGroups0.setGroups(new PdpProvider().createPdpGroups(pfDao, pdpGroups0.getGroups()));
222         assertNotEquals(pdpGroups0, createdPdpGroups0);
223         pdpGroups0.getGroups().get(0).getPdpSubgroups().get(0).setPdpInstances(new ArrayList<>());
224         String originalTweakedJson = standardCoder.encode(pdpGroups0);
225         String createdJson = standardCoder.encode(createdPdpGroups0);
226         assertEquals(originalTweakedJson.replaceAll("\\s+", ""), createdJson.replaceAll("\\s+", ""));
227
228         PdpGroups gotPdpGroups0 = new PdpGroups();
229         gotPdpGroups0.setGroups(new PdpProvider().getPdpGroups(pfDao, "TestPdpGroup", "1.2.3"));
230
231         String gotJson = standardCoder.encode(gotPdpGroups0);
232         assertEquals(originalTweakedJson.replaceAll("\\s+", ""), gotJson.replaceAll("\\s+", ""));
233     }
234
235     @Test
236     public void testGroupsUpdate() throws Exception {
237         assertThatThrownBy(() -> {
238             new PdpProvider().updatePdpGroups(null, null);
239         }).hasMessage("dao is marked @NonNull but is null");
240
241         assertThatThrownBy(() -> {
242             new PdpProvider().updatePdpGroups(null, new ArrayList<>());
243         }).hasMessage("dao is marked @NonNull but is null");
244
245         assertThatThrownBy(() -> {
246             new PdpProvider().updatePdpGroups(pfDao, null);
247         }).hasMessage("pdpGroups is marked @NonNull but is null");
248
249         String originalJson = ResourceUtils.getResourceAsString("testdata/PdpGroups0.json");
250         PdpGroups pdpGroups0 = standardCoder.decode(originalJson, PdpGroups.class);
251
252         PdpGroups createdPdpGroups0 = new PdpGroups();
253         createdPdpGroups0.setGroups(new PdpProvider().createPdpGroups(pfDao, pdpGroups0.getGroups()));
254         String createdJson = standardCoder.encode(createdPdpGroups0);
255         assertEquals(originalJson.replaceAll("\\s+", ""), createdJson.replaceAll("\\s+", ""));
256
257         PdpGroups gotPdpGroups0 = new PdpGroups();
258         gotPdpGroups0.setGroups(new PdpProvider().getPdpGroups(pfDao, "PdpGroup0", "1.2.3"));
259
260         String gotJson = standardCoder.encode(gotPdpGroups0);
261         assertEquals(originalJson.replaceAll("\\s+", ""), gotJson.replaceAll("\\s+", ""));
262
263         String updateJson = ResourceUtils.getResourceAsString("testdata/PdpGroups0Update.json");
264         PdpGroups updatePdpGroups0 = standardCoder.decode(updateJson, PdpGroups.class);
265
266         PdpGroups updatedPdpGroups0 = new PdpGroups();
267         updatedPdpGroups0.setGroups(new PdpProvider().updatePdpGroups(pfDao, updatePdpGroups0.getGroups()));
268
269         List<Pdp> beforePdpInstances = updatePdpGroups0.getGroups().get(0).getPdpSubgroups().get(0).getPdpInstances();
270         List<Pdp> afterPdpInstances = updatedPdpGroups0.getGroups().get(0).getPdpSubgroups().get(0).getPdpInstances();
271         assertTrue(beforePdpInstances.containsAll(afterPdpInstances));
272
273         pdpGroups0.getGroups().get(0).setPdpGroupState(null);
274         assertThatThrownBy(() -> {
275             new PdpProvider().updatePdpGroups(pfDao, pdpGroups0.getGroups());
276         }).hasMessageContaining("INVALID:pdpGroupState may not be null");
277     }
278
279     @Test
280     public void testPoliciesDelete() throws Exception {
281         assertThatThrownBy(() -> {
282             new PdpProvider().deletePdpGroup(null, null, null);
283         }).hasMessage("dao is marked @NonNull but is null");
284
285         assertThatThrownBy(() -> {
286             new PdpProvider().deletePdpGroup(null, null, "version");
287         }).hasMessage("dao is marked @NonNull but is null");
288
289         assertThatThrownBy(() -> {
290             new PdpProvider().deletePdpGroup(null, "name", null);
291         }).hasMessage("dao is marked @NonNull but is null");
292
293         assertThatThrownBy(() -> {
294             new PdpProvider().deletePdpGroup(null, "name", "version");
295         }).hasMessage("dao is marked @NonNull but is null");
296
297         assertThatThrownBy(() -> {
298             new PdpProvider().deletePdpGroup(pfDao, null, "version");
299         }).hasMessage("name is marked @NonNull but is null");
300
301         assertThatThrownBy(() -> {
302             new PdpProvider().deletePdpGroup(pfDao, "name", null);
303         }).hasMessage("version is marked @NonNull but is null");
304
305         assertThatThrownBy(() -> {
306             new PdpProvider().deletePdpGroup(pfDao, "name", "version");
307         }).hasMessage("delete of PDP group \"name:version\" failed, PDP group does not exist");
308
309         String originalJson = ResourceUtils.getResourceAsString("testdata/PdpGroups0.json");
310         PdpGroups pdpGroups0 = standardCoder.decode(originalJson, PdpGroups.class);
311
312         PdpGroups createdPdpGroups0 = new PdpGroups();
313         createdPdpGroups0.setGroups(new PdpProvider().createPdpGroups(pfDao, pdpGroups0.getGroups()));
314         String createdJson = standardCoder.encode(createdPdpGroups0);
315         assertEquals(originalJson.replaceAll("\\s+", ""), createdJson.replaceAll("\\s+", ""));
316
317         PdpGroups gotPdpGroups0 = new PdpGroups();
318         gotPdpGroups0.setGroups(new PdpProvider().getPdpGroups(pfDao, "PdpGroup0", "1.2.3"));
319
320         String gotJson = standardCoder.encode(gotPdpGroups0);
321         assertEquals(originalJson.replaceAll("\\s+", ""), gotJson.replaceAll("\\s+", ""));
322
323         PdpGroup deletedPdpGroup = new PdpProvider().deletePdpGroup(pfDao, "PdpGroup0", "1.2.3");
324
325         assertEquals(createdPdpGroups0.getGroups().get(0), deletedPdpGroup);
326
327         assertEquals(0, new PdpProvider().getPdpGroups(pfDao, "PdpGroup0", "1.2.3").size());
328
329         assertThatThrownBy(() -> {
330             new PdpProvider().deletePdpGroup(pfDao, "PdpGroup0", "1.2.3");
331         }).hasMessage("delete of PDP group \"PdpGroup0:1.2.3\" failed, PDP group does not exist");
332     }
333
334     @Test
335     public void testPdpSubgroupUpdate() throws Exception {
336         assertThatThrownBy(() -> {
337             new PdpProvider().updatePdpSubGroup(null, null, null, null);
338         }).hasMessage("dao is marked @NonNull but is null");
339
340         assertThatThrownBy(() -> {
341             new PdpProvider().updatePdpSubGroup(null, null, null, new PdpSubGroup());
342         }).hasMessage("dao is marked @NonNull but is null");
343
344         assertThatThrownBy(() -> {
345             new PdpProvider().updatePdpSubGroup(null, null, "version", null);
346         }).hasMessage("dao is marked @NonNull but is null");
347
348         assertThatThrownBy(() -> {
349             new PdpProvider().updatePdpSubGroup(null, null, "version", new PdpSubGroup());
350         }).hasMessage("dao is marked @NonNull but is null");
351
352         assertThatThrownBy(() -> {
353             new PdpProvider().updatePdpSubGroup(null, "name", null, null);
354         }).hasMessage("dao is marked @NonNull but is null");
355
356         assertThatThrownBy(() -> {
357             new PdpProvider().updatePdpSubGroup(null, "name", null, new PdpSubGroup());
358         }).hasMessage("dao is marked @NonNull but is null");
359
360         assertThatThrownBy(() -> {
361             new PdpProvider().updatePdpSubGroup(null, "name", "version", null);
362         }).hasMessage("dao is marked @NonNull but is null");
363
364         assertThatThrownBy(() -> {
365             new PdpProvider().updatePdpSubGroup(null, "name", "version", new PdpSubGroup());
366         }).hasMessage("dao is marked @NonNull but is null");
367
368         assertThatThrownBy(() -> {
369             new PdpProvider().updatePdpSubGroup(pfDao, null, null, new PdpSubGroup());
370         }).hasMessage("pdpGroupName is marked @NonNull but is null");
371
372         assertThatThrownBy(() -> {
373             new PdpProvider().updatePdpSubGroup(pfDao, null, "version", null);
374         }).hasMessage("pdpGroupName is marked @NonNull but is null");
375
376         assertThatThrownBy(() -> {
377             new PdpProvider().updatePdpSubGroup(pfDao, null, "version", new PdpSubGroup());
378         }).hasMessage("pdpGroupName is marked @NonNull but is null");
379
380         assertThatThrownBy(() -> {
381             new PdpProvider().updatePdpSubGroup(pfDao, "name", null, null);
382         }).hasMessage("pdpGroupVersion is marked @NonNull but is null");
383
384         assertThatThrownBy(() -> {
385             new PdpProvider().updatePdpSubGroup(pfDao, "name", null, new PdpSubGroup());
386         }).hasMessage("pdpGroupVersion is marked @NonNull but is null");
387
388         assertThatThrownBy(() -> {
389             new PdpProvider().updatePdpSubGroup(pfDao, "name", "version", null);
390         }).hasMessage("pdpSubGroup is marked @NonNull but is null");
391
392         assertThatThrownBy(() -> {
393             new PdpProvider().updatePdpSubGroup(pfDao, "name", "version", new PdpSubGroup());
394         }).hasMessage("parameter \"localName\" is null");
395
396         String originalJson = ResourceUtils.getResourceAsString("testdata/PdpGroups0.json");
397         PdpGroups pdpGroups0 = standardCoder.decode(originalJson, PdpGroups.class);
398
399         PdpGroups createdPdpGroups0 = new PdpGroups();
400         createdPdpGroups0.setGroups(new PdpProvider().createPdpGroups(pfDao, pdpGroups0.getGroups()));
401         String createdJson = standardCoder.encode(createdPdpGroups0);
402         assertEquals(originalJson.replaceAll("\\s+", ""), createdJson.replaceAll("\\s+", ""));
403
404         PdpGroups gotPdpGroups0 = new PdpGroups();
405         gotPdpGroups0.setGroups(new PdpProvider().getPdpGroups(pfDao, "PdpGroup0", "1.2.3"));
406
407         String gotJson = standardCoder.encode(gotPdpGroups0);
408         assertEquals(originalJson.replaceAll("\\s+", ""), gotJson.replaceAll("\\s+", ""));
409
410         PdpSubGroup existingSubGroup = gotPdpGroups0.getGroups().get(0).getPdpSubgroups().get(0);
411         existingSubGroup.setCurrentInstanceCount(10);
412         existingSubGroup.setDesiredInstanceCount(10);
413         new PdpProvider().updatePdpSubGroup(pfDao, "PdpGroup0", "1.2.3", existingSubGroup);
414
415         List<PdpGroup> afterUpdatePdpGroups = new PdpProvider().getPdpGroups(pfDao, "PdpGroup0", "1.2.3");
416         assertEquals(10, afterUpdatePdpGroups.get(0).getPdpSubgroups().get(0).getCurrentInstanceCount());
417         assertEquals(10, afterUpdatePdpGroups.get(0).getPdpSubgroups().get(0).getDesiredInstanceCount());
418
419         existingSubGroup.setDesiredInstanceCount(-1);
420         assertThatThrownBy(() -> {
421             new PdpProvider().updatePdpSubGroup(pfDao, "PdpGroup0", "1.2.3", existingSubGroup);
422         }).hasMessageContaining("INVALID:the desired instance count of a PDP sub group may not be negative");
423         existingSubGroup.setDesiredInstanceCount(10);
424     }
425
426     @Test
427     public void testPdpUpdate() throws Exception {
428         assertThatThrownBy(() -> {
429             new PdpProvider().updatePdp(null, null, null, null, null);
430         }).hasMessage("dao is marked @NonNull but is null");
431
432         assertThatThrownBy(() -> {
433             new PdpProvider().updatePdp(null, null, null, null, new Pdp());
434         }).hasMessage("dao is marked @NonNull but is null");
435
436         assertThatThrownBy(() -> {
437             new PdpProvider().updatePdp(null, null, null, "TYPE", null);
438         }).hasMessage("dao is marked @NonNull but is null");
439
440         assertThatThrownBy(() -> {
441             new PdpProvider().updatePdp(null, null, null, "TYPE", new Pdp());
442         }).hasMessage("dao is marked @NonNull but is null");
443
444         assertThatThrownBy(() -> {
445             new PdpProvider().updatePdp(null, null, "version", null, null);
446         }).hasMessage("dao is marked @NonNull but is null");
447
448         assertThatThrownBy(() -> {
449             new PdpProvider().updatePdp(null, null, "version", null, new Pdp());
450         }).hasMessage("dao is marked @NonNull but is null");
451
452         assertThatThrownBy(() -> {
453             new PdpProvider().updatePdp(null, null, "version", "TYPE", null);
454         }).hasMessage("dao is marked @NonNull but is null");
455
456         assertThatThrownBy(() -> {
457             new PdpProvider().updatePdp(null, null, "version", "TYPE", new Pdp());
458         }).hasMessage("dao is marked @NonNull but is null");
459
460         assertThatThrownBy(() -> {
461             new PdpProvider().updatePdp(null, "name", null, null, null);
462         }).hasMessage("dao is marked @NonNull but is null");
463
464         assertThatThrownBy(() -> {
465             new PdpProvider().updatePdp(null, "name", null, null, new Pdp());
466         }).hasMessage("dao is marked @NonNull but is null");
467
468         assertThatThrownBy(() -> {
469             new PdpProvider().updatePdp(null, "name", null, "TYPE", null);
470         }).hasMessage("dao is marked @NonNull but is null");
471
472         assertThatThrownBy(() -> {
473             new PdpProvider().updatePdp(null, "name", null, "TYPE", new Pdp());
474         }).hasMessage("dao is marked @NonNull but is null");
475
476         assertThatThrownBy(() -> {
477             new PdpProvider().updatePdp(null, "name", "version", null, null);
478         }).hasMessage("dao is marked @NonNull but is null");
479
480         assertThatThrownBy(() -> {
481             new PdpProvider().updatePdp(null, "name", "version", null, new Pdp());
482         }).hasMessage("dao is marked @NonNull but is null");
483
484         assertThatThrownBy(() -> {
485             new PdpProvider().updatePdp(null, "name", "version", "TYPE", null);
486         }).hasMessage("dao is marked @NonNull but is null");
487
488         assertThatThrownBy(() -> {
489             new PdpProvider().updatePdp(null, "name", "version", "TYPE", new Pdp());
490         }).hasMessage("dao is marked @NonNull but is null");
491
492         assertThatThrownBy(() -> {
493             new PdpProvider().updatePdp(pfDao, null, null, null, null);
494         }).hasMessage("pdpGroupName is marked @NonNull but is null");
495
496         assertThatThrownBy(() -> {
497             new PdpProvider().updatePdp(pfDao, null, null, null, new Pdp());
498         }).hasMessage("pdpGroupName is marked @NonNull but is null");
499
500         assertThatThrownBy(() -> {
501             new PdpProvider().updatePdp(pfDao, null, null, "TYPE", null);
502         }).hasMessage("pdpGroupName is marked @NonNull but is null");
503
504         assertThatThrownBy(() -> {
505             new PdpProvider().updatePdp(pfDao, null, null, "TYPE", new Pdp());
506         }).hasMessage("pdpGroupName is marked @NonNull but is null");
507
508         assertThatThrownBy(() -> {
509             new PdpProvider().updatePdp(pfDao, null, "version", null, null);
510         }).hasMessage("pdpGroupName is marked @NonNull but is null");
511
512         assertThatThrownBy(() -> {
513             new PdpProvider().updatePdp(pfDao, null, "version", null, new Pdp());
514         }).hasMessage("pdpGroupName is marked @NonNull but is null");
515
516         assertThatThrownBy(() -> {
517             new PdpProvider().updatePdp(pfDao, null, "version", "TYPE", null);
518         }).hasMessage("pdpGroupName is marked @NonNull but is null");
519
520         assertThatThrownBy(() -> {
521             new PdpProvider().updatePdp(pfDao, null, "version", "TYPE", new Pdp());
522         }).hasMessage("pdpGroupName is marked @NonNull but is null");
523
524         assertThatThrownBy(() -> {
525             new PdpProvider().updatePdp(pfDao, "name", null, null, null);
526         }).hasMessage("pdpGroupVersion is marked @NonNull but is null");
527
528         assertThatThrownBy(() -> {
529             new PdpProvider().updatePdp(pfDao, "name", null, null, new Pdp());
530         }).hasMessage("pdpGroupVersion is marked @NonNull but is null");
531
532         assertThatThrownBy(() -> {
533             new PdpProvider().updatePdp(pfDao, "name", null, "TYPE", null);
534         }).hasMessage("pdpGroupVersion is marked @NonNull but is null");
535
536         assertThatThrownBy(() -> {
537             new PdpProvider().updatePdp(pfDao, "name", null, "TYPE", new Pdp());
538         }).hasMessage("pdpGroupVersion is marked @NonNull but is null");
539
540         assertThatThrownBy(() -> {
541             new PdpProvider().updatePdp(pfDao, "name", "version", null, null);
542         }).hasMessage("pdpSubGroup is marked @NonNull but is null");
543
544         assertThatThrownBy(() -> {
545             new PdpProvider().updatePdp(pfDao, "name", "version", null, new Pdp());
546         }).hasMessage("pdpSubGroup is marked @NonNull but is null");
547
548         assertThatThrownBy(() -> {
549             new PdpProvider().updatePdp(pfDao, "name", "version", "TYPE", null);
550         }).hasMessage("pdp is marked @NonNull but is null");
551
552         assertThatThrownBy(() -> {
553             new PdpProvider().updatePdp(pfDao, "name", "version", "TYPE", new Pdp());
554         }).hasMessage("parameter \"localName\" is null");
555
556         String originalJson = ResourceUtils.getResourceAsString("testdata/PdpGroups0.json");
557         PdpGroups pdpGroups0 = standardCoder.decode(originalJson, PdpGroups.class);
558
559         PdpGroups createdPdpGroups0 = new PdpGroups();
560         createdPdpGroups0.setGroups(new PdpProvider().createPdpGroups(pfDao, pdpGroups0.getGroups()));
561         String createdJson = standardCoder.encode(createdPdpGroups0);
562         assertEquals(originalJson.replaceAll("\\s+", ""), createdJson.replaceAll("\\s+", ""));
563
564         PdpGroups gotPdpGroups0 = new PdpGroups();
565         gotPdpGroups0.setGroups(new PdpProvider().getPdpGroups(pfDao, "PdpGroup0", "1.2.3"));
566
567         String gotJson = standardCoder.encode(gotPdpGroups0);
568         assertEquals(originalJson.replaceAll("\\s+", ""), gotJson.replaceAll("\\s+", ""));
569
570         Pdp existingPdp = gotPdpGroups0.getGroups().get(0).getPdpSubgroups().get(0).getPdpInstances().get(0);
571         existingPdp.setPdpState(PdpState.TEST);
572         existingPdp.setHealthy(PdpHealthStatus.TEST_IN_PROGRESS);
573         new PdpProvider().updatePdp(pfDao, "PdpGroup0", "1.2.3", "APEX", existingPdp);
574
575         List<PdpGroup> afterUpdatePdpGroups = new PdpProvider().getPdpGroups(pfDao, "PdpGroup0", "1.2.3");
576         assertEquals(PdpState.TEST,
577                 afterUpdatePdpGroups.get(0).getPdpSubgroups().get(0).getPdpInstances().get(0).getPdpState());
578         assertEquals(PdpHealthStatus.TEST_IN_PROGRESS,
579                 afterUpdatePdpGroups.get(0).getPdpSubgroups().get(0).getPdpInstances().get(0).getHealthy());
580
581         existingPdp.setMessage("");
582         assertThatThrownBy(() -> {
583             new PdpProvider().updatePdp(pfDao, "PdpGroup0", "1.2.3", "APEX", existingPdp);
584         }).hasMessageContaining("INVALID:message may not be blank");
585         existingPdp.setMessage("A Message");
586     }
587
588     @Test
589     public void testGetPdpStatistics() throws PfModelException {
590         assertThatThrownBy(() -> {
591             new PdpProvider().getPdpStatistics(null, null, null);
592         }).hasMessage("dao is marked @NonNull but is null");
593
594         assertThatThrownBy(() -> {
595             new PdpProvider().getPdpStatistics(null, null, "version");
596         }).hasMessage("dao is marked @NonNull but is null");
597
598         assertThatThrownBy(() -> {
599             new PdpProvider().getPdpStatistics(null, "name", null);
600         }).hasMessage("dao is marked @NonNull but is null");
601
602         assertEquals(0, new PdpProvider().getPdpStatistics(pfDao, "name", "version").size());
603     }
604
605     @Test
606     public void testUpdatePdpStatistics() throws PfModelException {
607         assertThatThrownBy(() -> {
608             new PdpProvider().updatePdpStatistics(null, null, null, null, null, null);
609         }).hasMessage("dao is marked @NonNull but is null");
610
611         assertThatThrownBy(() -> {
612             new PdpProvider().updatePdpStatistics(null, null, null, null, null, new PdpStatistics());
613         }).hasMessage("dao is marked @NonNull but is null");
614
615         assertThatThrownBy(() -> {
616             new PdpProvider().updatePdpStatistics(null, null, null, null, "inst", null);
617         }).hasMessage("dao is marked @NonNull but is null");
618
619         assertThatThrownBy(() -> {
620             new PdpProvider().updatePdpStatistics(null, null, null, null, "inst", new PdpStatistics());
621         }).hasMessage("dao is marked @NonNull but is null");
622
623         assertThatThrownBy(() -> {
624             new PdpProvider().updatePdpStatistics(null, null, null, "TYPE", null, null);
625         }).hasMessage("dao is marked @NonNull but is null");
626
627         assertThatThrownBy(() -> {
628             new PdpProvider().updatePdpStatistics(null, null, null, "TYPE", null, new PdpStatistics());
629         }).hasMessage("dao is marked @NonNull but is null");
630
631         assertThatThrownBy(() -> {
632             new PdpProvider().updatePdpStatistics(null, null, null, "TYPE", "inst", null);
633         }).hasMessage("dao is marked @NonNull but is null");
634
635         assertThatThrownBy(() -> {
636             new PdpProvider().updatePdpStatistics(null, null, null, "TYPE", "inst", new PdpStatistics());
637         }).hasMessage("dao is marked @NonNull but is null");
638
639         assertThatThrownBy(() -> {
640             new PdpProvider().updatePdpStatistics(null, null, "version", null, null, null);
641         }).hasMessage("dao is marked @NonNull but is null");
642
643         assertThatThrownBy(() -> {
644             new PdpProvider().updatePdpStatistics(null, null, "version", null, null, new PdpStatistics());
645         }).hasMessage("dao is marked @NonNull but is null");
646
647         assertThatThrownBy(() -> {
648             new PdpProvider().updatePdpStatistics(null, null, "version", null, "inst", null);
649         }).hasMessage("dao is marked @NonNull but is null");
650
651         assertThatThrownBy(() -> {
652             new PdpProvider().updatePdpStatistics(null, null, "version",  null, "inst", new PdpStatistics());
653         }).hasMessage("dao is marked @NonNull but is null");
654
655         assertThatThrownBy(() -> {
656             new PdpProvider().updatePdpStatistics(null, null, "version", "TYPE", null, null);
657         }).hasMessage("dao is marked @NonNull but is null");
658
659         assertThatThrownBy(() -> {
660             new PdpProvider().updatePdpStatistics(null, null, "version", "TYPE", null, new PdpStatistics());
661         }).hasMessage("dao is marked @NonNull but is null");
662
663         assertThatThrownBy(() -> {
664             new PdpProvider().updatePdpStatistics(null, null, "version", "TYPE", "inst", null);
665         }).hasMessage("dao is marked @NonNull but is null");
666
667         assertThatThrownBy(() -> {
668             new PdpProvider().updatePdpStatistics(null, null, "version", "TYPE", "inst", new PdpStatistics());
669         }).hasMessage("dao is marked @NonNull but is null");
670
671         assertThatThrownBy(() -> {
672             new PdpProvider().updatePdpStatistics(null, "name", null, null, null, null);
673         }).hasMessage("dao is marked @NonNull but is null");
674
675         assertThatThrownBy(() -> {
676             new PdpProvider().updatePdpStatistics(null, "name", null, null, null, new PdpStatistics());
677         }).hasMessage("dao is marked @NonNull but is null");
678
679         assertThatThrownBy(() -> {
680             new PdpProvider().updatePdpStatistics(null, "name", null, null, "inst", null);
681         }).hasMessage("dao is marked @NonNull but is null");
682
683         assertThatThrownBy(() -> {
684             new PdpProvider().updatePdpStatistics(null, "name", null, null, "inst", new PdpStatistics());
685         }).hasMessage("dao is marked @NonNull but is null");
686
687         assertThatThrownBy(() -> {
688             new PdpProvider().updatePdpStatistics(null, "name", null, "TYPE", null, null);
689         }).hasMessage("dao is marked @NonNull but is null");
690
691         assertThatThrownBy(() -> {
692             new PdpProvider().updatePdpStatistics(null, "name", null, "TYPE", null, new PdpStatistics());
693         }).hasMessage("dao is marked @NonNull but is null");
694
695         assertThatThrownBy(() -> {
696             new PdpProvider().updatePdpStatistics(null, "name", null, "TYPE", "inst", null);
697         }).hasMessage("dao is marked @NonNull but is null");
698
699         assertThatThrownBy(() -> {
700             new PdpProvider().updatePdpStatistics(null, "name", null, "TYPE", "inst", new PdpStatistics());
701         }).hasMessage("dao is marked @NonNull but is null");
702
703         assertThatThrownBy(() -> {
704             new PdpProvider().updatePdpStatistics(null, "name", "version", null, null, null);
705         }).hasMessage("dao is marked @NonNull but is null");
706
707         assertThatThrownBy(() -> {
708             new PdpProvider().updatePdpStatistics(null, "name", "version", null, null, new PdpStatistics());
709         }).hasMessage("dao is marked @NonNull but is null");
710
711         assertThatThrownBy(() -> {
712             new PdpProvider().updatePdpStatistics(null, "name", "version", null, "inst", null);
713         }).hasMessage("dao is marked @NonNull but is null");
714
715         assertThatThrownBy(() -> {
716             new PdpProvider().updatePdpStatistics(null, "name", "version", null, "inst", new PdpStatistics());
717         }).hasMessage("dao is marked @NonNull but is null");
718
719         assertThatThrownBy(() -> {
720             new PdpProvider().updatePdpStatistics(null, "name", "version", "TYPE", null, null);
721         }).hasMessage("dao is marked @NonNull but is null");
722
723         assertThatThrownBy(() -> {
724             new PdpProvider().updatePdpStatistics(null, "name", "version", "TYPE", null, new PdpStatistics());
725         }).hasMessage("dao is marked @NonNull but is null");
726
727         assertThatThrownBy(() -> {
728             new PdpProvider().updatePdpStatistics(null, "name", "version", "TYPE", "inst", null);
729         }).hasMessage("dao is marked @NonNull but is null");
730
731         assertThatThrownBy(() -> {
732             new PdpProvider().updatePdpStatistics(null, "name", "version", "TYPE", "inst", new PdpStatistics());
733         }).hasMessage("dao is marked @NonNull but is null");
734
735         assertThatThrownBy(() -> {
736             new PdpProvider().updatePdpStatistics(pfDao, null, null, null, null, null);
737         }).hasMessage("pdpGroupName is marked @NonNull but is null");
738
739         assertThatThrownBy(() -> {
740             new PdpProvider().updatePdpStatistics(pfDao, null, null, null, null, new PdpStatistics());
741         }).hasMessage("pdpGroupName is marked @NonNull but is null");
742
743         assertThatThrownBy(() -> {
744             new PdpProvider().updatePdpStatistics(pfDao, null, null, null, "inst", null);
745         }).hasMessage("pdpGroupName is marked @NonNull but is null");
746
747         assertThatThrownBy(() -> {
748             new PdpProvider().updatePdpStatistics(pfDao, null, null, null, "inst", new PdpStatistics());
749         }).hasMessage("pdpGroupName is marked @NonNull but is null");
750
751         assertThatThrownBy(() -> {
752             new PdpProvider().updatePdpStatistics(pfDao, null, null, "TYPE", null, null);
753         }).hasMessage("pdpGroupName is marked @NonNull but is null");
754
755         assertThatThrownBy(() -> {
756             new PdpProvider().updatePdpStatistics(pfDao, null, null, "TYPE", null, new PdpStatistics());
757         }).hasMessage("pdpGroupName is marked @NonNull but is null");
758
759         assertThatThrownBy(() -> {
760             new PdpProvider().updatePdpStatistics(pfDao, null, null, "TYPE", "inst", null);
761         }).hasMessage("pdpGroupName is marked @NonNull but is null");
762
763         assertThatThrownBy(() -> {
764             new PdpProvider().updatePdpStatistics(pfDao, null, null, "TYPE", "inst", new PdpStatistics());
765         }).hasMessage("pdpGroupName is marked @NonNull but is null");
766
767         assertThatThrownBy(() -> {
768             new PdpProvider().updatePdpStatistics(pfDao, null, "version", null, null, null);
769         }).hasMessage("pdpGroupName is marked @NonNull but is null");
770
771         assertThatThrownBy(() -> {
772             new PdpProvider().updatePdpStatistics(pfDao, null, "version", null, null, new PdpStatistics());
773         }).hasMessage("pdpGroupName is marked @NonNull but is null");
774
775         assertThatThrownBy(() -> {
776             new PdpProvider().updatePdpStatistics(pfDao, null, "version", null, "inst", null);
777         }).hasMessage("pdpGroupName is marked @NonNull but is null");
778
779         assertThatThrownBy(() -> {
780             new PdpProvider().updatePdpStatistics(pfDao, null, "version",  null, "inst", new PdpStatistics());
781         }).hasMessage("pdpGroupName is marked @NonNull but is null");
782
783         assertThatThrownBy(() -> {
784             new PdpProvider().updatePdpStatistics(pfDao, null, "version", "TYPE", null, null);
785         }).hasMessage("pdpGroupName is marked @NonNull but is null");
786
787         assertThatThrownBy(() -> {
788             new PdpProvider().updatePdpStatistics(pfDao, null, "version", "TYPE", null, new PdpStatistics());
789         }).hasMessage("pdpGroupName is marked @NonNull but is null");
790
791         assertThatThrownBy(() -> {
792             new PdpProvider().updatePdpStatistics(pfDao, null, "version", "TYPE", "inst", null);
793         }).hasMessage("pdpGroupName is marked @NonNull but is null");
794
795         assertThatThrownBy(() -> {
796             new PdpProvider().updatePdpStatistics(pfDao, null, "version", "TYPE", "inst", new PdpStatistics());
797         }).hasMessage("pdpGroupName is marked @NonNull but is null");
798
799         assertThatThrownBy(() -> {
800             new PdpProvider().updatePdpStatistics(pfDao, "name", null, null, null, null);
801         }).hasMessage("pdpGroupVersion is marked @NonNull but is null");
802
803         assertThatThrownBy(() -> {
804             new PdpProvider().updatePdpStatistics(pfDao, "name", null, null, null, new PdpStatistics());
805         }).hasMessage("pdpGroupVersion is marked @NonNull but is null");
806
807         assertThatThrownBy(() -> {
808             new PdpProvider().updatePdpStatistics(pfDao, "name", null, null, "inst", null);
809         }).hasMessage("pdpGroupVersion is marked @NonNull but is null");
810
811         assertThatThrownBy(() -> {
812             new PdpProvider().updatePdpStatistics(pfDao, "name", null, null, "inst", new PdpStatistics());
813         }).hasMessage("pdpGroupVersion is marked @NonNull but is null");
814
815         assertThatThrownBy(() -> {
816             new PdpProvider().updatePdpStatistics(pfDao, "name", null, "TYPE", null, null);
817         }).hasMessage("pdpGroupVersion is marked @NonNull but is null");
818
819         assertThatThrownBy(() -> {
820             new PdpProvider().updatePdpStatistics(pfDao, "name", null, "TYPE", null, new PdpStatistics());
821         }).hasMessage("pdpGroupVersion is marked @NonNull but is null");
822
823         assertThatThrownBy(() -> {
824             new PdpProvider().updatePdpStatistics(pfDao, "name", null, "TYPE", "inst", null);
825         }).hasMessage("pdpGroupVersion is marked @NonNull but is null");
826
827         assertThatThrownBy(() -> {
828             new PdpProvider().updatePdpStatistics(pfDao, "name", null, "TYPE", "inst", new PdpStatistics());
829         }).hasMessage("pdpGroupVersion is marked @NonNull but is null");
830
831         assertThatThrownBy(() -> {
832             new PdpProvider().updatePdpStatistics(pfDao, "name", "version", null, null, null);
833         }).hasMessage("pdpType is marked @NonNull but is null");
834
835         assertThatThrownBy(() -> {
836             new PdpProvider().updatePdpStatistics(pfDao, "name", "version", null, null, new PdpStatistics());
837         }).hasMessage("pdpType is marked @NonNull but is null");
838
839         assertThatThrownBy(() -> {
840             new PdpProvider().updatePdpStatistics(pfDao, "name", "version", null, "inst", null);
841         }).hasMessage("pdpType is marked @NonNull but is null");
842
843         assertThatThrownBy(() -> {
844             new PdpProvider().updatePdpStatistics(pfDao, "name", "version", null, "inst", new PdpStatistics());
845         }).hasMessage("pdpType is marked @NonNull but is null");
846
847         assertThatThrownBy(() -> {
848             new PdpProvider().updatePdpStatistics(pfDao, "name", "version", "TYPE", null, null);
849         }).hasMessage("pdpInstanceId is marked @NonNull but is null");
850
851         assertThatThrownBy(() -> {
852             new PdpProvider().updatePdpStatistics(pfDao, "name", "version", "TYPE", null, new PdpStatistics());
853         }).hasMessage("pdpInstanceId is marked @NonNull but is null");
854
855         assertThatThrownBy(() -> {
856             new PdpProvider().updatePdpStatistics(pfDao, "name", "version", "TYPE", "inst", null);
857         }).hasMessage("pdpStatistics is marked @NonNull but is null");
858
859         new PdpProvider().updatePdpStatistics(pfDao, "name", "version", "TYPE", "inst", new PdpStatistics());
860     }
861 }