Refactor timestamp property in policy models to use Instant
[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         assertThatThrownBy(() -> {
197             databaseProvider.getFilteredPdpGroups(null);
198         }).hasMessageMatching(FILTER_IS_NULL);
199
200         assertThatThrownBy(() -> {
201             databaseProvider.createPdpGroups(null);
202         }).hasMessageMatching("^pdpGroups is marked .*on.*ull but is null$");
203
204         assertThatThrownBy(() -> {
205             databaseProvider.updatePdpGroups(null);
206         }).hasMessageMatching("^pdpGroups is marked .*on.*ull but is null$");
207
208         assertThatThrownBy(() -> {
209             databaseProvider.updatePdpSubGroup(null, null);
210         }).hasMessageMatching(GROUP_IS_NULL);
211
212         assertThatThrownBy(() -> {
213             databaseProvider.updatePdpSubGroup(null, new PdpSubGroup());
214         }).hasMessageMatching(GROUP_IS_NULL);
215
216         assertThatThrownBy(() -> {
217             databaseProvider.updatePdpSubGroup(NAME, null);
218         }).hasMessageMatching(SUBGROUP_IS_NULL);
219
220         assertThatThrownBy(() -> {
221             databaseProvider.updatePdpSubGroup(NAME, new PdpSubGroup());
222         }).hasMessage("parameter \"localName\" is null");
223
224         assertThatThrownBy(() -> {
225             databaseProvider.updatePdp(null, null, null);
226         }).hasMessageMatching(GROUP_IS_NULL);
227
228         assertThatThrownBy(() -> {
229             databaseProvider.updatePdp(null, null, new Pdp());
230         }).hasMessageMatching(GROUP_IS_NULL);
231
232         assertThatThrownBy(() -> {
233             databaseProvider.updatePdp(null, "sub", null);
234         }).hasMessageMatching(GROUP_IS_NULL);
235
236         assertThatThrownBy(() -> {
237             databaseProvider.updatePdp(null, "sub", new Pdp());
238         }).hasMessageMatching(GROUP_IS_NULL);
239
240         assertThatThrownBy(() -> {
241             databaseProvider.updatePdp(NAME, null, null);
242         }).hasMessageMatching(SUBGROUP_IS_NULL);
243
244         assertThatThrownBy(() -> {
245             databaseProvider.updatePdp(NAME, null, new Pdp());
246         }).hasMessageMatching(SUBGROUP_IS_NULL);
247
248         assertThatThrownBy(() -> {
249             databaseProvider.updatePdp(NAME, "sub", null);
250         }).hasMessageMatching("^pdp is marked .*on.*ull but is null$");
251
252         assertThatThrownBy(() -> {
253             databaseProvider.updatePdp(NAME, "sub", new Pdp());
254         }).hasMessage("parameter \"localName\" is null");
255
256         assertThatThrownBy(() -> {
257             databaseProvider.deletePdpGroup(null);
258         }).hasMessageMatching(NAME_IS_NULL);
259
260         assertThatThrownBy(() -> {
261             databaseProvider.getFilteredPdpStatistics(NAME, null, "sub", TIMESTAMP, TIMESTAMP, ORDER, 0);
262         }).hasMessageMatching(GROUP_IS_NULL);
263
264         assertThatThrownBy(() -> {
265             databaseProvider.createPdpStatistics(null);
266         }).hasMessageMatching("^pdpStatisticsList is marked .*on.*ull but is null$");
267
268         assertThatThrownBy(() -> {
269             databaseProvider.updatePdpStatistics(null);
270         }).hasMessageMatching("^pdpStatisticsList is marked .*on.*ull but is null$");
271
272         assertThatThrownBy(() -> {
273             databaseProvider.deletePdpStatistics(null, TIMESTAMP);
274         }).hasMessageMatching(NAME_IS_NULL);
275
276         databaseProvider.close();
277     }
278
279     @Test
280     public void testProviderMethodsNotInit() throws Exception {
281         PolicyModelsProvider databaseProvider =
282                 new PolicyModelsProviderFactory().createPolicyModelsProvider(parameters);
283
284         databaseProvider.close();
285
286         assertThatThrownBy(() -> {
287             databaseProvider.getPolicyTypes(NAME, "version");
288         }).hasMessage("policy models provider is not initilaized");
289     }
290
291     @Test
292     public void testProviderMethods() throws PfModelException {
293         PolicyModelsProvider databaseProvider =
294                 new PolicyModelsProviderFactory().createPolicyModelsProvider(parameters);
295
296         assertThatThrownBy(() -> databaseProvider.getPolicyTypes(NAME, VERSION_100))
297                 .hasMessage("service template not found in database");
298
299         assertTrue(databaseProvider.getPolicyTypeList(NAME, VERSION_100).isEmpty());
300
301         assertThatThrownBy(
302             () -> databaseProvider.getFilteredPolicyTypes(ToscaEntityFilter.<ToscaPolicyType>builder().build()))
303                         .hasMessage("service template not found in database");
304
305         assertTrue(databaseProvider.getFilteredPolicyTypeList(ToscaEntityFilter.<ToscaPolicyType>builder().build())
306                 .isEmpty());
307
308         assertThatThrownBy(() -> {
309             databaseProvider.createPolicyTypes(new ToscaServiceTemplate());
310         }).hasMessage("no policy types specified on service template");
311
312         assertThatThrownBy(() -> {
313             databaseProvider.updatePolicyTypes(new ToscaServiceTemplate());
314         }).hasMessage("no policy types specified on service template");
315
316         assertThatThrownBy(() -> databaseProvider.deletePolicyType(NAME, VERSION_100))
317                 .hasMessage("service template not found in database");
318
319         assertThatThrownBy(() -> databaseProvider.getPolicies(NAME, VERSION_100))
320                 .hasMessage("service template not found in database");
321
322         assertTrue(databaseProvider.getPolicyList(NAME, VERSION_100).isEmpty());
323
324         assertThatThrownBy(
325             () -> databaseProvider.getFilteredPolicies(ToscaTypedEntityFilter.<ToscaPolicy>builder().build()))
326                         .hasMessage("service template not found in database");
327
328         assertTrue(databaseProvider.getFilteredPolicyList(ToscaTypedEntityFilter.<ToscaPolicy>builder().build())
329                 .isEmpty());
330
331         assertThatThrownBy(() -> {
332             databaseProvider.createPolicies(new ToscaServiceTemplate());
333         }).hasMessage("topology template not specified on service template");
334
335         assertThatThrownBy(() -> {
336             databaseProvider.updatePolicies(new ToscaServiceTemplate());
337         }).hasMessage("topology template not specified on service template");
338
339         assertThatThrownBy(() -> databaseProvider.deletePolicy("Policy", "0.0.0").getToscaTopologyTemplate())
340                 .hasMessage("service template not found in database");
341
342         assertEquals(0, databaseProvider.getPdpGroups(NAME).size());
343         assertEquals(0, databaseProvider.getFilteredPdpGroups(PdpGroupFilter.builder().build()).size());
344
345         assertNotNull(databaseProvider.createPdpGroups(new ArrayList<>()));
346         assertNotNull(databaseProvider.updatePdpGroups(new ArrayList<>()));
347
348         PdpGroup pdpGroup = new PdpGroup();
349         pdpGroup.setName(GROUP);
350         pdpGroup.setVersion("1.2.3");
351         pdpGroup.setPdpGroupState(PdpState.ACTIVE);
352         pdpGroup.setPdpSubgroups(new ArrayList<>());
353         List<PdpGroup> groupList = new ArrayList<>();
354         groupList.add(pdpGroup);
355
356         PdpSubGroup pdpSubGroup = new PdpSubGroup();
357         pdpSubGroup.setPdpType("type");
358         pdpSubGroup.setDesiredInstanceCount(123);
359         pdpSubGroup.setSupportedPolicyTypes(new ArrayList<>());
360         pdpSubGroup.getSupportedPolicyTypes().add(new ToscaConceptIdentifier("type", "7.8.9"));
361         pdpGroup.getPdpSubgroups().add(pdpSubGroup);
362
363         Pdp pdp = new Pdp();
364         pdp.setInstanceId("type-0");
365         pdp.setMessage("Hello");
366         pdp.setPdpState(PdpState.ACTIVE);
367         pdp.setHealthy(PdpHealthStatus.UNKNOWN);
368         pdpSubGroup.setPdpInstances(new ArrayList<>());
369         pdpSubGroup.getPdpInstances().add(pdp);
370
371         PdpStatistics pdpStatistics = new PdpStatistics();
372         pdpStatistics.setPdpInstanceId(NAME);
373         pdpStatistics.setTimeStamp(TIMESTAMP);
374         pdpStatistics.setPdpGroupName(GROUP);
375         pdpStatistics.setPdpSubGroupName("type");
376         ArrayList<PdpStatistics> statisticsArrayList = new ArrayList<>();
377         statisticsArrayList.add(pdpStatistics);
378
379         assertEquals(123,
380                 databaseProvider.createPdpGroups(groupList).get(0).getPdpSubgroups().get(0).getDesiredInstanceCount());
381         assertEquals(1, databaseProvider.getPdpGroups(GROUP).size());
382
383         pdpSubGroup.setDesiredInstanceCount(234);
384         databaseProvider.updatePdpSubGroup(GROUP, pdpSubGroup);
385         assertEquals(234,
386                 databaseProvider.getPdpGroups(GROUP).get(0).getPdpSubgroups().get(0).getDesiredInstanceCount());
387
388         assertEquals("Hello", databaseProvider.getPdpGroups(GROUP).get(0).getPdpSubgroups().get(0).getPdpInstances()
389                 .get(0).getMessage());
390         pdp.setMessage("Howdy");
391         databaseProvider.updatePdp(GROUP, "type", pdp);
392         assertEquals("Howdy", databaseProvider.getPdpGroups(GROUP).get(0).getPdpSubgroups().get(0).getPdpInstances()
393                 .get(0).getMessage());
394
395         assertThatThrownBy(() -> {
396             databaseProvider.deletePdpGroup(NAME);
397         }).hasMessage("delete of PDP group \"name:0.0.0\" failed, PDP group does not exist");
398
399         assertEquals(pdpGroup.getName(), databaseProvider.deletePdpGroup(GROUP).getName());
400
401         assertEquals(0, databaseProvider.getPdpStatistics(null, null).size());
402         assertEquals(1, databaseProvider.createPdpStatistics(statisticsArrayList).size());
403         assertEquals(1, databaseProvider.updatePdpStatistics(statisticsArrayList).size());
404
405         assertEquals(NAME, databaseProvider.getPdpStatistics(null, null).get(0).getPdpInstanceId());
406         assertEquals(NAME, databaseProvider.getFilteredPdpStatistics(null, GROUP, null,
407             null, null, ORDER, 0).get(0).getPdpInstanceId());
408         assertEquals(0, databaseProvider.getFilteredPdpStatistics(null, GROUP, null,
409             Instant.now(), null, ORDER, 0).size());
410         assertEquals(NAME, databaseProvider.getFilteredPdpStatistics(null, GROUP, null,
411             null, TIMESTAMP, ORDER, 0).get(0).getPdpInstanceId());
412         assertEquals(0,
413                 databaseProvider.getFilteredPdpStatistics(null, GROUP, null, Instant.now(),
414                     Instant.now(), ORDER, 0).size());
415
416         assertEquals(NAME, databaseProvider.getFilteredPdpStatistics(NAME, GROUP, null, null,
417             null, ORDER, 0).get(0).getPdpInstanceId());
418         assertEquals(0,
419                 databaseProvider.getFilteredPdpStatistics(NAME, GROUP, null, Instant.now(), Instant.now(),
420                     ORDER, 0).size());
421
422         assertEquals(NAME, databaseProvider.getFilteredPdpStatistics(NAME, GROUP, "type",
423             null, null, ORDER, 0).get(0).getPdpInstanceId());
424
425         assertEquals(0, databaseProvider.getFilteredPdpStatistics(NAME, GROUP, "type",
426             Instant.now(), Instant.now(), ORDER, 0).size());
427
428         assertEquals(NAME, databaseProvider.getFilteredPdpStatistics(NAME, GROUP, "type",
429             null, null, ORDER, 1).get(0).getPdpInstanceId());
430         assertEquals(NAME, databaseProvider.getFilteredPdpStatistics(NAME, GROUP, "type",
431             null, null, ORDER, 5).get(0).getPdpInstanceId());
432         assertEquals(0, databaseProvider.getFilteredPdpStatistics(NAME, GROUP, "type",
433             Instant.now(), Instant.now(), ORDER, 5).size());
434
435         assertEquals(NAME, databaseProvider.deletePdpStatistics(NAME, null).get(0).getPdpInstanceId());
436         assertEquals(0, databaseProvider.getPdpStatistics(null, null).size());
437
438         assertThat(databaseProvider.getAllPolicyStatus()).isEmpty();
439         assertThat(databaseProvider.getAllPolicyStatus(new ToscaConceptIdentifierOptVersion("MyPolicy", null)))
440                 .isEmpty();
441         assertThat(databaseProvider.getGroupPolicyStatus(GROUP)).isEmpty();
442         assertThatCode(() -> databaseProvider.cudPolicyStatus(null, null, null))
443             .doesNotThrowAnyException();
444
445         databaseProvider.close();
446     }
447
448     @Test
449     public void testDeletePolicyDeployedInSubgroup() throws PfModelException {
450         List<ToscaConceptIdentifier> policies = new ArrayList<>();
451
452         policies.add(new ToscaConceptIdentifier("p0", "0.0.1"));
453         policies.add(new ToscaConceptIdentifier("p1", "0.0.1"));
454
455         List<ToscaConceptIdentifier> supportedPolicyTypes = new ArrayList<>();
456         supportedPolicyTypes.add(new ToscaConceptIdentifier("pt2", "0.0.1"));
457
458         PdpSubGroup subGroup = new PdpSubGroup();
459         subGroup.setPdpType("pdpType");
460         subGroup.setSupportedPolicyTypes(supportedPolicyTypes);
461         subGroup.setPolicies(policies);
462
463         List<PdpSubGroup> pdpSubgroups = new ArrayList<>();
464         pdpSubgroups.add(subGroup);
465
466         PdpGroup pdpGroup = new PdpGroup();
467         pdpGroup.setName("pdpGroup");
468         pdpGroup.setPdpGroupState(PdpState.PASSIVE);
469         pdpGroup.setPdpSubgroups(pdpSubgroups);
470
471         List<PdpGroup> pdpGroups = new ArrayList<>();
472         pdpGroups.add(pdpGroup);
473
474         PolicyModelsProvider databaseProvider =
475                 new PolicyModelsProviderFactory().createPolicyModelsProvider(parameters);
476
477         databaseProvider.createPdpGroups(pdpGroups);
478
479         assertThatThrownBy(() -> databaseProvider.deletePolicy("p0", "0.0.1"))
480                 .hasMessageContaining("policy is in use, it is deployed in PDP group pdpGroup subgroup pdpType");
481
482         assertThatThrownBy(() -> databaseProvider.deletePolicy("p3", "0.0.1"))
483                 .hasMessageContaining("service template not found in database");
484
485         databaseProvider.close();
486     }
487
488     @Test
489     public void testDeletePolicyTypeSupportedInSubgroup() throws PfModelException {
490         List<ToscaConceptIdentifier> supportedPolicyTypes = new ArrayList<>();
491         supportedPolicyTypes.add(new ToscaConceptIdentifier("pt1", "0.0.1"));
492         supportedPolicyTypes.add(new ToscaConceptIdentifier("pt2", "0.0.1"));
493
494         PdpSubGroup subGroup = new PdpSubGroup();
495         subGroup.setPdpType("pdpType");
496         subGroup.setSupportedPolicyTypes(supportedPolicyTypes);
497
498         List<PdpSubGroup> pdpSubgroups = new ArrayList<>();
499         pdpSubgroups.add(subGroup);
500
501         PdpGroup pdpGroup = new PdpGroup();
502         pdpGroup.setName("pdpGroup");
503         pdpGroup.setPdpGroupState(PdpState.PASSIVE);
504         pdpGroup.setPdpSubgroups(pdpSubgroups);
505
506         List<PdpGroup> pdpGroups = new ArrayList<>();
507         pdpGroups.add(pdpGroup);
508
509         PolicyModelsProvider databaseProvider =
510                 new PolicyModelsProviderFactory().createPolicyModelsProvider(parameters);
511
512         databaseProvider.createPdpGroups(pdpGroups);
513
514         assertThatThrownBy(() -> databaseProvider.deletePolicyType("pt2", "0.0.1"))
515                 .hasMessageContaining("policy type is in use, it is referenced in PDP group pdpGroup subgroup pdpType");
516
517         assertThatThrownBy(() -> databaseProvider.deletePolicyType("pt0", "0.0.1"))
518                 .hasMessageContaining("service template not found in database");
519
520         databaseProvider.close();
521     }
522 }