From: liamfallon Date: Thu, 3 Dec 2020 12:40:58 +0000 (+0000) Subject: Add generic methods to TOSCA providers and utils X-Git-Tag: 2.4.0~42^2 X-Git-Url: https://gerrit.onap.org/r/gitweb?a=commitdiff_plain;h=db2118d4a635f2d116d4a5cd6714730600e47b6c;p=policy%2Fmodels.git Add generic methods to TOSCA providers and utils Generic methods for getting ehtire service templates are added to the TOSCA providers in models-tosca. These are needed to read service tempaltes containing entities that are not policy related. Issue-ID: POLICY-2900 Change-Id: If4c646037f51f8a18b66257426accc330905acf9 Signed-off-by: liamfallon --- diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/provider/AuthorativeToscaProvider.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/provider/AuthorativeToscaProvider.java index c1d46bfc9..e8f99f742 100644 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/provider/AuthorativeToscaProvider.java +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/provider/AuthorativeToscaProvider.java @@ -56,6 +56,75 @@ public class AuthorativeToscaProvider { // TODO: In next release this locking mechanism should be removed and replaced with proper session handling private static final Object providerLockObject = "providerLockObject"; + /** + * Get a service template. + * + * @param dao the DAO to use to access the database + * @param name the name of the control loop to get. + * @param version the version of the control loop to get. + * @return the control loops found + * @throws PfModelException on errors getting control loops + */ + public ToscaServiceTemplate getServiceTemplate(@NonNull final PfDao dao, final String name, final String version) + throws PfModelException { + + synchronized (providerLockObject) { + LOGGER.debug("->getServiceTemplate: name={}, version={}", name, version); + + ToscaServiceTemplate gotServiceTemplate = new SimpleToscaProvider().getServiceTemplate(dao).toAuthorative(); + + LOGGER.debug("<-getServiceTemplate: name={}, version={}, gotServiceTemplate={}", name, version, + gotServiceTemplate); + return gotServiceTemplate; + } + } + + /** + * Create a service template. + * + * @param dao the DAO to use to access the database + * @param serviceTemplate the service template to be created. + * @return the TOSCA service template that was created + * @throws PfModelException on errors creating the service template + */ + public ToscaServiceTemplate createServiceTemplate(@NonNull final PfDao dao, + @NonNull final ToscaServiceTemplate serviceTemplate) throws PfModelException { + + synchronized (providerLockObject) { + LOGGER.debug("->createServiceTemplate: serviceTemplate={}", serviceTemplate); + + ToscaServiceTemplate createdServiceTemplate = new SimpleToscaProvider() + .appendToServiceTemplate(dao, new JpaToscaServiceTemplate(serviceTemplate)).toAuthorative(); + + LOGGER.debug("<-createServiceTemplate: createdServiceTemplate={}", createdServiceTemplate); + return createdServiceTemplate; + } + } + + /** + * Delete a service template. + * + * @param dao the DAO to use to access the database + * @param name the name of the service template to delete. + * @param version the version of the service template to delete. + * @return the TOSCA service template that was deleted + * @throws PfModelException on errors deleting the control loop + */ + public ToscaServiceTemplate deleteServiceTemplate(@NonNull final PfDao dao, @NonNull final String name, + @NonNull final String version) throws PfModelException { + + synchronized (providerLockObject) { + LOGGER.debug("->deleteServiceTemplate: name={}, version={}", name, version); + + ToscaServiceTemplate deletedServiceTemplate = + new SimpleToscaProvider().deleteServiceTemplate(dao).toAuthorative(); + + LOGGER.debug("<-deleteServiceTemplate: name={}, version={}, deletedServiceTemplate={}", name, version, + deletedServiceTemplate); + return deletedServiceTemplate; + } + } + /** * Get policy types. * @@ -186,11 +255,11 @@ public class AuthorativeToscaProvider { synchronized (providerLockObject) { LOGGER.debug("->createPolicyTypes: serviceTemplate={}", serviceTemplate); - ToscaServiceTemplate createdServiceTempalate = new SimpleToscaProvider() + ToscaServiceTemplate createdServiceTemplate = new SimpleToscaProvider() .createPolicyTypes(dao, new JpaToscaServiceTemplate(serviceTemplate)).toAuthorative(); - LOGGER.debug("<-createPolicyTypes: createdServiceTempalate={}", createdServiceTempalate); - return createdServiceTempalate; + LOGGER.debug("<-createPolicyTypes: createdServiceTemplate={}", createdServiceTemplate); + return createdServiceTemplate; } } @@ -206,13 +275,13 @@ public class AuthorativeToscaProvider { @NonNull final ToscaServiceTemplate serviceTemplate) throws PfModelException { synchronized (providerLockObject) { - LOGGER.debug("->updatePolicyTypes: serviceTempalate={}", serviceTemplate); + LOGGER.debug("->updatePolicyTypes: serviceTemplate={}", serviceTemplate); - ToscaServiceTemplate updatedServiceTempalate = new SimpleToscaProvider() + ToscaServiceTemplate updatedServiceTemplate = new SimpleToscaProvider() .updatePolicyTypes(dao, new JpaToscaServiceTemplate(serviceTemplate)).toAuthorative(); - LOGGER.debug("<-updatePolicyTypes: updatedServiceTempalate={}", updatedServiceTempalate); - return updatedServiceTempalate; + LOGGER.debug("<-updatePolicyTypes: updatedServiceTemplate={}", updatedServiceTemplate); + return updatedServiceTemplate; } } @@ -231,12 +300,12 @@ public class AuthorativeToscaProvider { synchronized (providerLockObject) { LOGGER.debug("->deletePolicyType: name={}, version={}", name, version); - ToscaServiceTemplate deletedServiceTempalate = + ToscaServiceTemplate deletedServiceTemplate = new SimpleToscaProvider().deletePolicyType(dao, new PfConceptKey(name, version)).toAuthorative(); - LOGGER.debug("<-deletePolicyType: name={}, version={}, deletedServiceTempalate={}", name, version, - deletedServiceTempalate); - return deletedServiceTempalate; + LOGGER.debug("<-deletePolicyType: name={}, version={}, deletedServiceTemplate={}", name, version, + deletedServiceTemplate); + return deletedServiceTemplate; } } @@ -255,12 +324,12 @@ public class AuthorativeToscaProvider { synchronized (providerLockObject) { LOGGER.debug("->getPolicies: name={}, version={}", name, version); - ToscaServiceTemplate gotServiceTempalate = + ToscaServiceTemplate gotServiceTemplate = new SimpleToscaProvider().getPolicies(dao, name, version).toAuthorative(); - LOGGER.debug("<-getPolicies: name={}, version={}, gotServiceTempalate={}", name, version, - gotServiceTempalate); - return gotServiceTempalate; + LOGGER.debug("<-getPolicies: name={}, version={}, gotServiceTemplate={}", name, version, + gotServiceTemplate); + return gotServiceTemplate; } } @@ -288,7 +357,7 @@ public class AuthorativeToscaProvider { return handlePfModelRuntimeException(pfme); } - LOGGER.debug("<-getPolicyList: name={}, version={}, policyTypeList={}", name, version, policyList); + LOGGER.debug("<-getPolicyList: name={}, version={}, policyList={}", name, version, policyList); return policyList; } } @@ -370,13 +439,13 @@ public class AuthorativeToscaProvider { @NonNull final ToscaServiceTemplate serviceTemplate) throws PfModelException { synchronized (providerLockObject) { - LOGGER.debug("->createPolicies: serviceTempalate={}", serviceTemplate); + LOGGER.debug("->createPolicies: serviceTemplate={}", serviceTemplate); - ToscaServiceTemplate createdServiceTempalate = new SimpleToscaProvider() + ToscaServiceTemplate createdServiceTemplate = new SimpleToscaProvider() .createPolicies(dao, new JpaToscaServiceTemplate(serviceTemplate)).toAuthorative(); - LOGGER.debug("<-createPolicies: createdServiceTempalate={}", createdServiceTempalate); - return createdServiceTempalate; + LOGGER.debug("<-createPolicies: createdServiceTemplate={}", createdServiceTemplate); + return createdServiceTemplate; } } @@ -392,13 +461,13 @@ public class AuthorativeToscaProvider { @NonNull final ToscaServiceTemplate serviceTemplate) throws PfModelException { synchronized (providerLockObject) { - LOGGER.debug("->updatePolicies: serviceTempalate={}", serviceTemplate); + LOGGER.debug("->updatePolicies: serviceTemplate={}", serviceTemplate); - ToscaServiceTemplate updatedServiceTempalate = new SimpleToscaProvider() + ToscaServiceTemplate updatedServiceTemplate = new SimpleToscaProvider() .updatePolicies(dao, new JpaToscaServiceTemplate(serviceTemplate)).toAuthorative(); - LOGGER.debug("<-updatePolicies: updatedServiceTempalate={}", updatedServiceTempalate); - return updatedServiceTempalate; + LOGGER.debug("<-updatePolicies: updatedServiceTemplate={}", updatedServiceTemplate); + return updatedServiceTemplate; } } @@ -408,7 +477,7 @@ public class AuthorativeToscaProvider { * @param dao the DAO to use to access the database * @param name the name of the policy to delete. * @param version the version of the policy to delete. - * @return the TOSCA service template containing the policy that weas deleted + * @return the TOSCA service template containing the policy that was deleted * @throws PfModelException on errors deleting policies */ public ToscaServiceTemplate deletePolicy(@NonNull final PfDao dao, @NonNull final String name, @@ -417,12 +486,12 @@ public class AuthorativeToscaProvider { synchronized (providerLockObject) { LOGGER.debug("->deletePolicy: name={}, version={}", name, version); - ToscaServiceTemplate deletedServiceTempalate = + ToscaServiceTemplate deletedServiceTemplate = new SimpleToscaProvider().deletePolicy(dao, new PfConceptKey(name, version)).toAuthorative(); - LOGGER.debug("<-deletePolicy: name={}, version={}, deletedServiceTempalate={}", name, version, - deletedServiceTempalate); - return deletedServiceTempalate; + LOGGER.debug("<-deletePolicy: name={}, version={}, deletedServiceTemplate={}", name, version, + deletedServiceTemplate); + return deletedServiceTemplate; } } diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/provider/SimpleToscaProvider.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/provider/SimpleToscaProvider.java index 8ac9e805d..459a32934 100644 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/provider/SimpleToscaProvider.java +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/provider/SimpleToscaProvider.java @@ -118,6 +118,24 @@ public class SimpleToscaProvider { return serviceTemplateToWrite; } + /** + * Delete service template. + * + * @param dao the DAO to use to access the database + * @return the TOSCA service template that was deleted + * @throws PfModelException on errors deleting the service template + */ + public JpaToscaServiceTemplate deleteServiceTemplate(@NonNull final PfDao dao) throws PfModelException { + LOGGER.debug("->deleteServiceTemplate"); + + JpaToscaServiceTemplate serviceTemplate = getServiceTemplate(dao); + + dao.delete(serviceTemplate); + + LOGGER.debug("->deleteServiceTemplate: serviceTemplate={}", serviceTemplate); + return serviceTemplate; + } + /** * Get data types. * diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/utils/ToscaUtils.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/utils/ToscaUtils.java index 6cf6cc54d..70c5027d7 100644 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/utils/ToscaUtils.java +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/utils/ToscaUtils.java @@ -58,6 +58,7 @@ public final class ToscaUtils { new PfConceptKey("null", PfKey.NULL_KEY_VERSION), new PfConceptKey("list", PfKey.NULL_KEY_VERSION), new PfConceptKey("map", PfKey.NULL_KEY_VERSION), + new PfConceptKey("object", PfKey.NULL_KEY_VERSION), new PfConceptKey("scalar-unit.size", PfKey.NULL_KEY_VERSION), new PfConceptKey("scalar-unit.time", PfKey.NULL_KEY_VERSION), new PfConceptKey("scalar-unit.frequency", PfKey.NULL_KEY_VERSION), diff --git a/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/provider/AuthorativeToscaProviderGenericTest.java b/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/provider/AuthorativeToscaProviderGenericTest.java new file mode 100644 index 000000000..53e8311ee --- /dev/null +++ b/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/provider/AuthorativeToscaProviderGenericTest.java @@ -0,0 +1,202 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2020 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.models.tosca.authorative.provider; + +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +import com.google.gson.GsonBuilder; +import java.util.List; +import java.util.Properties; +import org.apache.commons.lang3.ObjectUtils; +import org.eclipse.persistence.config.PersistenceUnitProperties; +import org.junit.After; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; +import org.onap.policy.common.utils.coder.StandardCoder; +import org.onap.policy.common.utils.resources.ResourceUtils; +import org.onap.policy.models.base.PfConceptKey; +import org.onap.policy.models.dao.DaoParameters; +import org.onap.policy.models.dao.PfDao; +import org.onap.policy.models.dao.PfDaoFactory; +import org.onap.policy.models.dao.impl.DefaultPfDao; +import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyType; +import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate; +import org.yaml.snakeyaml.Yaml; + +/** + * Test of the {@link AuthorativeToscaProvider} class. + * + * @author Liam Fallon (liam.fallon@est.tech) + */ +public class AuthorativeToscaProviderGenericTest { + private static final String POLICY_NO_VERSION_VERSION1 = "onap.policies.NoVersion:0.0.1"; + private static final String POLICY_NO_VERSION = "onap.policies.NoVersion"; + private static final String DAO_IS_NULL = "^dao is marked .*on.*ull but is null$"; + private static final String VERSION_001 = "0.0.1"; + private static String yamlAsJsonString; + private PfDao pfDao; + private StandardCoder standardCoder; + + /** + * Read the policy type definition. + * + * @throws Exception on errors + */ + @BeforeClass + public static void readPolicyDefinition() { + String yamlString = ResourceUtils.getResourceAsString("src/test/resources/onap.policies.NoVersion.yaml"); + + Object yamlObject = new Yaml().load(yamlString); + yamlAsJsonString = new GsonBuilder().setPrettyPrinting().create().toJson(yamlObject); + } + + /** + * Set up the DAO towards the database. + * + * @throws Exception on database errors + */ + @Before + public void setupDao() throws Exception { + final DaoParameters daoParameters = new DaoParameters(); + daoParameters.setPluginClass(DefaultPfDao.class.getName()); + + daoParameters.setPersistenceUnit("ToscaConceptTest"); + + Properties jdbcProperties = new Properties(); + jdbcProperties.setProperty(PersistenceUnitProperties.JDBC_USER, "policy"); + jdbcProperties.setProperty(PersistenceUnitProperties.JDBC_PASSWORD, "P01icY"); + + // H2, use "org.mariadb.jdbc.Driver" and "jdbc:mariadb://localhost:3306/policy" for locally installed MariaDB + jdbcProperties.setProperty(PersistenceUnitProperties.JDBC_DRIVER, "org.h2.Driver"); + jdbcProperties.setProperty(PersistenceUnitProperties.JDBC_URL, "jdbc:h2:mem:testdb"); + + daoParameters.setJdbcProperties(jdbcProperties); + + pfDao = new PfDaoFactory().createPfDao(daoParameters); + pfDao.init(daoParameters); + } + + /** + * Set up GSON. + */ + @Before + public void setupGson() { + standardCoder = new StandardCoder(); + } + + @After + public void teardown() { + pfDao.close(); + } + + @Test + public void testCreateGetDelete() throws Exception { + assertThatThrownBy(() -> { + new AuthorativeToscaProvider().getServiceTemplate(null, null, null); + }).hasMessageMatching(DAO_IS_NULL); + + ToscaServiceTemplate toscaServiceTemplate = standardCoder.decode(yamlAsJsonString, ToscaServiceTemplate.class); + + assertNotNull(toscaServiceTemplate); + ToscaServiceTemplate createdServiceTemplate = + new AuthorativeToscaProvider().createServiceTemplate(pfDao, toscaServiceTemplate); + + PfConceptKey policyTypeKey = new PfConceptKey(POLICY_NO_VERSION_VERSION1); + + ToscaPolicyType beforePolicyType = toscaServiceTemplate.getPolicyTypes().get(policyTypeKey.getName()); + ToscaPolicyType createdPolicyType = createdServiceTemplate.getPolicyTypes().get(policyTypeKey.getName()); + assertEquals(true, beforePolicyType.getName().equals(createdPolicyType.getName())); + assertEquals(0, ObjectUtils.compare(beforePolicyType.getDescription(), createdPolicyType.getDescription())); + + ToscaServiceTemplate gotServiceTemplate = new AuthorativeToscaProvider().getServiceTemplate(pfDao, null, null); + + ToscaPolicyType gotPolicyType = gotServiceTemplate.getPolicyTypes().get(policyTypeKey.getName()); + assertEquals(true, beforePolicyType.getName().equals(gotPolicyType.getName())); + assertEquals(0, ObjectUtils.compare(beforePolicyType.getDescription(), createdPolicyType.getDescription())); + + List gotPolicyTypeList = + new AuthorativeToscaProvider().getPolicyTypeList(pfDao, POLICY_NO_VERSION, VERSION_001); + assertEquals(2, gotPolicyTypeList.size()); + assertEquals(true, beforePolicyType.getName().equals(gotPolicyType.getName())); + + gotPolicyTypeList = new AuthorativeToscaProvider().getPolicyTypeList(pfDao, POLICY_NO_VERSION, null); + assertEquals(2, gotPolicyTypeList.size()); + assertEquals(true, beforePolicyType.getName().equals(gotPolicyType.getName())); + + gotPolicyTypeList = new AuthorativeToscaProvider().getPolicyTypeList(pfDao, null, null); + assertEquals(2, gotPolicyTypeList.size()); + assertEquals(true, beforePolicyType.getName().equals(gotPolicyType.getName())); + + gotPolicyTypeList = new AuthorativeToscaProvider().getPolicyTypeList(pfDao, null, VERSION_001); + assertEquals(2, gotPolicyTypeList.size()); + assertEquals(true, beforePolicyType.getName().equals(gotPolicyType.getName())); + + assertThatThrownBy( + () -> new AuthorativeToscaProvider().getPolicyTypeList(new DefaultPfDao(), POLICY_NO_VERSION, VERSION_001)) + .hasMessageContaining("Policy Framework DAO has not been initialized"); + + assertTrue(new AuthorativeToscaProvider().getPolicyTypeList(pfDao, "i.dont.Exist", VERSION_001).isEmpty()); + + ToscaServiceTemplate deletedServiceTemplate = + new AuthorativeToscaProvider().deleteServiceTemplate(pfDao, "Dummy", "0.0.1"); + assertEquals(2, deletedServiceTemplate.getPolicyTypes().size()); + } + + @Test + public void testNullParameters() throws Exception { + assertThatThrownBy(() -> new AuthorativeToscaProvider().getServiceTemplate(null, null, null)) + .hasMessageMatching("^dao is marked .*on.*ull but is null$"); + + assertThatThrownBy(() -> new AuthorativeToscaProvider().createServiceTemplate(null, null)) + .hasMessageMatching("^dao is marked .*on.*ull but is null$"); + + assertThatThrownBy(() -> new AuthorativeToscaProvider().createServiceTemplate(pfDao, null)) + .hasMessageMatching("^serviceTemplate is marked .*on.*ull but is null$"); + + assertThatThrownBy(() -> new AuthorativeToscaProvider().createServiceTemplate(null, new ToscaServiceTemplate())) + .hasMessageMatching("^dao is marked .*on.*ull but is null$"); + + assertThatThrownBy(() -> new AuthorativeToscaProvider().deleteServiceTemplate(null, null, null)) + .hasMessageMatching("^dao is marked .*on.*ull but is null$"); + + assertThatThrownBy(() -> new AuthorativeToscaProvider().deleteServiceTemplate(null, null, "0.0.1")) + .hasMessageMatching("^dao is marked .*on.*ull but is null$"); + + assertThatThrownBy(() -> new AuthorativeToscaProvider().deleteServiceTemplate(null, "Dummy", null)) + .hasMessageMatching("^dao is marked .*on.*ull but is null$"); + + assertThatThrownBy(() -> new AuthorativeToscaProvider().deleteServiceTemplate(null, "Dummy", "0.0.1")) + .hasMessageMatching("^dao is marked .*on.*ull but is null$"); + + assertThatThrownBy(() -> new AuthorativeToscaProvider().deleteServiceTemplate(pfDao, null, null)) + .hasMessageMatching("^name is marked .*on.*ull but is null$"); + + assertThatThrownBy(() -> new AuthorativeToscaProvider().deleteServiceTemplate(pfDao, null, "0.0.1")) + .hasMessageMatching("^name is marked .*on.*ull but is null$"); + + assertThatThrownBy(() -> new AuthorativeToscaProvider().deleteServiceTemplate(pfDao, "Dummy", null)) + .hasMessageMatching("^version is marked .*on.*ull but is null$"); + } +} diff --git a/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/provider/AuthorativeToscaProviderPolicyTypeTest.java b/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/provider/AuthorativeToscaProviderPolicyTypeTest.java index 66ed7007a..0e1164598 100644 --- a/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/provider/AuthorativeToscaProviderPolicyTypeTest.java +++ b/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/provider/AuthorativeToscaProviderPolicyTypeTest.java @@ -418,4 +418,10 @@ public class AuthorativeToscaProviderPolicyTypeTest { new AuthorativeToscaProvider().createPolicyTypes(pfDao, testServiceTemplate); }).hasMessage("An incoming list of concepts must have at least one entry"); } + + @Test + public void testNullParameters() throws Exception { + assertThatThrownBy(() -> new AuthorativeToscaProvider().getPolicyTypeList(null, null, null)) + .hasMessageMatching("^dao is marked .*on.*ull but is null$"); + } } diff --git a/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/provider/SimpleToscaProviderTest.java b/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/provider/SimpleToscaProviderTest.java index c597cd4f6..1e18f12d4 100644 --- a/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/provider/SimpleToscaProviderTest.java +++ b/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/provider/SimpleToscaProviderTest.java @@ -840,6 +840,43 @@ public class SimpleToscaProviderTest { }).hasMessageMatching("^policyKey is marked .*on.*ull but is null$"); } + @Test + public void testDeleteServiceTemplate() throws PfModelException { + assertThatThrownBy(() -> { + new SimpleToscaProvider().deleteServiceTemplate(null); + }).hasMessageMatching("^dao is marked .*on.*ull but is null$"); + + assertThatThrownBy(() -> { + new SimpleToscaProvider().deleteServiceTemplate(pfDao); + }).hasMessage("service template not found in database"); + + JpaToscaServiceTemplate serviceTemplate = new JpaToscaServiceTemplate(); + + PfConceptKey dataType0Key = new PfConceptKey("DataType0", "0.0.1"); + JpaToscaDataType dataType0 = new JpaToscaDataType(); + dataType0.setKey(dataType0Key); + serviceTemplate.setDataTypes(new JpaToscaDataTypes()); + serviceTemplate.getDataTypes().getConceptMap().put(dataType0Key, dataType0); + + JpaToscaServiceTemplate createdServiceTemplate = + new SimpleToscaProvider().createDataTypes(pfDao, serviceTemplate); + + assertEquals(1, createdServiceTemplate.getDataTypes().getConceptMap().size()); + assertEquals(dataType0, createdServiceTemplate.getDataTypes().get(dataType0Key)); + assertEquals(null, createdServiceTemplate.getDataTypes().get(dataType0Key).getDescription()); + + JpaToscaServiceTemplate deletedServiceTemplate = new SimpleToscaProvider().deleteServiceTemplate(pfDao); + + assertEquals(dataType0, deletedServiceTemplate.getDataTypes().get(dataType0Key)); + } + + @Test + public void testNullParameters() { + assertThatThrownBy(() -> { + new SimpleToscaProvider().getCascadedDataTypes(null, null, null); + }).hasMessageMatching("^dbServiceTemplate is marked .*on.*ull but is null$"); + } + private void createPolicyTypes() throws CoderException, PfModelException { Object yamlObject = new Yaml() .load(ResourceUtils.getResourceAsString("policytypes/onap.policies.monitoring.tcagen2.yaml"));