From a50038a6ed673819b45e9af35eb203e6e24dec99 Mon Sep 17 00:00:00 2001 From: FrancescoFioraEst Date: Wed, 7 Dec 2022 16:22:45 +0000 Subject: Add instanceId support in AutomationCompositionProvider As part of the endpoint refactoring of InstantiationController, AutomationCompositionProvider have to support instanceId in CRUD operations. InstanceId will be temporary add as normal field and it will became primary key in next Jira task. Issue-ID: POLICY-4478 Change-Id: I0f7a1ab7683671403831cffdfe6db37eea569c74 Signed-off-by: FrancescoFioraEst --- .../concepts/JpaAutomationCompositionTest.java | 66 +++++++++++----------- .../AutomationCompositionProviderTest.java | 64 +++++++++++++++------ 2 files changed, 81 insertions(+), 49 deletions(-) (limited to 'models/src/test/java') diff --git a/models/src/test/java/org/onap/policy/clamp/models/acm/persistence/concepts/JpaAutomationCompositionTest.java b/models/src/test/java/org/onap/policy/clamp/models/acm/persistence/concepts/JpaAutomationCompositionTest.java index 733ba3807..f5a2149b4 100644 --- a/models/src/test/java/org/onap/policy/clamp/models/acm/persistence/concepts/JpaAutomationCompositionTest.java +++ b/models/src/test/java/org/onap/policy/clamp/models/acm/persistence/concepts/JpaAutomationCompositionTest.java @@ -46,7 +46,8 @@ import org.onap.policy.models.base.PfConceptKey; */ class JpaAutomationCompositionTest { - private static final String NULL_KEY_ERROR = "key is marked .*ull but is null"; + private static final String NULL_KEY_ERROR = "instanceId is marked .*ull but is null"; + private static final UUID INSTANCE_ID = UUID.fromString("709c62b3-8918-41b9-a747-d21eb79c6c20"); private static final String COMPOSITION_ID = "709c62b3-8918-41b9-a747-e21eb79c6c41"; @Test @@ -56,74 +57,70 @@ class JpaAutomationCompositionTest { }).hasMessageMatching("copyConcept is marked .*ull but is null"); assertThatThrownBy(() -> { - new JpaAutomationComposition((PfConceptKey) null); + new JpaAutomationComposition(null, null, null, null, null); }).hasMessageMatching(NULL_KEY_ERROR); assertThatThrownBy(() -> { - new JpaAutomationComposition(null, null, null, null); + new JpaAutomationComposition(null, null, null, null, new LinkedHashMap<>()); }).hasMessageMatching(NULL_KEY_ERROR); assertThatThrownBy(() -> { - new JpaAutomationComposition(null, null, null, new LinkedHashMap<>()); + new JpaAutomationComposition(null, null, null, AutomationCompositionState.UNINITIALISED, null); }).hasMessageMatching(NULL_KEY_ERROR); assertThatThrownBy(() -> { - new JpaAutomationComposition(null, null, AutomationCompositionState.UNINITIALISED, null); - }).hasMessageMatching(NULL_KEY_ERROR); - - assertThatThrownBy(() -> { - new JpaAutomationComposition(null, null, AutomationCompositionState.UNINITIALISED, new LinkedHashMap<>()); - }).hasMessageMatching(NULL_KEY_ERROR); - - assertThatThrownBy(() -> { - new JpaAutomationComposition(null, "key", null, null); + new JpaAutomationComposition(null, null, null, AutomationCompositionState.UNINITIALISED, + new LinkedHashMap<>()); }).hasMessageMatching(NULL_KEY_ERROR); assertThatThrownBy(() -> { - new JpaAutomationComposition(null, "key", null, new LinkedHashMap<>()); + new JpaAutomationComposition(null, null, "key", null, new LinkedHashMap<>()); }).hasMessageMatching(NULL_KEY_ERROR); assertThatThrownBy(() -> { - new JpaAutomationComposition(null, "key", AutomationCompositionState.UNINITIALISED, null); + new JpaAutomationComposition(null, null, "key", AutomationCompositionState.UNINITIALISED, null); }).hasMessageMatching(NULL_KEY_ERROR); assertThatThrownBy(() -> { - new JpaAutomationComposition(null, "key", AutomationCompositionState.UNINITIALISED, new LinkedHashMap<>()); + new JpaAutomationComposition(null, null, "key", AutomationCompositionState.UNINITIALISED, + new LinkedHashMap<>()); }).hasMessageMatching(NULL_KEY_ERROR); assertThatThrownBy(() -> { - new JpaAutomationComposition(new PfConceptKey(), null, null, null); + new JpaAutomationComposition(INSTANCE_ID.toString(), new PfConceptKey(), null, null, null); }).hasMessageMatching("compositionId is marked .*ull but is null"); assertThatThrownBy(() -> { - new JpaAutomationComposition(new PfConceptKey(), null, null, new LinkedHashMap<>()); + new JpaAutomationComposition(INSTANCE_ID.toString(), new PfConceptKey(), null, null, new LinkedHashMap<>()); }).hasMessageMatching("compositionId is marked .*ull but is null"); assertThatThrownBy(() -> { - new JpaAutomationComposition(new PfConceptKey(), null, AutomationCompositionState.UNINITIALISED, null); + new JpaAutomationComposition(INSTANCE_ID.toString(), new PfConceptKey(), null, + AutomationCompositionState.UNINITIALISED, null); }).hasMessageMatching("compositionId is marked .*ull but is null"); assertThatThrownBy(() -> { - new JpaAutomationComposition(new PfConceptKey(), null, AutomationCompositionState.UNINITIALISED, - new LinkedHashMap<>()); + new JpaAutomationComposition(INSTANCE_ID.toString(), new PfConceptKey(), null, + AutomationCompositionState.UNINITIALISED, new LinkedHashMap<>()); }).hasMessageMatching("compositionId is marked .*ull but is null"); assertThatThrownBy(() -> { - new JpaAutomationComposition(new PfConceptKey(), "key", null, null); + new JpaAutomationComposition(INSTANCE_ID.toString(), new PfConceptKey(), "key", null, null); }).hasMessageMatching("state is marked .*ull but is null"); assertThatThrownBy(() -> { - new JpaAutomationComposition(new PfConceptKey(), "key", null, new LinkedHashMap<>()); + new JpaAutomationComposition(INSTANCE_ID.toString(), new PfConceptKey(), "key", null, + new LinkedHashMap<>()); }).hasMessageMatching("state is marked .*ull but is null"); assertThatThrownBy(() -> { - new JpaAutomationComposition(new PfConceptKey(), "key", AutomationCompositionState.UNINITIALISED, null); + new JpaAutomationComposition(INSTANCE_ID.toString(), new PfConceptKey(), "key", + AutomationCompositionState.UNINITIALISED, null); }).hasMessageMatching("elements is marked .*ull but is null"); assertNotNull(new JpaAutomationComposition()); - assertNotNull(new JpaAutomationComposition((new PfConceptKey()))); - assertNotNull(new JpaAutomationComposition(new PfConceptKey(), "key", AutomationCompositionState.UNINITIALISED, - new LinkedHashMap<>())); + assertNotNull(new JpaAutomationComposition(INSTANCE_ID.toString(), new PfConceptKey(), "key", + AutomationCompositionState.UNINITIALISED, new LinkedHashMap<>())); } @Test @@ -182,23 +179,24 @@ class JpaAutomationCompositionTest { new StandardCoder().decode(new File("src/test/resources/json/AutomationCompositionNoOrderedState.json"), AutomationComposition.class); + noOrderedStateAc.setInstanceId(INSTANCE_ID); var noOrderedStateJpaAc = new JpaAutomationComposition(noOrderedStateAc); assertNull(noOrderedStateJpaAc.getOrderedState()); noOrderedStateAc.setOrderedState(AutomationCompositionOrderedState.UNINITIALISED); noOrderedStateJpaAc = new JpaAutomationComposition(noOrderedStateAc); assertEquals(testJpaAutomationComposition, noOrderedStateJpaAc); - var automationCompositionsWithElements = new StandardCoder().decode( - new File("src/test/resources/providers/TestAutomationCompositions.json"), AutomationCompositions.class); + var acWithElements = + new StandardCoder().decode(new File("src/test/resources/providers/TestAutomationCompositions.json"), + AutomationCompositions.class).getAutomationCompositionList().get(0); - var jpaAutomationCompositionWithElements = - new JpaAutomationComposition(automationCompositionsWithElements.getAutomationCompositionList().get(0)); + acWithElements.setInstanceId(INSTANCE_ID); + var jpaAutomationCompositionWithElements = new JpaAutomationComposition(acWithElements); assertEquals(4, jpaAutomationCompositionWithElements.getElements().size()); assertEquals(17, jpaAutomationCompositionWithElements.getKeys().size()); assertThatCode(jpaAutomationCompositionWithElements::clean).doesNotThrowAnyException(); - assertEquals(automationCompositionsWithElements.getAutomationCompositionList().get(0), - jpaAutomationCompositionWithElements.toAuthorative()); + assertEquals(acWithElements, jpaAutomationCompositionWithElements.toAuthorative()); } @Test @@ -282,6 +280,7 @@ class JpaAutomationCompositionTest { var ac2 = new JpaAutomationComposition(); ac2.setCompositionId(COMPOSITION_ID); + ac2.setInstanceId(ac0.getInstanceId()); assertEquals(ac2, ac0); } @@ -299,6 +298,7 @@ class JpaAutomationCompositionTest { private AutomationComposition createAutomationCompositionInstance() { var testAutomationComposition = new AutomationComposition(); testAutomationComposition.setName("automation-composition"); + testAutomationComposition.setInstanceId(INSTANCE_ID); testAutomationComposition.setVersion("0.0.1"); testAutomationComposition.setCompositionId(UUID.fromString(COMPOSITION_ID)); testAutomationComposition.setElements(new LinkedHashMap<>()); diff --git a/models/src/test/java/org/onap/policy/clamp/models/acm/persistence/provider/AutomationCompositionProviderTest.java b/models/src/test/java/org/onap/policy/clamp/models/acm/persistence/provider/AutomationCompositionProviderTest.java index 5b12eee17..d7d96e9bd 100644 --- a/models/src/test/java/org/onap/policy/clamp/models/acm/persistence/provider/AutomationCompositionProviderTest.java +++ b/models/src/test/java/org/onap/policy/clamp/models/acm/persistence/provider/AutomationCompositionProviderTest.java @@ -30,6 +30,7 @@ import static org.mockito.Mockito.when; import java.util.List; import java.util.Optional; +import java.util.UUID; import javax.persistence.EntityNotFoundException; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -40,7 +41,6 @@ import org.onap.policy.clamp.models.acm.persistence.repository.AutomationComposi import org.onap.policy.common.utils.coder.Coder; 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.tosca.authorative.concepts.ToscaConceptIdentifier; class AutomationCompositionProviderTest { @@ -68,18 +68,32 @@ class AutomationCompositionProviderTest { } @Test - void testAutomationCompositionSave() { + void testAutomationCompositionCreate() { var automationCompositionRepository = mock(AutomationCompositionRepository.class); var automationCompositionProvider = new AutomationCompositionProvider(automationCompositionRepository); - assertThatThrownBy(() -> automationCompositionProvider.saveAutomationComposition(null)) + when(automationCompositionRepository.save(any(JpaAutomationComposition.class))) + .thenReturn(inputAutomationCompositionsJpa.get(0)); + var inputAc = inputAutomationCompositions.getAutomationCompositionList().get(0); + + var createdAutomationComposition = automationCompositionProvider.createAutomationComposition(inputAc); + inputAc.setInstanceId(createdAutomationComposition.getInstanceId()); + assertEquals(inputAc, createdAutomationComposition); + } + + @Test + void testAutomationCompositionUpdate() { + var automationCompositionRepository = mock(AutomationCompositionRepository.class); + var automationCompositionProvider = new AutomationCompositionProvider(automationCompositionRepository); + + assertThatThrownBy(() -> automationCompositionProvider.updateAutomationComposition(null)) .hasMessageMatching(OBJECT_IS_NULL); when(automationCompositionRepository.save(inputAutomationCompositionsJpa.get(0))) .thenReturn(inputAutomationCompositionsJpa.get(0)); var createdAutomationComposition = automationCompositionProvider - .saveAutomationComposition(inputAutomationCompositions.getAutomationCompositionList().get(0)); + .updateAutomationComposition(inputAutomationCompositions.getAutomationCompositionList().get(0)); assertEquals(inputAutomationCompositions.getAutomationCompositionList().get(0), createdAutomationComposition); } @@ -121,31 +135,49 @@ class AutomationCompositionProviderTest { .getAutomationComposition(new ToscaConceptIdentifier(ID_NAME_NOT_EXTST, ID_VERSION))) .hasMessageMatching("AutomationComposition not found"); - ac = automationCompositionProvider.findAutomationComposition(ID_NAME, ID_VERSION) - .orElse(new AutomationComposition()); - assertEquals(inputAutomationCompositions.getAutomationCompositionList().get(1), ac); - assertThat(automationCompositionProvider .findAutomationComposition(new ToscaConceptIdentifier(ID_NAME_NOT_EXTST, ID_VERSION))).isEmpty(); } @Test - void testDeleteAutomationComposition() { + void testGetAutomationComposition() { var automationCompositionRepository = mock(AutomationCompositionRepository.class); var automationCompositionProvider = new AutomationCompositionProvider(automationCompositionRepository); - assertThatThrownBy( - () -> automationCompositionProvider.deleteAutomationComposition(ID_NAME_NOT_EXTST, ID_VERSION)) - .hasMessageMatching(".*.failed, automation composition does not exist"); + var automationComposition = inputAutomationCompositions.getAutomationCompositionList().get(0); + when(automationCompositionRepository.findByInstanceId(automationComposition.getInstanceId().toString())) + .thenReturn(Optional.of(inputAutomationCompositionsJpa.get(0))); + var ac = automationCompositionProvider.getAutomationComposition(automationComposition.getInstanceId()); + assertEquals(inputAutomationCompositions.getAutomationCompositionList().get(0), ac); + } + + @Test + void testGetAcInstancesByCompositionId() { + var automationCompositionRepository = mock(AutomationCompositionRepository.class); + var automationCompositionProvider = new AutomationCompositionProvider(automationCompositionRepository); var automationComposition = inputAutomationCompositions.getAutomationCompositionList().get(0); - var name = automationComposition.getName(); - var version = automationComposition.getVersion(); + when(automationCompositionRepository.findByCompositionId(automationComposition.getCompositionId().toString())) + .thenReturn(inputAutomationCompositionsJpa); + var acList = + automationCompositionProvider.getAcInstancesByCompositionId(automationComposition.getCompositionId()); + assertEquals(inputAutomationCompositions.getAutomationCompositionList(), acList); + } - when(automationCompositionRepository.findById(new PfConceptKey(name, version))) + @Test + void testDeleteAutomationComposition() { + var automationCompositionRepository = mock(AutomationCompositionRepository.class); + var automationCompositionProvider = new AutomationCompositionProvider(automationCompositionRepository); + + assertThatThrownBy(() -> automationCompositionProvider.deleteAutomationComposition(UUID.randomUUID())) + .hasMessageMatching(".*.failed, automation composition does not exist"); + + var automationComposition = inputAutomationCompositions.getAutomationCompositionList().get(0); + when(automationCompositionRepository.findByInstanceId(automationComposition.getInstanceId().toString())) .thenReturn(Optional.of(inputAutomationCompositionsJpa.get(0))); - AutomationComposition deletedAc = automationCompositionProvider.deleteAutomationComposition(name, version); + var deletedAc = + automationCompositionProvider.deleteAutomationComposition(automationComposition.getInstanceId()); assertEquals(automationComposition, deletedAc); } } -- cgit 1.2.3-korg