Fix sonar issues for tests in policy-models
[policy/models.git] / models-provider / src / test / java / org / onap / policy / models / provider / impl / DatabasePolicyModelsProviderTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2019-2021 Nordix Foundation.
4  *  Modifications Copyright (C) 2019, 2021 AT&T Intellectual Property. All rights reserved.
5  *  Modifications Copyright (C) 2020 Bell Canada. 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  *
19  * SPDX-License-Identifier: Apache-2.0
20  * ============LICENSE_END=========================================================
21  */
22
23 package org.onap.policy.models.provider.impl;
24
25 import static org.assertj.core.api.Assertions.assertThat;
26 import static org.assertj.core.api.Assertions.assertThatCode;
27 import static org.assertj.core.api.Assertions.assertThatThrownBy;
28 import static org.junit.Assert.assertEquals;
29 import static org.junit.Assert.assertNotNull;
30 import static org.junit.Assert.assertTrue;
31
32 import java.time.Instant;
33 import java.util.ArrayList;
34 import java.util.List;
35 import org.junit.Before;
36 import org.junit.Test;
37 import org.onap.policy.models.base.PfModelException;
38 import org.onap.policy.models.pdp.concepts.Pdp;
39 import org.onap.policy.models.pdp.concepts.PdpGroup;
40 import org.onap.policy.models.pdp.concepts.PdpGroupFilter;
41 import org.onap.policy.models.pdp.concepts.PdpStatistics;
42 import org.onap.policy.models.pdp.concepts.PdpSubGroup;
43 import org.onap.policy.models.pdp.enums.PdpHealthStatus;
44 import org.onap.policy.models.pdp.enums.PdpState;
45 import org.onap.policy.models.provider.PolicyModelsProvider;
46 import org.onap.policy.models.provider.PolicyModelsProviderFactory;
47 import org.onap.policy.models.provider.PolicyModelsProviderParameters;
48 import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
49 import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifierOptVersion;
50 import org.onap.policy.models.tosca.authorative.concepts.ToscaEntityFilter;
51 import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
52 import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyType;
53 import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
54 import org.onap.policy.models.tosca.authorative.concepts.ToscaTypedEntityFilter;
55
56 /**
57  * Test the database models provider implementation.
58  *
59  * @author Liam Fallon (liam.fallon@est.tech)
60  */
61 public class DatabasePolicyModelsProviderTest {
62     private static final String NAME = "name";
63
64     private static final String TEMPLATE_IS_NULL = "^serviceTemplate is marked .*on.*ull but is null$";
65
66     private static final String SUBGROUP_IS_NULL = "^pdpSubGroup is marked .*on.*ull but is null$";
67
68     private static final String GROUP_IS_NULL = "^pdpGroupName is marked .*on.*ull but is null$";
69
70     private static final String NAME_IS_NULL = "^name is marked .*on.*ull but is null$";
71
72     private static final String FILTER_IS_NULL = "^filter is marked .*on.*ull but is null$";
73
74     private static final String GROUP = "group";
75
76     private static final String VERSION_100 = "1.0.0";
77
78     private static final Instant TIMESTAMP = Instant.EPOCH;
79
80     private static final String ORDER = "DESC";
81
82     PolicyModelsProviderParameters parameters;
83
84     /**
85      * Initialize parameters.
86      */
87     @Before
88     public void setupParameters() {
89         parameters = new PolicyModelsProviderParameters();
90         parameters.setDatabaseDriver("org.h2.Driver");
91         parameters.setDatabaseUrl("jdbc:h2:mem:testdb");
92         parameters.setDatabaseUser("policy");
93         parameters.setDatabasePassword("P01icY");
94         parameters.setPersistenceUnit("ToscaConceptTest");
95     }
96
97     @Test
98     public void testInitAndClose() throws Exception {
99         assertThatThrownBy(() -> {
100             new DatabasePolicyModelsProviderImpl(null);
101         }).hasMessageMatching("^parameters is marked .*on.*ull but is null$");
102
103         PolicyModelsProvider databaseProvider =
104                 new PolicyModelsProviderFactory().createPolicyModelsProvider(parameters);
105
106         parameters.setDatabaseUrl("jdbc://www.acmecorp.nonexist");
107
108         databaseProvider.close();
109         databaseProvider.init();
110
111         databaseProvider.close();
112
113         parameters.setDatabaseUrl("jdbc:h2:mem:testdb");
114
115         parameters.setPersistenceUnit("WileECoyote");
116
117         assertThatThrownBy(databaseProvider::init).hasMessageContaining("could not create Data Access Object (DAO)");
118
119         parameters.setPersistenceUnit("ToscaConceptTest");
120
121         databaseProvider.init();
122         databaseProvider.close();
123
124         assertThatThrownBy(() -> {
125             databaseProvider.init();
126             databaseProvider.init();
127         }).hasMessage("provider is already initialized");
128
129         databaseProvider.close();
130
131         databaseProvider.close();
132     }
133
134     @Test
135     public void testProviderMethodsNull() throws Exception {
136
137         PolicyModelsProvider databaseProvider =
138                 new PolicyModelsProviderFactory().createPolicyModelsProvider(parameters);
139
140         assertThatThrownBy(() -> {
141             databaseProvider.getFilteredPolicyTypes(null);
142         }).hasMessageMatching(FILTER_IS_NULL);
143
144         assertThatThrownBy(() -> {
145             databaseProvider.getFilteredPolicyTypeList(null);
146         }).hasMessageMatching(FILTER_IS_NULL);
147
148         assertThatThrownBy(() -> {
149             databaseProvider.createPolicyTypes(null);
150         }).hasMessageMatching(TEMPLATE_IS_NULL);
151
152         assertThatThrownBy(() -> {
153             databaseProvider.updatePolicyTypes(null);
154         }).hasMessageMatching(TEMPLATE_IS_NULL);
155
156         assertThatThrownBy(() -> {
157             databaseProvider.deletePolicyType(null, null);
158         }).hasMessageMatching(NAME_IS_NULL);
159
160         assertThatThrownBy(() -> {
161             databaseProvider.deletePolicyType("aaa", null);
162         }).hasMessageMatching("^version is marked .*on.*ull but is null$");
163
164         assertThatThrownBy(() -> {
165             databaseProvider.deletePolicyType(null, "aaa");
166         }).hasMessageMatching(NAME_IS_NULL);
167
168         assertThatThrownBy(() -> {
169             databaseProvider.getFilteredPolicies(null);
170         }).hasMessageMatching(FILTER_IS_NULL);
171
172         assertThatThrownBy(() -> {
173             databaseProvider.getFilteredPolicyList(null);
174         }).hasMessageMatching(FILTER_IS_NULL);
175
176         assertThatThrownBy(() -> {
177             databaseProvider.createPolicies(null);
178         }).hasMessageMatching(TEMPLATE_IS_NULL);
179
180         assertThatThrownBy(() -> {
181             databaseProvider.updatePolicies(null);
182         }).hasMessageMatching(TEMPLATE_IS_NULL);
183
184         assertThatThrownBy(() -> {
185             databaseProvider.deletePolicy(null, null);
186         }).hasMessageMatching(NAME_IS_NULL);
187
188         assertThatThrownBy(() -> {
189             databaseProvider.deletePolicy(null, "aaa");
190         }).hasMessageMatching(NAME_IS_NULL);
191
192         assertThatThrownBy(() -> {
193             databaseProvider.deletePolicy("aaa", null);
194         }).hasMessageMatching("^version is marked .*on.*ull but is null$");
195     }
196
197     @Test
198     public void testProviderMethodsNullGroup() throws Exception {
199
200         PolicyModelsProvider databaseProvider =
201                 new PolicyModelsProviderFactory().createPolicyModelsProvider(parameters);
202
203         assertThatThrownBy(() -> {
204             databaseProvider.getFilteredPdpGroups(null);
205         }).hasMessageMatching(FILTER_IS_NULL);
206
207         assertThatThrownBy(() -> {
208             databaseProvider.createPdpGroups(null);
209         }).hasMessageMatching("^pdpGroups is marked .*on.*ull but is null$");
210
211         assertThatThrownBy(() -> {
212             databaseProvider.updatePdpGroups(null);
213         }).hasMessageMatching("^pdpGroups is marked .*on.*ull but is null$");
214
215         assertThatThrownBy(() -> {
216             databaseProvider.updatePdpSubGroup(null, null);
217         }).hasMessageMatching(GROUP_IS_NULL);
218
219         assertThatThrownBy(() -> {
220             databaseProvider.updatePdpSubGroup(null, new PdpSubGroup());
221         }).hasMessageMatching(GROUP_IS_NULL);
222
223         assertThatThrownBy(() -> {
224             databaseProvider.updatePdpSubGroup(NAME, null);
225         }).hasMessageMatching(SUBGROUP_IS_NULL);
226
227         assertThatThrownBy(() -> {
228             databaseProvider.updatePdpSubGroup(NAME, new PdpSubGroup());
229         }).hasMessage("parameter \"localName\" is null");
230
231         assertThatThrownBy(() -> {
232             databaseProvider.updatePdp(null, null, null);
233         }).hasMessageMatching(GROUP_IS_NULL);
234
235         assertThatThrownBy(() -> {
236             databaseProvider.updatePdp(null, null, new Pdp());
237         }).hasMessageMatching(GROUP_IS_NULL);
238
239         assertThatThrownBy(() -> {
240             databaseProvider.updatePdp(null, "sub", null);
241         }).hasMessageMatching(GROUP_IS_NULL);
242
243         assertThatThrownBy(() -> {
244             databaseProvider.updatePdp(null, "sub", new Pdp());
245         }).hasMessageMatching(GROUP_IS_NULL);
246
247         assertThatThrownBy(() -> {
248             databaseProvider.updatePdp(NAME, null, null);
249         }).hasMessageMatching(SUBGROUP_IS_NULL);
250
251         assertThatThrownBy(() -> {
252             databaseProvider.updatePdp(NAME, null, new Pdp());
253         }).hasMessageMatching(SUBGROUP_IS_NULL);
254
255         assertThatThrownBy(() -> {
256             databaseProvider.updatePdp(NAME, "sub", null);
257         }).hasMessageMatching("^pdp is marked .*on.*ull but is null$");
258
259         assertThatThrownBy(() -> {
260             databaseProvider.updatePdp(NAME, "sub", new Pdp());
261         }).hasMessage("parameter \"localName\" is null");
262
263         assertThatThrownBy(() -> {
264             databaseProvider.deletePdpGroup(null);
265         }).hasMessageMatching(NAME_IS_NULL);
266
267         assertThatThrownBy(() -> {
268             databaseProvider.getFilteredPdpStatistics(NAME, null, "sub", TIMESTAMP, TIMESTAMP, ORDER, 0);
269         }).hasMessageMatching(GROUP_IS_NULL);
270
271         assertThatThrownBy(() -> {
272             databaseProvider.createPdpStatistics(null);
273         }).hasMessageMatching("^pdpStatisticsList is marked .*on.*ull but is null$");
274
275         assertThatThrownBy(() -> {
276             databaseProvider.updatePdpStatistics(null);
277         }).hasMessageMatching("^pdpStatisticsList is marked .*on.*ull but is null$");
278
279         assertThatThrownBy(() -> {
280             databaseProvider.deletePdpStatistics(null, TIMESTAMP);
281         }).hasMessageMatching(NAME_IS_NULL);
282
283         databaseProvider.close();
284     }
285
286     @Test
287     public void testProviderMethodsNotInit() throws Exception {
288         PolicyModelsProvider databaseProvider =
289                 new PolicyModelsProviderFactory().createPolicyModelsProvider(parameters);
290
291         databaseProvider.close();
292
293         assertThatThrownBy(() -> {
294             databaseProvider.getPolicyTypes(NAME, "version");
295         }).hasMessage("policy models provider is not initilaized");
296     }
297
298     @Test
299     public void testProviderMethods() throws PfModelException {
300         PolicyModelsProvider databaseProvider =
301                 new PolicyModelsProviderFactory().createPolicyModelsProvider(parameters);
302
303         assertThatThrownBy(() -> databaseProvider.getPolicyTypes(NAME, VERSION_100))
304                 .hasMessage("service template not found in database");
305
306         assertTrue(databaseProvider.getPolicyTypeList(NAME, VERSION_100).isEmpty());
307
308         assertThatThrownBy(
309             () -> databaseProvider.getFilteredPolicyTypes(ToscaEntityFilter.<ToscaPolicyType>builder().build()))
310                         .hasMessage("service template not found in database");
311
312         assertTrue(databaseProvider.getFilteredPolicyTypeList(ToscaEntityFilter.<ToscaPolicyType>builder().build())
313                 .isEmpty());
314
315         assertThatThrownBy(() -> {
316             databaseProvider.createPolicyTypes(new ToscaServiceTemplate());
317         }).hasMessage("no policy types specified on service template");
318
319         assertThatThrownBy(() -> {
320             databaseProvider.updatePolicyTypes(new ToscaServiceTemplate());
321         }).hasMessage("no policy types specified on service template");
322
323         assertThatThrownBy(() -> databaseProvider.deletePolicyType(NAME, VERSION_100))
324                 .hasMessage("service template not found in database");
325
326         assertThatThrownBy(() -> databaseProvider.getPolicies(NAME, VERSION_100))
327                 .hasMessage("service template not found in database");
328
329         assertTrue(databaseProvider.getPolicyList(NAME, VERSION_100).isEmpty());
330
331         assertThatThrownBy(
332             () -> databaseProvider.getFilteredPolicies(ToscaTypedEntityFilter.<ToscaPolicy>builder().build()))
333                         .hasMessage("service template not found in database");
334
335         assertTrue(databaseProvider.getFilteredPolicyList(ToscaTypedEntityFilter.<ToscaPolicy>builder().build())
336                 .isEmpty());
337
338         assertThatThrownBy(() -> {
339             databaseProvider.createPolicies(new ToscaServiceTemplate());
340         }).hasMessage("topology template not specified on service template");
341
342         assertThatThrownBy(() -> {
343             databaseProvider.updatePolicies(new ToscaServiceTemplate());
344         }).hasMessage("topology template not specified on service template");
345
346         assertThatThrownBy(() -> databaseProvider.deletePolicy("Policy", "0.0.0").getToscaTopologyTemplate())
347                 .hasMessage("service template not found in database");
348
349         assertEquals(0, databaseProvider.getPdpGroups(NAME).size());
350         assertEquals(0, databaseProvider.getFilteredPdpGroups(PdpGroupFilter.builder().build()).size());
351
352         assertNotNull(databaseProvider.createPdpGroups(new ArrayList<>()));
353         assertNotNull(databaseProvider.updatePdpGroups(new ArrayList<>()));
354     }
355
356     @Test
357     public void testProviderMethodsInGroups() throws PfModelException {
358         PdpGroup pdpGroup = new PdpGroup();
359         pdpGroup.setName(GROUP);
360         pdpGroup.setVersion("1.2.3");
361         pdpGroup.setPdpGroupState(PdpState.ACTIVE);
362         pdpGroup.setPdpSubgroups(new ArrayList<>());
363         List<PdpGroup> groupList = new ArrayList<>();
364         groupList.add(pdpGroup);
365
366         PdpSubGroup pdpSubGroup = new PdpSubGroup();
367         pdpSubGroup.setPdpType("type");
368         pdpSubGroup.setDesiredInstanceCount(123);
369         pdpSubGroup.setSupportedPolicyTypes(new ArrayList<>());
370         pdpSubGroup.getSupportedPolicyTypes().add(new ToscaConceptIdentifier("type", "7.8.9"));
371         pdpGroup.getPdpSubgroups().add(pdpSubGroup);
372
373         Pdp pdp = new Pdp();
374         pdp.setInstanceId("type-0");
375         pdp.setMessage("Hello");
376         pdp.setPdpState(PdpState.ACTIVE);
377         pdp.setHealthy(PdpHealthStatus.UNKNOWN);
378         pdpSubGroup.setPdpInstances(new ArrayList<>());
379         pdpSubGroup.getPdpInstances().add(pdp);
380
381         PdpStatistics pdpStatistics = new PdpStatistics();
382         pdpStatistics.setPdpInstanceId(NAME);
383         pdpStatistics.setTimeStamp(TIMESTAMP);
384         pdpStatistics.setPdpGroupName(GROUP);
385         pdpStatistics.setPdpSubGroupName("type");
386         ArrayList<PdpStatistics> statisticsArrayList = new ArrayList<>();
387         statisticsArrayList.add(pdpStatistics);
388
389         PolicyModelsProvider databaseProvider =
390                 new PolicyModelsProviderFactory().createPolicyModelsProvider(parameters);
391
392         assertEquals(123,
393                 databaseProvider.createPdpGroups(groupList).get(0).getPdpSubgroups().get(0).getDesiredInstanceCount());
394         assertEquals(1, databaseProvider.getPdpGroups(GROUP).size());
395
396         pdpSubGroup.setDesiredInstanceCount(234);
397         databaseProvider.updatePdpSubGroup(GROUP, pdpSubGroup);
398         assertEquals(234,
399                 databaseProvider.getPdpGroups(GROUP).get(0).getPdpSubgroups().get(0).getDesiredInstanceCount());
400
401         assertEquals("Hello", databaseProvider.getPdpGroups(GROUP).get(0).getPdpSubgroups().get(0).getPdpInstances()
402                 .get(0).getMessage());
403         pdp.setMessage("Howdy");
404         databaseProvider.updatePdp(GROUP, "type", pdp);
405         assertEquals("Howdy", databaseProvider.getPdpGroups(GROUP).get(0).getPdpSubgroups().get(0).getPdpInstances()
406                 .get(0).getMessage());
407
408         assertThatThrownBy(() -> {
409             databaseProvider.deletePdpGroup(NAME);
410         }).hasMessage("delete of PDP group \"name:0.0.0\" failed, PDP group does not exist");
411
412         assertEquals(pdpGroup.getName(), databaseProvider.deletePdpGroup(GROUP).getName());
413
414         assertEquals(0, databaseProvider.getPdpStatistics(null, null).size());
415         assertEquals(1, databaseProvider.createPdpStatistics(statisticsArrayList).size());
416         assertEquals(1, databaseProvider.updatePdpStatistics(statisticsArrayList).size());
417     }
418
419
420     @Test
421     public void testProviderMethodsStatistics() throws PfModelException {
422         PolicyModelsProvider databaseProvider =
423                 new PolicyModelsProviderFactory().createPolicyModelsProvider(parameters);
424
425         assertEquals(NAME, databaseProvider.getPdpStatistics(null, null).get(0).getPdpInstanceId());
426         assertEquals(NAME, databaseProvider.getFilteredPdpStatistics(null, GROUP, null,
427             null, null, ORDER, 0).get(0).getPdpInstanceId());
428         assertEquals(0, databaseProvider.getFilteredPdpStatistics(null, GROUP, null,
429             Instant.now(), null, ORDER, 0).size());
430         assertEquals(NAME, databaseProvider.getFilteredPdpStatistics(null, GROUP, null,
431             null, TIMESTAMP, ORDER, 0).get(0).getPdpInstanceId());
432         assertEquals(0,
433                 databaseProvider.getFilteredPdpStatistics(null, GROUP, null, Instant.now(),
434                     Instant.now(), ORDER, 0).size());
435
436         assertEquals(NAME, databaseProvider.getFilteredPdpStatistics(NAME, GROUP, null, null,
437             null, ORDER, 0).get(0).getPdpInstanceId());
438         assertEquals(0,
439                 databaseProvider.getFilteredPdpStatistics(NAME, GROUP, null, Instant.now(), Instant.now(),
440                     ORDER, 0).size());
441
442         assertEquals(NAME, databaseProvider.getFilteredPdpStatistics(NAME, GROUP, "type",
443             null, null, ORDER, 0).get(0).getPdpInstanceId());
444
445         assertEquals(0, databaseProvider.getFilteredPdpStatistics(NAME, GROUP, "type",
446             Instant.now(), Instant.now(), ORDER, 0).size());
447
448         assertEquals(NAME, databaseProvider.getFilteredPdpStatistics(NAME, GROUP, "type",
449             null, null, ORDER, 1).get(0).getPdpInstanceId());
450         assertEquals(NAME, databaseProvider.getFilteredPdpStatistics(NAME, GROUP, "type",
451             null, null, ORDER, 5).get(0).getPdpInstanceId());
452         assertEquals(0, databaseProvider.getFilteredPdpStatistics(NAME, GROUP, "type",
453             Instant.now(), Instant.now(), ORDER, 5).size());
454
455         assertEquals(NAME, databaseProvider.deletePdpStatistics(NAME, null).get(0).getPdpInstanceId());
456         assertEquals(0, databaseProvider.getPdpStatistics(null, null).size());
457
458         assertThat(databaseProvider.getAllPolicyStatus()).isEmpty();
459         assertThat(databaseProvider.getAllPolicyStatus(new ToscaConceptIdentifierOptVersion("MyPolicy", null)))
460                 .isEmpty();
461         assertThat(databaseProvider.getGroupPolicyStatus(GROUP)).isEmpty();
462         assertThatCode(() -> databaseProvider.cudPolicyStatus(null, null, null))
463             .doesNotThrowAnyException();
464
465         databaseProvider.close();
466     }
467
468     @Test
469     public void testDeletePolicyDeployedInSubgroup() throws PfModelException {
470         List<ToscaConceptIdentifier> policies = new ArrayList<>();
471
472         policies.add(new ToscaConceptIdentifier("p0", "0.0.1"));
473         policies.add(new ToscaConceptIdentifier("p1", "0.0.1"));
474
475         List<ToscaConceptIdentifier> supportedPolicyTypes = new ArrayList<>();
476         supportedPolicyTypes.add(new ToscaConceptIdentifier("pt2", "0.0.1"));
477
478         PdpSubGroup subGroup = new PdpSubGroup();
479         subGroup.setPdpType("pdpType");
480         subGroup.setSupportedPolicyTypes(supportedPolicyTypes);
481         subGroup.setPolicies(policies);
482
483         List<PdpSubGroup> pdpSubgroups = new ArrayList<>();
484         pdpSubgroups.add(subGroup);
485
486         PdpGroup pdpGroup = new PdpGroup();
487         pdpGroup.setName("pdpGroup");
488         pdpGroup.setPdpGroupState(PdpState.PASSIVE);
489         pdpGroup.setPdpSubgroups(pdpSubgroups);
490
491         List<PdpGroup> pdpGroups = new ArrayList<>();
492         pdpGroups.add(pdpGroup);
493
494         PolicyModelsProvider databaseProvider =
495                 new PolicyModelsProviderFactory().createPolicyModelsProvider(parameters);
496
497         databaseProvider.createPdpGroups(pdpGroups);
498
499         assertThatThrownBy(() -> databaseProvider.deletePolicy("p0", "0.0.1"))
500                 .hasMessageContaining("policy is in use, it is deployed in PDP group pdpGroup subgroup pdpType");
501
502         assertThatThrownBy(() -> databaseProvider.deletePolicy("p3", "0.0.1"))
503                 .hasMessageContaining("service template not found in database");
504
505         databaseProvider.close();
506     }
507
508     @Test
509     public void testDeletePolicyTypeSupportedInSubgroup() throws PfModelException {
510         List<ToscaConceptIdentifier> supportedPolicyTypes = new ArrayList<>();
511         supportedPolicyTypes.add(new ToscaConceptIdentifier("pt1", "0.0.1"));
512         supportedPolicyTypes.add(new ToscaConceptIdentifier("pt2", "0.0.1"));
513
514         PdpSubGroup subGroup = new PdpSubGroup();
515         subGroup.setPdpType("pdpType");
516         subGroup.setSupportedPolicyTypes(supportedPolicyTypes);
517
518         List<PdpSubGroup> pdpSubgroups = new ArrayList<>();
519         pdpSubgroups.add(subGroup);
520
521         PdpGroup pdpGroup = new PdpGroup();
522         pdpGroup.setName("pdpGroup");
523         pdpGroup.setPdpGroupState(PdpState.PASSIVE);
524         pdpGroup.setPdpSubgroups(pdpSubgroups);
525
526         List<PdpGroup> pdpGroups = new ArrayList<>();
527         pdpGroups.add(pdpGroup);
528
529         PolicyModelsProvider databaseProvider =
530                 new PolicyModelsProviderFactory().createPolicyModelsProvider(parameters);
531
532         databaseProvider.createPdpGroups(pdpGroups);
533
534         assertThatThrownBy(() -> databaseProvider.deletePolicyType("pt2", "0.0.1"))
535                 .hasMessageContaining("policy type is in use, it is referenced in PDP group pdpGroup subgroup pdpType");
536
537         assertThatThrownBy(() -> databaseProvider.deletePolicyType("pt0", "0.0.1"))
538                 .hasMessageContaining("service template not found in database");
539
540         databaseProvider.close();
541     }
542 }