From a41acc89a8c7177014d1377c4457cd402ed7ee93 Mon Sep 17 00:00:00 2001 From: FrancescoFioraEst Date: Thu, 11 Nov 2021 14:57:23 +0000 Subject: Add support transaction in CL and ServiceTemplate Providers Add support transaction in ControlLoopProvider and ServiceTemplateProvider Issue-ID: POLICY-3798 Change-Id: I0ab79f28231e329e06c16e01427775077b3ac994 Signed-off-by: FrancescoFioraEst --- .../provider/ControlLoopProviderTest.java | 254 ++++++++++++++------- .../provider/ServiceTemplateProviderTest.java | 115 +++++----- 2 files changed, 229 insertions(+), 140 deletions(-) (limited to 'models/src/test') diff --git a/models/src/test/java/org/onap/policy/clamp/controlloop/models/controlloop/persistence/provider/ControlLoopProviderTest.java b/models/src/test/java/org/onap/policy/clamp/controlloop/models/controlloop/persistence/provider/ControlLoopProviderTest.java index 9805edb86..2b472c835 100644 --- a/models/src/test/java/org/onap/policy/clamp/controlloop/models/controlloop/persistence/provider/ControlLoopProviderTest.java +++ b/models/src/test/java/org/onap/policy/clamp/controlloop/models/controlloop/persistence/provider/ControlLoopProviderTest.java @@ -24,174 +24,255 @@ import static org.assertj.core.api.Assertions.assertThat; 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.assertNull; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; import java.util.List; -import java.util.concurrent.atomic.AtomicInteger; -import org.junit.jupiter.api.AfterEach; +import java.util.Optional; +import javax.persistence.EntityNotFoundException; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoop; -import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoopOrderedState; import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoops; +import org.onap.policy.clamp.controlloop.models.controlloop.persistence.concepts.JpaControlLoop; +import org.onap.policy.clamp.controlloop.models.controlloop.persistence.repository.ControlLoopRepository; +import org.onap.policy.clamp.controlloop.models.controlloop.persistence.repository.ToscaNodeTemplateRepository; +import org.onap.policy.clamp.controlloop.models.controlloop.persistence.repository.ToscaNodeTemplatesRepository; import org.onap.policy.common.utils.coder.Coder; import org.onap.policy.common.utils.coder.StandardCoder; import org.onap.policy.common.utils.coder.YamlJsonTranslator; import org.onap.policy.common.utils.resources.ResourceUtils; -import org.onap.policy.models.provider.PolicyModelsProviderParameters; +import org.onap.policy.models.base.PfConceptKey; import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier; import org.onap.policy.models.tosca.authorative.concepts.ToscaNodeTemplate; import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate; import org.onap.policy.models.tosca.authorative.concepts.ToscaTypedEntityFilter; +import org.onap.policy.models.tosca.simple.concepts.JpaToscaNodeTemplate; class ControlLoopProviderTest { private static final String LIST_IS_NULL = "controlLoops is marked .*ull but is null"; + private static final String OBJECT_IS_NULL = "controlLoop is marked non-null but is null"; + + private static final String ID_NAME = "PMSHInstance1"; + private static final String ID_VERSION = "1.0.1"; + private static final String ID_NAME_NOT_EXTST = "not_exist"; + private static final String ID_NAME_NOT_VALID = "not_valid"; + private static final Coder CODER = new StandardCoder(); private static final String CONTROL_LOOP_JSON = "src/test/resources/providers/TestControlLoops.json"; - private static final String UPDATE_CL_JSON = "src/test/resources/providers/UpdateControlLoops.json"; private static final String TOSCA_TEMPLATE_YAML = "examples/controlloop/PMSubscriptionHandling.yaml"; private static final YamlJsonTranslator yamlTranslator = new YamlJsonTranslator(); - private static AtomicInteger dbNameCounter = new AtomicInteger(); - private PolicyModelsProviderParameters parameters; - private ControlLoopProvider controlLoopProvider; private ControlLoops inputControlLoops; - private ControlLoops updateControlLoops; + private List inputControlLoopsJpa; private String originalJson = ResourceUtils.getResourceAsString(CONTROL_LOOP_JSON); - private String updateClJson = ResourceUtils.getResourceAsString(UPDATE_CL_JSON); @BeforeEach void beforeSetupDao() throws Exception { - - parameters = new PolicyModelsProviderParameters(); - parameters.setDatabaseDriver("org.h2.Driver"); - parameters.setName("PolicyProviderParameterGroup"); - parameters.setImplementation("org.onap.policy.models.provider.impl.DatabasePolicyModelsProviderImpl"); - parameters.setDatabaseUrl("jdbc:h2:mem:controlLoopProviderTestDb" + dbNameCounter.getAndDecrement()); - parameters.setDatabaseUser("policy"); - parameters.setDatabasePassword("P01icY"); - parameters.setPersistenceUnit("ToscaConceptTest"); - - controlLoopProvider = new ControlLoopProvider(parameters); - inputControlLoops = CODER.decode(originalJson, ControlLoops.class); - updateControlLoops = CODER.decode(updateClJson, ControlLoops.class); - } - - @AfterEach - void teardown() { - controlLoopProvider.close(); + inputControlLoopsJpa = ProviderUtils.getJpaAndValidateList(inputControlLoops.getControlLoopList(), + JpaControlLoop::new, "control loops"); } @Test - void testControlLoopCreate() throws Exception { + void testControlLoopsSave() throws Exception { + var controlLoopRepository = mock(ControlLoopRepository.class); + var controlLoopProvider = new ControlLoopProvider(controlLoopRepository, + mock(ToscaNodeTemplateRepository.class), mock(ToscaNodeTemplatesRepository.class)); + assertThatThrownBy(() -> { - controlLoopProvider.createControlLoops(null); + controlLoopProvider.saveControlLoops(null); }).hasMessageMatching(LIST_IS_NULL); + when(controlLoopRepository.saveAll(inputControlLoopsJpa)).thenReturn(inputControlLoopsJpa); + var createdControlLoops = new ControlLoops(); createdControlLoops - .setControlLoopList(controlLoopProvider.createControlLoops(inputControlLoops.getControlLoopList())); + .setControlLoopList(controlLoopProvider.saveControlLoops(inputControlLoops.getControlLoopList())); assertEquals(inputControlLoops, createdControlLoops); + + when(controlLoopRepository.saveAll(any())).thenThrow(IllegalArgumentException.class); + + assertThatThrownBy(() -> { + controlLoopProvider.saveControlLoops(inputControlLoops.getControlLoopList()); + }).hasMessageMatching("Error in save ControlLoops"); } @Test - void testGetControlLoops() throws Exception { + void testControlLoopSave() throws Exception { + var controlLoopRepository = mock(ControlLoopRepository.class); + var controlLoopProvider = new ControlLoopProvider(controlLoopRepository, + mock(ToscaNodeTemplateRepository.class), mock(ToscaNodeTemplatesRepository.class)); - List getResponse; + assertThatThrownBy(() -> { + controlLoopProvider.saveControlLoop(null); + }).hasMessageMatching(OBJECT_IS_NULL); + + when(controlLoopRepository.save(inputControlLoopsJpa.get(0))).thenReturn(inputControlLoopsJpa.get(0)); + + var createdControlLoop = controlLoopProvider.saveControlLoop(inputControlLoops.getControlLoopList().get(0)); + + assertEquals(inputControlLoops.getControlLoopList().get(0), createdControlLoop); + + when(controlLoopRepository.save(any())).thenThrow(IllegalArgumentException.class); + + assertThatThrownBy(() -> { + controlLoopProvider.saveControlLoop(inputControlLoops.getControlLoopList().get(0)); + }).hasMessageMatching("Error in save controlLoop"); + } + + @Test + void testGetControlLoops() throws Exception { + var controlLoopRepository = mock(ControlLoopRepository.class); + var controlLoopProvider = new ControlLoopProvider(controlLoopRepository, + mock(ToscaNodeTemplateRepository.class), mock(ToscaNodeTemplatesRepository.class)); // Return empty list when no data present in db - getResponse = controlLoopProvider.getControlLoops(null, null); + List getResponse = controlLoopProvider.getControlLoops(); assertThat(getResponse).isEmpty(); - controlLoopProvider.createControlLoops(inputControlLoops.getControlLoopList()); - var name = inputControlLoops.getControlLoopList().get(0).getName(); - var version = inputControlLoops.getControlLoopList().get(0).getVersion(); + controlLoopProvider.saveControlLoops(inputControlLoops.getControlLoopList()); + + var controlLoop0 = inputControlLoops.getControlLoopList().get(1); + var name = controlLoop0.getName(); + var version = controlLoop0.getVersion(); + var controlLoop1 = inputControlLoops.getControlLoopList().get(1); + + when(controlLoopRepository.getFiltered(eq(JpaControlLoop.class), any(), any())) + .thenReturn(List.of(new JpaControlLoop(controlLoop0), new JpaControlLoop(controlLoop1))); + when(controlLoopRepository.findById(controlLoop0.getKey().asIdentifier().asConceptKey())) + .thenReturn(Optional.of(new JpaControlLoop(controlLoop0))); + when(controlLoopRepository.getById(controlLoop0.getKey().asIdentifier().asConceptKey())) + .thenReturn(new JpaControlLoop(controlLoop0)); + when(controlLoopRepository.getFiltered(JpaControlLoop.class, name, version)) + .thenReturn(List.of(new JpaControlLoop(controlLoop0))); + when(controlLoopRepository.findById(controlLoop1.getKey().asIdentifier().asConceptKey())) + .thenReturn(Optional.of(new JpaControlLoop(controlLoop1))); + assertEquals(1, controlLoopProvider.getControlLoops(name, version).size()); - var cl = new ControlLoop(); - cl = controlLoopProvider.getControlLoop(new ToscaConceptIdentifier("PMSHInstance1", "1.0.1")); + var cl = controlLoopProvider.findControlLoop(new ToscaConceptIdentifier(ID_NAME, ID_VERSION)).get(); + assertEquals(inputControlLoops.getControlLoopList().get(1), cl); + + cl = controlLoopProvider.getControlLoop(new ToscaConceptIdentifier(ID_NAME, ID_VERSION)); assertEquals(inputControlLoops.getControlLoopList().get(1), cl); - assertNull(controlLoopProvider.getControlLoop(new ToscaConceptIdentifier("invalid_name", "1.0.1"))); + when(controlLoopRepository.getById(any())).thenThrow(EntityNotFoundException.class); assertThatThrownBy(() -> { - controlLoopProvider.getFilteredControlLoops(null); - }).hasMessageMatching("filter is marked .*ull but is null"); + controlLoopProvider.getControlLoop(new ToscaConceptIdentifier(ID_NAME_NOT_EXTST, ID_VERSION)); + }).hasMessageMatching("ControlLoop not found"); - final ToscaTypedEntityFilter filter = ToscaTypedEntityFilter.builder() - .type("org.onap.domain.pmsh.PMSHControlLoopDefinition").build(); - assertEquals(2, controlLoopProvider.getFilteredControlLoops(filter).size()); - } + cl = controlLoopProvider.findControlLoop(ID_NAME, ID_VERSION).get(); + assertEquals(inputControlLoops.getControlLoopList().get(1), cl); - @Test - void testUpdateControlLoops() throws Exception { - assertThatThrownBy(() -> { - controlLoopProvider.updateControlLoops(null); - }).hasMessageMatching("controlLoops is marked .*ull but is null"); + assertThat(controlLoopProvider.findControlLoop(new ToscaConceptIdentifier(ID_NAME_NOT_EXTST, ID_VERSION))) + .isEmpty(); - var existingControlLoops = new ControlLoops(); - existingControlLoops - .setControlLoopList(controlLoopProvider.createControlLoops(inputControlLoops.getControlLoopList())); - var updateResponse = new ControlLoop(); - updateResponse = controlLoopProvider.updateControlLoop(updateControlLoops.getControlLoopList().get(0)); + when(controlLoopRepository.findById(any())).thenThrow(IllegalArgumentException.class); - assertEquals(ControlLoopOrderedState.RUNNING, updateResponse.getOrderedState()); + assertThatThrownBy(() -> { + controlLoopProvider.findControlLoop(ID_NAME_NOT_VALID, ID_VERSION); + }).hasMessageMatching("Not valid parameter"); } @Test void testDeleteControlLoop() throws Exception { + var controlLoopRepository = mock(ControlLoopRepository.class); + var controlLoopProvider = new ControlLoopProvider(controlLoopRepository, + mock(ToscaNodeTemplateRepository.class), mock(ToscaNodeTemplatesRepository.class)); + assertThatThrownBy(() -> { - controlLoopProvider.deleteControlLoop("Invalid_name", "1.0.1"); + controlLoopProvider.deleteControlLoop(ID_NAME_NOT_EXTST, ID_VERSION); }).hasMessageMatching(".*.failed, control loop does not exist"); - ControlLoop deletedCl; - List clList = controlLoopProvider.createControlLoops(inputControlLoops.getControlLoopList()); - var name = inputControlLoops.getControlLoopList().get(0).getName(); - var version = inputControlLoops.getControlLoopList().get(0).getVersion(); + var controlLoop = inputControlLoops.getControlLoopList().get(0); + var name = controlLoop.getName(); + var version = controlLoop.getVersion(); - deletedCl = controlLoopProvider.deleteControlLoop(name, version); - assertEquals(clList.get(0), deletedCl); + when(controlLoopRepository.findById(new PfConceptKey(name, version))) + .thenReturn(Optional.of(inputControlLoopsJpa.get(0))); + + ControlLoop deletedCl = controlLoopProvider.deleteControlLoop(name, version); + assertEquals(controlLoop, deletedCl); } @Test void testDeleteAllInstanceProperties() throws Exception { + var controlLoopProvider = new ControlLoopProvider(mock(ControlLoopRepository.class), + mock(ToscaNodeTemplateRepository.class), mock(ToscaNodeTemplatesRepository.class)); var toscaServiceTemplate = testControlLoopRead(); - controlLoopProvider.deleteInstanceProperties( - controlLoopProvider.saveInstanceProperties(toscaServiceTemplate), + controlLoopProvider.deleteInstanceProperties(controlLoopProvider.saveInstanceProperties(toscaServiceTemplate), controlLoopProvider.getNodeTemplates(null, null)); - assertThat(controlLoopProvider.getControlLoops(null, null)).isEmpty(); + assertThat(controlLoopProvider.getControlLoops()).isEmpty(); } @Test void testSaveAndDeleteInstanceProperties() throws Exception { + var toscaNodeTemplatesRepository = mock(ToscaNodeTemplatesRepository.class); + var toscaNodeTemplateRepository = mock(ToscaNodeTemplateRepository.class); + var controlLoopProvider = new ControlLoopProvider(mock(ControlLoopRepository.class), + toscaNodeTemplateRepository, toscaNodeTemplatesRepository); var toscaServiceTest = testControlLoopRead(); - controlLoopProvider.createControlLoops(inputControlLoops.getControlLoopList()); controlLoopProvider.saveInstanceProperties(toscaServiceTest); - assertThat(controlLoopProvider.getNodeTemplates( - "org.onap.policy.controlloop.PolicyControlLoopParticipant", - "2.3.1")).isNotEmpty(); - - controlLoopProvider.deleteInstanceProperties( - controlLoopProvider.saveInstanceProperties(toscaServiceTest), - controlLoopProvider.getNodeTemplates( - "org.onap.policy.controlloop.PolicyControlLoopParticipant", - "2.3.1")); - - assertThat(controlLoopProvider.getNodeTemplates( - "org.onap.policy.controlloop.PolicyControlLoopParticipant", - "2.3.1")).isEmpty(); + verify(toscaNodeTemplatesRepository).save(any()); + + var name = "org.onap.policy.controlloop.PolicyControlLoopParticipant"; + var version = "2.3.1"; + var elem = toscaServiceTest.getToscaTopologyTemplate().getNodeTemplates().get(name); + when(toscaNodeTemplateRepository.getFiltered(JpaToscaNodeTemplate.class, name, version)) + .thenReturn(List.of(new JpaToscaNodeTemplate(elem))); + + var filtered = controlLoopProvider.getNodeTemplates(name, version); + verify(toscaNodeTemplateRepository).getFiltered(JpaToscaNodeTemplate.class, name, version); + + controlLoopProvider.deleteInstanceProperties(controlLoopProvider.saveInstanceProperties(toscaServiceTest), + filtered); + + verify(toscaNodeTemplateRepository).delete(any()); } @Test void testGetNodeTemplates() throws Exception { - //Getting all nodes - List listNodes = controlLoopProvider.getNodeTemplates(null, null); + var toscaNodeTemplateRepository = mock(ToscaNodeTemplateRepository.class); + var controlLoopProvider = new ControlLoopProvider(mock(ControlLoopRepository.class), + toscaNodeTemplateRepository, mock(ToscaNodeTemplatesRepository.class)); + + var toscaNodeTemplate0 = new JpaToscaNodeTemplate(new PfConceptKey(ID_NAME, ID_VERSION)); + var toscaNodeTemplate1 = new JpaToscaNodeTemplate(new PfConceptKey("PMSHInstance2", ID_VERSION)); + + when(toscaNodeTemplateRepository.getFiltered(JpaToscaNodeTemplate.class, null, null)) + .thenReturn(List.of(toscaNodeTemplate0, toscaNodeTemplate1)); + when(toscaNodeTemplateRepository.findAll()).thenReturn(List.of(toscaNodeTemplate0, toscaNodeTemplate1)); + when(toscaNodeTemplateRepository.getFiltered(JpaToscaNodeTemplate.class, ID_NAME, ID_VERSION)) + .thenReturn(List.of(toscaNodeTemplate0)); + + // Getting all nodes + var listNodes = controlLoopProvider.getNodeTemplates(null, null); + assertNotNull(listNodes); + assertThat(listNodes).hasSize(2); + + listNodes = controlLoopProvider.getNodeTemplates(ID_NAME, ID_VERSION); + assertNotNull(listNodes); + assertThat(listNodes).hasSize(1); + + listNodes = controlLoopProvider.getAllNodeTemplates(); + assertNotNull(listNodes); + assertThat(listNodes).hasSize(2); + + var nodeTemplateFilter = + ToscaTypedEntityFilter.builder().name(ID_NAME).version(ID_VERSION).build(); + + listNodes = controlLoopProvider.getFilteredNodeTemplates(nodeTemplateFilter); assertNotNull(listNodes); + assertThat(listNodes).hasSize(1); assertThatThrownBy(() -> { controlLoopProvider.getFilteredNodeTemplates(null); @@ -203,8 +284,7 @@ class ControlLoopProviderTest { } private static ToscaServiceTemplate testControlLoopYamlSerialization(String controlLoopFilePath) { - String controlLoopString = ResourceUtils.getResourceAsString(controlLoopFilePath); - ToscaServiceTemplate serviceTemplate = yamlTranslator.fromYaml(controlLoopString, ToscaServiceTemplate.class); - return serviceTemplate; + var controlLoopString = ResourceUtils.getResourceAsString(controlLoopFilePath); + return yamlTranslator.fromYaml(controlLoopString, ToscaServiceTemplate.class); } } diff --git a/models/src/test/java/org/onap/policy/clamp/controlloop/models/controlloop/persistence/provider/ServiceTemplateProviderTest.java b/models/src/test/java/org/onap/policy/clamp/controlloop/models/controlloop/persistence/provider/ServiceTemplateProviderTest.java index 7f2731abf..523a4fb88 100644 --- a/models/src/test/java/org/onap/policy/clamp/controlloop/models/controlloop/persistence/provider/ServiceTemplateProviderTest.java +++ b/models/src/test/java/org/onap/policy/clamp/controlloop/models/controlloop/persistence/provider/ServiceTemplateProviderTest.java @@ -29,13 +29,17 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import java.util.List; +import java.util.Optional; +import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; +import org.onap.policy.clamp.controlloop.models.controlloop.persistence.repository.ToscaServiceTemplateRepository; import org.onap.policy.common.utils.coder.CoderException; import org.onap.policy.common.utils.coder.StandardYamlCoder; import org.onap.policy.common.utils.resources.ResourceUtils; +import org.onap.policy.models.base.PfConceptKey; import org.onap.policy.models.base.PfModelException; -import org.onap.policy.models.provider.PolicyModelsProvider; import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate; +import org.onap.policy.models.tosca.simple.concepts.JpaToscaServiceTemplate; class ServiceTemplateProviderTest { @@ -44,28 +48,33 @@ class ServiceTemplateProviderTest { private static final StandardYamlCoder YAML_TRANSLATOR = new StandardYamlCoder(); + private static ToscaServiceTemplate inputServiceTemplate; + + @BeforeAll + static void loadServiceTemplate() { + inputServiceTemplate = getToscaServiceTemplate(TOSCA_SERVICE_TEMPLATE_YAML); + } + @Test void testGetCommonOrInstancePropertiesFromNodeTypes() throws PfModelException { - var serviceTemplateProvider = new ServiceTemplateProvider(mock(PolicyModelsProvider.class)); + var serviceTemplateRepository = mock(ToscaServiceTemplateRepository.class); + var serviceTemplateProvider = new ServiceTemplateProvider(serviceTemplateRepository); - var serviceTemplate = getToscaServiceTemplate(TOSCA_SERVICE_TEMPLATE_YAML); - - var result = serviceTemplateProvider.getCommonOrInstancePropertiesFromNodeTypes(true, serviceTemplate); + var result = serviceTemplateProvider.getCommonOrInstancePropertiesFromNodeTypes(true, inputServiceTemplate); assertNotNull(result); assertThat(result).hasSize(8); } @Test void testGetDerivedCommonOrInstanceNodeTemplates() throws PfModelException { - var serviceTemplateProvider = new ServiceTemplateProvider(mock(PolicyModelsProvider.class)); - - var serviceTemplate = getToscaServiceTemplate(TOSCA_SERVICE_TEMPLATE_YAML); + var serviceTemplateRepository = mock(ToscaServiceTemplateRepository.class); + var serviceTemplateProvider = new ServiceTemplateProvider(serviceTemplateRepository); var commonOrInstanceNodeTypeProps = - serviceTemplateProvider.getCommonOrInstancePropertiesFromNodeTypes(true, serviceTemplate); + serviceTemplateProvider.getCommonOrInstancePropertiesFromNodeTypes(true, inputServiceTemplate); var result = serviceTemplateProvider.getDerivedCommonOrInstanceNodeTemplates( - serviceTemplate.getToscaTopologyTemplate().getNodeTemplates(), commonOrInstanceNodeTypeProps); + inputServiceTemplate.getToscaTopologyTemplate().getNodeTemplates(), commonOrInstanceNodeTypeProps); assertNotNull(result); assertThat(result).hasSize(8); @@ -73,74 +82,74 @@ class ServiceTemplateProviderTest { @Test void testCreateServiceTemplate() throws PfModelException { - var modelsProvider = mock(PolicyModelsProvider.class); - var serviceTemplateProvider = new ServiceTemplateProvider(modelsProvider); + var serviceTemplateRepository = mock(ToscaServiceTemplateRepository.class); + var serviceTemplateProvider = new ServiceTemplateProvider(serviceTemplateRepository); - var serviceTemplate = new ToscaServiceTemplate(); - when(modelsProvider.createServiceTemplate(serviceTemplate)).thenReturn(serviceTemplate); + var jpaServiceTemplate = ProviderUtils.getJpaAndValidate(inputServiceTemplate, JpaToscaServiceTemplate::new, + "toscaServiceTemplate"); + when(serviceTemplateRepository.save(jpaServiceTemplate)).thenReturn(jpaServiceTemplate); - var result = serviceTemplateProvider.createServiceTemplate(serviceTemplate); + var result = serviceTemplateProvider.createServiceTemplate(inputServiceTemplate); - assertThat(result).isEqualTo(serviceTemplate); + assertThat(result).isEqualTo(jpaServiceTemplate.toAuthorative()); } @Test void testDeleteServiceTemplate() throws PfModelException { - var serviceTemplate = new ToscaServiceTemplate(); - serviceTemplate.setName("Name"); - serviceTemplate.setVersion("1.0.0"); - var modelsProvider = mock(PolicyModelsProvider.class); - when(modelsProvider.deleteServiceTemplate(serviceTemplate.getName(), serviceTemplate.getVersion())) - .thenReturn(serviceTemplate); - - var serviceTemplateProvider = new ServiceTemplateProvider(modelsProvider); - var result = - serviceTemplateProvider.deleteServiceTemplate(serviceTemplate.getName(), serviceTemplate.getVersion()); - - assertThat(result).isEqualTo(serviceTemplate); + var jpaServiceTemplate = ProviderUtils.getJpaAndValidate(inputServiceTemplate, JpaToscaServiceTemplate::new, + "toscaServiceTemplate"); + var serviceTemplateRepository = mock(ToscaServiceTemplateRepository.class); + when(serviceTemplateRepository + .findById(new PfConceptKey(inputServiceTemplate.getName(), inputServiceTemplate.getVersion()))) + .thenReturn(Optional.of(jpaServiceTemplate)); + + var serviceTemplateProvider = new ServiceTemplateProvider(serviceTemplateRepository); + var result = serviceTemplateProvider.deleteServiceTemplate(inputServiceTemplate.getName(), + inputServiceTemplate.getVersion()); + + assertThat(result).isEqualTo(jpaServiceTemplate.toAuthorative()); } @Test void testGetServiceTemplateListEmpty() throws PfModelException { - var modelsProvider = mock(PolicyModelsProvider.class); - when(modelsProvider.getServiceTemplateList(any(String.class), any(String.class))).thenReturn(List.of()); + var serviceTemplateRepository = mock(ToscaServiceTemplateRepository.class); + when(serviceTemplateRepository.findById(any())).thenReturn(Optional.empty()); - var serviceTemplateProvider = new ServiceTemplateProvider(modelsProvider); + var serviceTemplateProvider = new ServiceTemplateProvider(serviceTemplateRepository); assertThatThrownBy(() -> serviceTemplateProvider.getToscaServiceTemplate("Name", "1.0.0")) .hasMessage("Control Loop definitions not found"); } @Test void testGetServiceTemplateList() throws PfModelException { - var serviceTemplate = new ToscaServiceTemplate(); - serviceTemplate.setName("Name"); - serviceTemplate.setVersion("1.0.0"); - var modelsProvider = mock(PolicyModelsProvider.class); - when(modelsProvider.getServiceTemplateList(serviceTemplate.getName(), serviceTemplate.getVersion())) - .thenReturn(List.of(serviceTemplate)); - - var serviceTemplateProvider = new ServiceTemplateProvider(modelsProvider); - var result = serviceTemplateProvider.getToscaServiceTemplate(serviceTemplate.getName(), - serviceTemplate.getVersion()); - - assertThat(result).isEqualTo(serviceTemplate); + var jpaServiceTemplate = ProviderUtils.getJpaAndValidate(inputServiceTemplate, JpaToscaServiceTemplate::new, + "toscaServiceTemplate"); + var serviceTemplateRepository = mock(ToscaServiceTemplateRepository.class); + when(serviceTemplateRepository + .findById(new PfConceptKey(inputServiceTemplate.getName(), inputServiceTemplate.getVersion()))) + .thenReturn(Optional.of(jpaServiceTemplate)); + + var serviceTemplateProvider = new ServiceTemplateProvider(serviceTemplateRepository); + var result = serviceTemplateProvider.getToscaServiceTemplate(inputServiceTemplate.getName(), + inputServiceTemplate.getVersion()); + + assertThat(result).isEqualTo(jpaServiceTemplate.toAuthorative()); } @Test void testGetServiceTemplate() throws PfModelException { - var serviceTemplate = new ToscaServiceTemplate(); - serviceTemplate.setName("Name"); - serviceTemplate.setVersion("1.0.0"); - var modelsProvider = mock(PolicyModelsProvider.class); - when(modelsProvider.getServiceTemplateList(serviceTemplate.getName(), serviceTemplate.getVersion())) - .thenReturn(List.of(serviceTemplate)); + var jpaServiceTemplate = ProviderUtils.getJpaAndValidate(inputServiceTemplate, JpaToscaServiceTemplate::new, + "toscaServiceTemplate"); + var serviceTemplateRepository = mock(ToscaServiceTemplateRepository.class); + when(serviceTemplateRepository.getFiltered(JpaToscaServiceTemplate.class, inputServiceTemplate.getName(), + inputServiceTemplate.getVersion())).thenReturn(List.of(jpaServiceTemplate)); - var serviceTemplateProvider = new ServiceTemplateProvider(modelsProvider); - var result = - serviceTemplateProvider.getServiceTemplateList(serviceTemplate.getName(), serviceTemplate.getVersion()); + var serviceTemplateProvider = new ServiceTemplateProvider(serviceTemplateRepository); + var result = serviceTemplateProvider.getServiceTemplateList(inputServiceTemplate.getName(), + inputServiceTemplate.getVersion()); assertThat(result).hasSize(1); - assertThat(result.get(0)).isEqualTo(serviceTemplate); + assertThat(result.get(0)).isEqualTo(jpaServiceTemplate.toAuthorative()); } /** -- cgit 1.2.3-korg