2  * ============LICENSE_START=======================================================
 
   3  *  Copyright (C) 2019 Nordix Foundation.
 
   4  * ================================================================================
 
   5  * Licensed under the Apache License, Version 2.0 (the "License");
 
   6  * you may not use this file except in compliance with the License.
 
   7  * You may obtain a copy of the License at
 
   9  *      http://www.apache.org/licenses/LICENSE-2.0
 
  11  * Unless required by applicable law or agreed to in writing, software
 
  12  * distributed under the License is distributed on an "AS IS" BASIS,
 
  13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
  14  * See the License for the specific language governing permissions and
 
  15  * limitations under the License.
 
  17  * SPDX-License-Identifier: Apache-2.0
 
  18  * ============LICENSE_END=========================================================
 
  21 package org.onap.policy.models.provider.impl;
 
  23 import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
  24 import static org.junit.Assert.assertEquals;
 
  25 import static org.junit.Assert.assertNotNull;
 
  26 import static org.junit.Assert.fail;
 
  28 import java.util.ArrayList;
 
  29 import java.util.Base64;
 
  30 import java.util.List;
 
  32 import org.junit.Before;
 
  33 import org.junit.Test;
 
  34 import org.onap.policy.models.pdp.concepts.Pdp;
 
  35 import org.onap.policy.models.pdp.concepts.PdpGroup;
 
  36 import org.onap.policy.models.pdp.concepts.PdpGroupFilter;
 
  37 import org.onap.policy.models.pdp.concepts.PdpStatistics;
 
  38 import org.onap.policy.models.pdp.concepts.PdpSubGroup;
 
  39 import org.onap.policy.models.pdp.enums.PdpHealthStatus;
 
  40 import org.onap.policy.models.pdp.enums.PdpState;
 
  41 import org.onap.policy.models.provider.PolicyModelsProvider;
 
  42 import org.onap.policy.models.provider.PolicyModelsProviderFactory;
 
  43 import org.onap.policy.models.provider.PolicyModelsProviderParameters;
 
  44 import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyFilter;
 
  45 import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyTypeFilter;
 
  46 import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyTypeIdentifier;
 
  47 import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
 
  48 import org.onap.policy.models.tosca.legacy.concepts.LegacyGuardPolicyInput;
 
  49 import org.onap.policy.models.tosca.legacy.concepts.LegacyOperationalPolicy;
 
  50 import org.slf4j.Logger;
 
  51 import org.slf4j.LoggerFactory;
 
  54  * Test the database models provider implementation.
 
  56  * @author Liam Fallon (liam.fallon@est.tech)
 
  58 public class DatabasePolicyModelsProviderTest {
 
  59     private static final Logger LOGGER = LoggerFactory.getLogger(DatabasePolicyModelsProviderTest.class);
 
  61     PolicyModelsProviderParameters parameters;
 
  64      * Initialize parameters.
 
  67     public void setupParameters() {
 
  68         parameters = new PolicyModelsProviderParameters();
 
  69         parameters.setDatabaseDriver("org.h2.Driver");
 
  70         parameters.setDatabaseUrl("jdbc:h2:mem:testdb");
 
  71         parameters.setDatabaseUser("policy");
 
  72         parameters.setDatabasePassword(Base64.getEncoder().encodeToString("P01icY".getBytes()));
 
  73         parameters.setPersistenceUnit("ToscaConceptTest");
 
  77     public void testInitAndClose() throws Exception {
 
  78         assertThatThrownBy(() -> {
 
  79             new DatabasePolicyModelsProviderImpl(null);
 
  80         }).hasMessage("parameters is marked @NonNull but is null");
 
  82         PolicyModelsProvider databaseProvider =
 
  83                 new PolicyModelsProviderFactory().createPolicyModelsProvider(parameters);
 
  85         parameters.setDatabaseUrl("jdbc://www.acmecorp.nonexist");
 
  88             databaseProvider.close();
 
  89             databaseProvider.init();
 
  90         } catch (Exception pfme) {
 
  91             fail("test shold not throw an exception here");
 
  93         databaseProvider.close();
 
  95         parameters.setDatabaseUrl("jdbc:h2:mem:testdb");
 
  97         parameters.setPersistenceUnit("WileECoyote");
 
  99         assertThatThrownBy(() -> {
 
 100             databaseProvider.init();
 
 101         }).hasMessageContaining("could not create Data Access Object (DAO)");
 
 103         parameters.setPersistenceUnit("ToscaConceptTest");
 
 106             databaseProvider.init();
 
 107             databaseProvider.close();
 
 108         } catch (Exception pfme) {
 
 109             pfme.printStackTrace();
 
 110             fail("test shold not throw an exception here");
 
 113         assertThatThrownBy(() -> {
 
 114             databaseProvider.init();
 
 115             databaseProvider.init();
 
 116         }).hasMessage("provider is already initialized");
 
 119             databaseProvider.close();
 
 120         } catch (Exception pfme) {
 
 121             fail("test shold not throw an exception here");
 
 125             databaseProvider.close();
 
 126         } catch (Exception pfme) {
 
 127             fail("test shold not throw an exception here");
 
 132     public void testProviderMethodsNull() throws Exception {
 
 133         PolicyModelsProvider databaseProvider =
 
 134                 new PolicyModelsProviderFactory().createPolicyModelsProvider(parameters);
 
 136         assertThatThrownBy(() -> {
 
 137             databaseProvider.getFilteredPolicyTypes(null);
 
 138         }).hasMessage("filter is marked @NonNull but is null");
 
 140         assertThatThrownBy(() -> {
 
 141             databaseProvider.getFilteredPolicyTypeList(null);
 
 142         }).hasMessage("filter is marked @NonNull but is null");
 
 144         assertThatThrownBy(() -> {
 
 145             databaseProvider.createPolicyTypes(null);
 
 146         }).hasMessage("serviceTemplate is marked @NonNull but is null");
 
 148         assertThatThrownBy(() -> {
 
 149             databaseProvider.updatePolicyTypes(null);
 
 150         }).hasMessage("serviceTemplate is marked @NonNull but is null");
 
 152         assertThatThrownBy(() -> {
 
 153             databaseProvider.deletePolicyType(null, null);
 
 154         }).hasMessage("name is marked @NonNull but is null");
 
 156         assertThatThrownBy(() -> {
 
 157             databaseProvider.deletePolicyType("aaa", null);
 
 158         }).hasMessage("version is marked @NonNull but is null");
 
 160         assertThatThrownBy(() -> {
 
 161             databaseProvider.deletePolicyType(null, "aaa");
 
 162         }).hasMessage("name is marked @NonNull but is null");
 
 164         assertThatThrownBy(() -> {
 
 165             databaseProvider.getFilteredPolicies(null);
 
 166         }).hasMessage("filter is marked @NonNull but is null");
 
 168         assertThatThrownBy(() -> {
 
 169             databaseProvider.getFilteredPolicyList(null);
 
 170         }).hasMessage("filter is marked @NonNull but is null");
 
 172         assertThatThrownBy(() -> {
 
 173             databaseProvider.createPolicies(null);
 
 174         }).hasMessage("serviceTemplate is marked @NonNull but is null");
 
 176         assertThatThrownBy(() -> {
 
 177             databaseProvider.updatePolicies(null);
 
 178         }).hasMessage("serviceTemplate is marked @NonNull but is null");
 
 180         assertThatThrownBy(() -> {
 
 181             databaseProvider.deletePolicy(null, null);
 
 182         }).hasMessage("name is marked @NonNull but is null");
 
 184         assertThatThrownBy(() -> {
 
 185             databaseProvider.deletePolicy(null, "aaa");
 
 186         }).hasMessage("name is marked @NonNull but is null");
 
 188         assertThatThrownBy(() -> {
 
 189             databaseProvider.deletePolicy("aaa", null);
 
 190         }).hasMessage("version is marked @NonNull but is null");
 
 192         assertThatThrownBy(() -> {
 
 193             databaseProvider.getOperationalPolicy(null);
 
 194         }).hasMessage("policyId is marked @NonNull but is null");
 
 196         assertThatThrownBy(() -> {
 
 197             databaseProvider.createOperationalPolicy(null);
 
 198         }).hasMessage("legacyOperationalPolicy is marked @NonNull but is null");
 
 200         assertThatThrownBy(() -> {
 
 201             databaseProvider.updateOperationalPolicy(null);
 
 202         }).hasMessage("legacyOperationalPolicy is marked @NonNull but is null");
 
 204         assertThatThrownBy(() -> {
 
 205             databaseProvider.deleteOperationalPolicy(null);
 
 206         }).hasMessage("policyId is marked @NonNull but is null");
 
 208         assertThatThrownBy(() -> {
 
 209             databaseProvider.getGuardPolicy(null);
 
 210         }).hasMessage("policyId is marked @NonNull but is null");
 
 212         assertThatThrownBy(() -> {
 
 213             databaseProvider.createGuardPolicy(null);
 
 214         }).hasMessage("legacyGuardPolicy is marked @NonNull but is null");
 
 216         assertThatThrownBy(() -> {
 
 217             databaseProvider.updateGuardPolicy(null);
 
 218         }).hasMessage("legacyGuardPolicy is marked @NonNull but is null");
 
 220         assertThatThrownBy(() -> {
 
 221             databaseProvider.deleteGuardPolicy(null);
 
 222         }).hasMessage("policyId is marked @NonNull but is null");
 
 224         assertThatThrownBy(() -> {
 
 225             databaseProvider.getFilteredPdpGroups(null);
 
 226         }).hasMessage("filter is marked @NonNull but is null");
 
 228         assertThatThrownBy(() -> {
 
 229             databaseProvider.createPdpGroups(null);
 
 230         }).hasMessage("pdpGroups is marked @NonNull but is null");
 
 232         assertThatThrownBy(() -> {
 
 233             databaseProvider.updatePdpGroups(null);
 
 234         }).hasMessage("pdpGroups is marked @NonNull but is null");
 
 236         assertThatThrownBy(() -> {
 
 237             databaseProvider.updatePdpSubGroup(null, null, null);
 
 238         }).hasMessage("pdpGroupName is marked @NonNull but is null");
 
 240         assertThatThrownBy(() -> {
 
 241             databaseProvider.updatePdpSubGroup(null, null, new PdpSubGroup());
 
 242         }).hasMessage("pdpGroupName is marked @NonNull but is null");
 
 244         assertThatThrownBy(() -> {
 
 245             databaseProvider.updatePdpSubGroup(null, "version", null);
 
 246         }).hasMessage("pdpGroupName is marked @NonNull but is null");
 
 248         assertThatThrownBy(() -> {
 
 249             databaseProvider.updatePdpSubGroup(null, "version", new PdpSubGroup());
 
 250         }).hasMessage("pdpGroupName is marked @NonNull but is null");
 
 252         assertThatThrownBy(() -> {
 
 253             databaseProvider.updatePdpSubGroup("name", null, null);
 
 254         }).hasMessage("pdpGroupVersion is marked @NonNull but is null");
 
 256         assertThatThrownBy(() -> {
 
 257             databaseProvider.updatePdpSubGroup("name", null, new PdpSubGroup());
 
 258         }).hasMessage("pdpGroupVersion is marked @NonNull but is null");
 
 260         assertThatThrownBy(() -> {
 
 261             databaseProvider.updatePdpSubGroup("name", "version", null);
 
 262         }).hasMessage("pdpSubGroup is marked @NonNull but is null");
 
 264         assertThatThrownBy(() -> {
 
 265             databaseProvider.updatePdp(null, null, null, null);
 
 266         }).hasMessage("pdpGroupName is marked @NonNull but is null");
 
 268         assertThatThrownBy(() -> {
 
 269             databaseProvider.updatePdp(null, null, null, new Pdp());
 
 270         }).hasMessage("pdpGroupName is marked @NonNull but is null");
 
 272         assertThatThrownBy(() -> {
 
 273             databaseProvider.updatePdp(null, null, "sub", null);
 
 274         }).hasMessage("pdpGroupName is marked @NonNull but is null");
 
 276         assertThatThrownBy(() -> {
 
 277             databaseProvider.updatePdp(null, null, "sub", new Pdp());
 
 278         }).hasMessage("pdpGroupName is marked @NonNull but is null");
 
 280         assertThatThrownBy(() -> {
 
 281             databaseProvider.updatePdp(null, "version", null, null);
 
 282         }).hasMessage("pdpGroupName is marked @NonNull but is null");
 
 284         assertThatThrownBy(() -> {
 
 285             databaseProvider.updatePdp(null, "version", null, new Pdp());
 
 286         }).hasMessage("pdpGroupName is marked @NonNull but is null");
 
 288         assertThatThrownBy(() -> {
 
 289             databaseProvider.updatePdp(null, "version", "sub", null);
 
 290         }).hasMessage("pdpGroupName is marked @NonNull but is null");
 
 292         assertThatThrownBy(() -> {
 
 293             databaseProvider.updatePdp(null, "version", "sub", new Pdp());
 
 294         }).hasMessage("pdpGroupName is marked @NonNull but is null");
 
 296         assertThatThrownBy(() -> {
 
 297             databaseProvider.updatePdp("name", null, null, null);
 
 298         }).hasMessage("pdpGroupVersion is marked @NonNull but is null");
 
 300         assertThatThrownBy(() -> {
 
 301             databaseProvider.updatePdp("name", null, null, new Pdp());
 
 302         }).hasMessage("pdpGroupVersion is marked @NonNull but is null");
 
 304         assertThatThrownBy(() -> {
 
 305             databaseProvider.updatePdp("name", null, "sub", null);
 
 306         }).hasMessage("pdpGroupVersion is marked @NonNull but is null");
 
 308         assertThatThrownBy(() -> {
 
 309             databaseProvider.updatePdp("name", null, "sub", new Pdp());
 
 310         }).hasMessage("pdpGroupVersion is marked @NonNull but is null");
 
 312         assertThatThrownBy(() -> {
 
 313             databaseProvider.updatePdp("name", "version", null, null);
 
 314         }).hasMessage("pdpSubGroup is marked @NonNull but is null");
 
 316         assertThatThrownBy(() -> {
 
 317             databaseProvider.updatePdp("name", "version", null, new Pdp());
 
 318         }).hasMessage("pdpSubGroup is marked @NonNull but is null");
 
 320         assertThatThrownBy(() -> {
 
 321             databaseProvider.updatePdp("name", "version", "sub", null);
 
 322         }).hasMessage("pdp is marked @NonNull but is null");
 
 324         assertThatThrownBy(() -> {
 
 325             databaseProvider.deletePdpGroup(null, null);
 
 326         }).hasMessage("name is marked @NonNull but is null");
 
 328         assertThatThrownBy(() -> {
 
 329             databaseProvider.deletePdpGroup(null, "version");
 
 330         }).hasMessage("name is marked @NonNull but is null");
 
 332         assertThatThrownBy(() -> {
 
 333             databaseProvider.deletePdpGroup("name", null);
 
 334         }).hasMessage("version is marked @NonNull but is null");
 
 336         assertThatThrownBy(() -> {
 
 337             databaseProvider.updatePdpStatistics(null, null, null, null, null);
 
 338         }).hasMessage("pdpGroupName is marked @NonNull but is null");
 
 340         assertThatThrownBy(() -> {
 
 341             databaseProvider.updatePdpStatistics(null, null, null, null, new PdpStatistics());
 
 342         }).hasMessage("pdpGroupName is marked @NonNull but is null");
 
 344         assertThatThrownBy(() -> {
 
 345             databaseProvider.updatePdpStatistics(null, null, null, "Instance", null);
 
 346         }).hasMessage("pdpGroupName is marked @NonNull but is null");
 
 348         assertThatThrownBy(() -> {
 
 349             databaseProvider.updatePdpStatistics(null, null, null, "Instance", new PdpStatistics());
 
 350         }).hasMessage("pdpGroupName is marked @NonNull but is null");
 
 352         assertThatThrownBy(() -> {
 
 353             databaseProvider.updatePdpStatistics(null, null, "type", null, null);
 
 354         }).hasMessage("pdpGroupName is marked @NonNull but is null");
 
 356         assertThatThrownBy(() -> {
 
 357             databaseProvider.updatePdpStatistics(null, null, "type", null, new PdpStatistics());
 
 358         }).hasMessage("pdpGroupName is marked @NonNull but is null");
 
 360         assertThatThrownBy(() -> {
 
 361             databaseProvider.updatePdpStatistics(null, null, "type", "Instance", null);
 
 362         }).hasMessage("pdpGroupName is marked @NonNull but is null");
 
 364         assertThatThrownBy(() -> {
 
 365             databaseProvider.updatePdpStatistics(null, null, "type", "Instance", new PdpStatistics());
 
 366         }).hasMessage("pdpGroupName is marked @NonNull but is null");
 
 368         assertThatThrownBy(() -> {
 
 369             databaseProvider.updatePdpStatistics(null, "ver", null, null, null);
 
 370         }).hasMessage("pdpGroupName is marked @NonNull but is null");
 
 372         assertThatThrownBy(() -> {
 
 373             databaseProvider.updatePdpStatistics(null, "ver", null, null, new PdpStatistics());
 
 374         }).hasMessage("pdpGroupName is marked @NonNull but is null");
 
 376         assertThatThrownBy(() -> {
 
 377             databaseProvider.updatePdpStatistics(null, "ver", null, "Instance", null);
 
 378         }).hasMessage("pdpGroupName is marked @NonNull but is null");
 
 380         assertThatThrownBy(() -> {
 
 381             databaseProvider.updatePdpStatistics(null, "ver", null, "Instance", new PdpStatistics());
 
 382         }).hasMessage("pdpGroupName is marked @NonNull but is null");
 
 384         assertThatThrownBy(() -> {
 
 385             databaseProvider.updatePdpStatistics(null, "ver", "type", null, null);
 
 386         }).hasMessage("pdpGroupName is marked @NonNull but is null");
 
 388         assertThatThrownBy(() -> {
 
 389             databaseProvider.updatePdpStatistics(null, "ver", "type", null, new PdpStatistics());
 
 390         }).hasMessage("pdpGroupName is marked @NonNull but is null");
 
 392         assertThatThrownBy(() -> {
 
 393             databaseProvider.updatePdpStatistics(null, "ver", "type", "Instance", null);
 
 394         }).hasMessage("pdpGroupName is marked @NonNull but is null");
 
 396         assertThatThrownBy(() -> {
 
 397             databaseProvider.updatePdpStatistics(null, "ver", "type", "Instance", new PdpStatistics());
 
 398         }).hasMessage("pdpGroupName is marked @NonNull but is null");
 
 400         assertThatThrownBy(() -> {
 
 401             databaseProvider.updatePdpStatistics("name", null, null, null, null);
 
 402         }).hasMessage("pdpGroupVersion is marked @NonNull but is null");
 
 404         assertThatThrownBy(() -> {
 
 405             databaseProvider.updatePdpStatistics("name", null, null, null, new PdpStatistics());
 
 406         }).hasMessage("pdpGroupVersion is marked @NonNull but is null");
 
 408         assertThatThrownBy(() -> {
 
 409             databaseProvider.updatePdpStatistics("name", null, null, "Instance", null);
 
 410         }).hasMessage("pdpGroupVersion is marked @NonNull but is null");
 
 412         assertThatThrownBy(() -> {
 
 413             databaseProvider.updatePdpStatistics("name", null, null, "Instance", new PdpStatistics());
 
 414         }).hasMessage("pdpGroupVersion is marked @NonNull but is null");
 
 416         assertThatThrownBy(() -> {
 
 417             databaseProvider.updatePdpStatistics("name", null, "type", null, null);
 
 418         }).hasMessage("pdpGroupVersion is marked @NonNull but is null");
 
 420         assertThatThrownBy(() -> {
 
 421             databaseProvider.updatePdpStatistics("name", null, "type", null, new PdpStatistics());
 
 422         }).hasMessage("pdpGroupVersion is marked @NonNull but is null");
 
 424         assertThatThrownBy(() -> {
 
 425             databaseProvider.updatePdpStatistics("name", null, "type", "Instance", null);
 
 426         }).hasMessage("pdpGroupVersion is marked @NonNull but is null");
 
 428         assertThatThrownBy(() -> {
 
 429             databaseProvider.updatePdpStatistics("name", null, "type", "Instance", new PdpStatistics());
 
 430         }).hasMessage("pdpGroupVersion is marked @NonNull but is null");
 
 432         assertThatThrownBy(() -> {
 
 433             databaseProvider.updatePdpStatistics("name", "ver", null, null, null);
 
 434         }).hasMessage("pdpType is marked @NonNull but is null");
 
 436         assertThatThrownBy(() -> {
 
 437             databaseProvider.updatePdpStatistics("name", "ver", null, null, new PdpStatistics());
 
 438         }).hasMessage("pdpType is marked @NonNull but is null");
 
 440         assertThatThrownBy(() -> {
 
 441             databaseProvider.updatePdpStatistics("name", "ver", null, "Instance", null);
 
 442         }).hasMessage("pdpType is marked @NonNull but is null");
 
 444         assertThatThrownBy(() -> {
 
 445             databaseProvider.updatePdpStatistics("name", "ver", null, "Instance", new PdpStatistics());
 
 446         }).hasMessage("pdpType is marked @NonNull but is null");
 
 448         assertThatThrownBy(() -> {
 
 449             databaseProvider.updatePdpStatistics("name", "ver", "type", null, null);
 
 450         }).hasMessage("pdpInstanceId is marked @NonNull but is null");
 
 452         assertThatThrownBy(() -> {
 
 453             databaseProvider.updatePdpStatistics("name", "ver", "type", null, new PdpStatistics());
 
 454         }).hasMessage("pdpInstanceId is marked @NonNull but is null");
 
 456         assertThatThrownBy(() -> {
 
 457             databaseProvider.updatePdpStatistics("name", "ver", "type", "Instance", null);
 
 458         }).hasMessage("pdpStatistics is marked @NonNull but is null");
 
 460         databaseProvider.close();
 
 464     public void testProviderMethodsNotInit() throws Exception {
 
 465         PolicyModelsProvider databaseProvider =
 
 466                 new PolicyModelsProviderFactory().createPolicyModelsProvider(parameters);
 
 468         databaseProvider.close();
 
 470         assertThatThrownBy(() -> {
 
 471             databaseProvider.getPolicyTypes("name", "version");
 
 472         }).hasMessage("policy models provider is not initilaized");
 
 476     public void testProviderMethods() {
 
 477         try (PolicyModelsProvider databaseProvider =
 
 478                 new PolicyModelsProviderFactory().createPolicyModelsProvider(parameters)) {
 
 480             assertEquals(0, databaseProvider.getPolicyTypes("name", "version").getPolicyTypes().get(0).size());
 
 481             assertEquals(0, databaseProvider.getPolicyTypeList("name", "version").size());
 
 482             assertEquals(0, databaseProvider.getFilteredPolicyTypes(ToscaPolicyTypeFilter.builder().build())
 
 483                     .getPolicyTypes().get(0).size());
 
 484             assertEquals(0, databaseProvider.getFilteredPolicyTypeList(ToscaPolicyTypeFilter.builder().build()).size());
 
 486             assertThatThrownBy(() -> {
 
 487                 databaseProvider.createPolicyTypes(new ToscaServiceTemplate());
 
 488             }).hasMessage("no policy types specified on service template");
 
 490             assertThatThrownBy(() -> {
 
 491                 databaseProvider.updatePolicyTypes(new ToscaServiceTemplate());
 
 492             }).hasMessage("no policy types specified on service template");
 
 494             assertEquals(0, databaseProvider.deletePolicyType("name", "version").getPolicyTypes().get(0).size());
 
 496             assertEquals(0, databaseProvider.deletePolicyType("name", "version").getPolicyTypes().get(0).size());
 
 498             assertEquals(0, databaseProvider.getPolicies("name", "version").getToscaTopologyTemplate().getPolicies()
 
 500             assertEquals(0, databaseProvider.getPolicyList("name", "version").size());
 
 501             assertEquals(0, databaseProvider.getFilteredPolicies(ToscaPolicyFilter.builder().build())
 
 502                     .getToscaTopologyTemplate().getPolicies().get(0).size());
 
 503             assertEquals(0, databaseProvider.getFilteredPolicyList(ToscaPolicyFilter.builder().build()).size());
 
 505             assertThatThrownBy(() -> {
 
 506                 databaseProvider.createPolicies(new ToscaServiceTemplate());
 
 507             }).hasMessage("topology template not specified on service template");
 
 509             assertThatThrownBy(() -> {
 
 510                 databaseProvider.updatePolicies(new ToscaServiceTemplate());
 
 511             }).hasMessage("topology template not specified on service template");
 
 513             assertEquals(0, databaseProvider.deletePolicy("Policy", "0.0.0").getToscaTopologyTemplate().getPolicies()
 
 516             assertThatThrownBy(() -> {
 
 517                 databaseProvider.getOperationalPolicy("policy_id");
 
 518             }).hasMessage("no policy found for policy ID: policy_id");
 
 520             assertThatThrownBy(() -> {
 
 521                 databaseProvider.createOperationalPolicy(new LegacyOperationalPolicy());
 
 522             }).hasMessage("name is marked @NonNull but is null");
 
 524             assertThatThrownBy(() -> {
 
 525                 databaseProvider.updateOperationalPolicy(new LegacyOperationalPolicy());
 
 526             }).hasMessage("no policy found for policy ID: null");
 
 528             assertThatThrownBy(() -> {
 
 529                 databaseProvider.deleteOperationalPolicy("policy_id");
 
 530             }).hasMessage("no policy found for policy ID: policy_id");
 
 532             assertThatThrownBy(() -> {
 
 533                 databaseProvider.getGuardPolicy("policy_id");
 
 534             }).hasMessage("no policy found for policy ID: policy_id");
 
 536             assertThatThrownBy(() -> {
 
 537                 databaseProvider.createGuardPolicy(new LegacyGuardPolicyInput());
 
 538             }).hasMessage("policy type for guard policy \"null\" unknown");
 
 540             assertThatThrownBy(() -> {
 
 541                 databaseProvider.updateGuardPolicy(new LegacyGuardPolicyInput());
 
 542             }).hasMessage("policy type for guard policy \"null\" unknown");
 
 544             assertThatThrownBy(() -> {
 
 545                 databaseProvider.deleteGuardPolicy("policy_id");
 
 546             }).hasMessage("no policy found for policy ID: policy_id");
 
 548             assertEquals(0, databaseProvider.getPdpGroups("name", "version").size());
 
 549             assertEquals(0, databaseProvider.getFilteredPdpGroups(PdpGroupFilter.builder().build()).size());
 
 551             assertNotNull(databaseProvider.createPdpGroups(new ArrayList<>()));
 
 552             assertNotNull(databaseProvider.updatePdpGroups(new ArrayList<>()));
 
 554             PdpGroup pdpGroup = new PdpGroup();
 
 555             pdpGroup.setName("group");
 
 556             pdpGroup.setVersion("1.2.3");
 
 557             pdpGroup.setPdpGroupState(PdpState.ACTIVE);
 
 558             pdpGroup.setPdpSubgroups(new ArrayList<>());
 
 559             List<PdpGroup> groupList = new ArrayList<>();
 
 560             groupList.add(pdpGroup);
 
 562             PdpSubGroup pdpSubGroup = new PdpSubGroup();
 
 563             pdpSubGroup.setPdpType("type");
 
 564             pdpSubGroup.setDesiredInstanceCount(123);
 
 565             pdpSubGroup.setSupportedPolicyTypes(new ArrayList<>());
 
 566             pdpSubGroup.getSupportedPolicyTypes().add(new ToscaPolicyTypeIdentifier("type", "7.8.9"));
 
 567             pdpGroup.getPdpSubgroups().add(pdpSubGroup);
 
 570             pdp.setInstanceId("type-0");
 
 571             pdp.setMessage("Hello");
 
 572             pdp.setPdpState(PdpState.ACTIVE);
 
 573             pdp.setHealthy(PdpHealthStatus.UNKNOWN);
 
 574             pdpSubGroup.setPdpInstances(new ArrayList<>());
 
 575             pdpSubGroup.getPdpInstances().add(pdp);
 
 577             assertEquals(123, databaseProvider.createPdpGroups(groupList).get(0).getPdpSubgroups().get(0)
 
 578                     .getDesiredInstanceCount());
 
 579             assertEquals(1, databaseProvider.getPdpGroups("group", "1.2.3").size());
 
 581             pdpSubGroup.setDesiredInstanceCount(234);
 
 582             databaseProvider.updatePdpSubGroup("group", "1.2.3", pdpSubGroup);
 
 583             assertEquals(234, databaseProvider.getPdpGroups("group", "1.2.3").get(0).getPdpSubgroups()
 
 584                     .get(0).getDesiredInstanceCount());
 
 586             assertEquals("Hello", databaseProvider.getPdpGroups("group", "1.2.3").get(0).getPdpSubgroups()
 
 587                     .get(0).getPdpInstances().get(0).getMessage());
 
 588             pdp.setMessage("Howdy");
 
 589             databaseProvider.updatePdp("group", "1.2.3", "type", pdp);
 
 590             assertEquals("Howdy", databaseProvider.getPdpGroups("group", "1.2.3").get(0).getPdpSubgroups()
 
 591                     .get(0).getPdpInstances().get(0).getMessage());
 
 593             assertThatThrownBy(() -> {
 
 594                 databaseProvider.deletePdpGroup("name", "version");
 
 595             }).hasMessage("delete of PDP group \"name:version\" failed, PDP group does not exist");
 
 597             assertEquals(pdpGroup.getName(), databaseProvider.deletePdpGroup("group", "1.2.3").getName());
 
 599             assertEquals(0, databaseProvider.getPdpStatistics(null, null).size());
 
 601             databaseProvider.updatePdpStatistics("group", "1.2.3", "type", "type-0", new PdpStatistics());
 
 602         } catch (Exception exc) {
 
 603             LOGGER.warn("test should not throw an exception", exc);
 
 604             fail("test should not throw an exception");