diff options
Diffstat (limited to 'mod2/catalog-service/src/test/java/org/onap/dcaegen2/platform/mod/web/service/MsInstanceServiceImplTest.java')
-rw-r--r-- | mod2/catalog-service/src/test/java/org/onap/dcaegen2/platform/mod/web/service/MsInstanceServiceImplTest.java | 209 |
1 files changed, 209 insertions, 0 deletions
diff --git a/mod2/catalog-service/src/test/java/org/onap/dcaegen2/platform/mod/web/service/MsInstanceServiceImplTest.java b/mod2/catalog-service/src/test/java/org/onap/dcaegen2/platform/mod/web/service/MsInstanceServiceImplTest.java new file mode 100644 index 0000000..1d84b60 --- /dev/null +++ b/mod2/catalog-service/src/test/java/org/onap/dcaegen2/platform/mod/web/service/MsInstanceServiceImplTest.java @@ -0,0 +1,209 @@ +/* + * ============LICENSE_START======================================================= + * org.onap.dcae + * ================================================================================ + * Copyright (c) 2020 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + */ + +package org.onap.dcaegen2.platform.mod.web.service; + +import org.onap.dcaegen2.platform.mod.model.basemicroservice.BaseMicroservice; +import org.onap.dcaegen2.platform.mod.model.deploymentartifact.DeploymentArtifact; +import org.onap.dcaegen2.platform.mod.model.deploymentartifact.MsInstanceInfo; +import org.onap.dcaegen2.platform.mod.model.exceptions.msinstance.MsInstanceNotFoundException; +import org.onap.dcaegen2.platform.mod.model.microserviceinstance.MsInstance; +import org.onap.dcaegen2.platform.mod.model.restapi.MsInstanceRequest; +import org.onap.dcaegen2.platform.mod.objectmothers.BaseMsObjectMother; +import org.onap.dcaegen2.platform.mod.objectmothers.MsInstanceObjectMother; +import org.onap.dcaegen2.platform.mod.web.service.basemicroservice.MsService; +import org.onap.dcaegen2.platform.mod.web.service.deploymentartifact.DeploymentArtifactService; +import org.onap.dcaegen2.platform.mod.web.service.microserviceinstance.MsInstanceGateway; +import org.onap.dcaegen2.platform.mod.web.service.microserviceinstance.MsInstanceServiceImpl; +import org.onap.dcaegen2.platform.mod.web.service.microserviceinstance.MsInstanceStatusChangeHandler; +import org.onap.dcaegen2.platform.mod.web.service.specification.SpecificationService; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.Spy; +import org.mockito.junit.jupiter.MockitoExtension; + +import java.util.Arrays; +import java.util.List; +import java.util.Optional; + +import static org.onap.dcaegen2.platform.mod.objectmothers.MsInstanceObjectMother.*; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatExceptionOfType; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.*; + +@ExtendWith(MockitoExtension.class) +class MsInstanceServiceImplTest { + + @Spy + private MsInstanceServiceImpl service = new MsInstanceServiceImpl(); + + @Mock + private MsInstanceGateway msInstanceRepository; + + @Mock + private MsService msService; + + @Mock + private SpecificationService specificationService; + + @Mock + private DeploymentArtifactService deploymentArtifactService; + + @Mock + private MsInstanceStatusChangeHandler msInstanceStatusChangeHandler; + + + @BeforeEach + void setUp() { + service.setMsService(msService); + service.setSpecificationService(specificationService); + service.setDeploymentArtifactService(deploymentArtifactService); + service.setMsInstanceRepository(msInstanceRepository); + service.setMsInstanceStatusChangeHandler(msInstanceStatusChangeHandler); + } + + @Test + void getAll() { + MsInstance instance_1 = MsInstance.builder().id("123").build(); + MsInstance instance_2 = MsInstance.builder().id("345").build(); + + when(msInstanceRepository.findAll()).thenReturn(Arrays.asList(instance_1, instance_2)); + + List<MsInstance> instances = service.getAll(); + + assertThat(instances.size()).isEqualTo(2); + verify(msInstanceRepository, times(1)).findAll(); + } + + @Test + void test_getMsInstanceById() throws Exception{ + MsInstance expected = MsInstanceObjectMother.createMsInstance(); + + when(msInstanceRepository.findById(MS_INSTANCE_ID)).thenReturn(Optional.of(expected)); + + MsInstance original = service.getMsInstanceById(MS_INSTANCE_ID); + + assertThat(original.getId()).isEqualTo(expected.getId()); + } + + @Test + void test_msIntanceNotFound_willRaiseException() throws Exception{ + when(msInstanceRepository.findById(MS_INSTANCE_ID)).thenReturn(Optional.empty()); + assertThatExceptionOfType(MsInstanceNotFoundException.class).isThrownBy( + () -> service.getMsInstanceById(MS_INSTANCE_ID)); + } + + //TODO require cleaning and more assertions + @Test + void createMicroserviceInstance() { + + BaseMicroservice microservice = BaseMsObjectMother.createMockMsObject(); + MsInstanceRequest request = getMsInstanceMockRequest(); + MsInstance msInstanceMockDao = createMsInstance(); + + when(msService.getMicroserviceByName(BaseMsObjectMother.BASE_MS_NAME)).thenReturn(microservice); + when(msInstanceRepository.findByNameAndRelease(request.getName(), request.getRelease())) + .thenReturn(Optional.empty()); + when(msInstanceRepository.save(any())).thenReturn(msInstanceMockDao); + + MsInstance msInstance = service.createMicroserviceInstance(BaseMsObjectMother.BASE_MS_NAME,request); + + assertThat(msInstance.getId()).isEqualTo(msInstance.getId()); + assertThat(msInstance.getName()).isEqualTo(msInstance.getName()); + assertThat(msInstance.getMsInfo().keySet()).isEqualTo(msInstanceMockDao.getMsInfo().keySet()); + + verify(msService, times(1)).getMicroserviceByName(BaseMsObjectMother.BASE_MS_NAME); + verify(msInstanceRepository, times(1)).save(any(MsInstance.class)); + verify(msService, times(1)). + saveMsInstanceReferenceToMs(microservice, msInstance); + + } + + @Test + void test_updateMsInstance() { + + } + + @Test + void updateStatusBasedOnDeploymentArtifactsStatuses() { + MsInstance msInstance = MsInstanceObjectMother.getMsInstanceWithExistingDeploymentArtifactRef(); + when(msInstanceRepository.findById(msInstance.getId())).thenReturn(Optional.of(msInstance)); + + service.updateStatusBasedOnDeploymentArtifactsStatuses(msInstance.getId()); + + verify(msInstanceStatusChangeHandler, times(1)).updateStatusBasedOnDeploymentArtifactsStatuses(msInstance); + verify(service, times(1)).updateMsInstance(msInstance); + + } + + @Test + void test_removeDeploymentArtifactFromMsInstance() { + MsInstance msInstance = MsInstanceObjectMother.getMsInstanceWithExistingDeploymentArtifactRef(); + DeploymentArtifact deploymentArtifact = createDeploymentArtifact(msInstance); + + when(msInstanceRepository.findById(msInstance.getId())).thenReturn(Optional.of(msInstance)); + //when(msInstanceStatusChangeHandler.updateStatusBasedOnDeploymentArtifactsStatuses(any())).thenReturn(msInstance); + + service.removeDeploymentArtifactFromMsInstance(deploymentArtifact); + + assertThat(msInstance.getDeploymentArtifactsInfo().getDeploymentArtifacts().contains(deploymentArtifact.getId())).isFalse(); + verify(msInstanceStatusChangeHandler, times(1)).updateStatusBasedOnDeploymentArtifactsStatuses(msInstance); + verify(service, times(1)).updateMsInstance(msInstance); + + } + + @Test + void updateMicroserviceReference() throws Exception{ + BaseMicroservice microservice = BaseMsObjectMother.createMockMsObject(); + MsInstance msInstance_1 = MsInstanceObjectMother.getMsInstanceWithExistingDeploymentArtifactRef(); + msInstance_1.setId("instance-1"); + msInstance_1.getMsInfo().put("name", "old-ms"); + MsInstance msInstance_2 = MsInstanceObjectMother.getMsInstanceWithExistingDeploymentArtifactRef(); + msInstance_2.setId("instance-2"); + msInstance_2.getMsInfo().put("name", "old-ms"); + + when(msInstanceRepository.findById("instance-1")).thenReturn(Optional.of(msInstance_1)); + when(msInstanceRepository.findById("instance-2")).thenReturn(Optional.of(msInstance_2)); + + service.updateMicroserviceReference(microservice); + + assertThat(msInstance_1.getName()).isEqualTo(microservice.getName()); + assertThat(msInstance_2.getName()).isEqualTo(microservice.getName()); + + assertThat(msInstance_1.getMsInfo().get("name")).isEqualTo(microservice.getName()); + assertThat(msInstance_2.getMsInfo().get("name")).isEqualTo(microservice.getName()); + + verify(service, times(2)).getMsInstanceById(anyString()); + verify(msInstanceRepository, times(2)).save(any(MsInstance.class)); + } + + private DeploymentArtifact createDeploymentArtifact(MsInstance msInstance) { + DeploymentArtifact deploymentArtifact = new DeploymentArtifact(); + deploymentArtifact.setId(msInstance.getDeploymentArtifactsInfo().getDeploymentArtifacts().get(0)); + + MsInstanceInfo msInstanceInfo = new MsInstanceInfo(); + msInstanceInfo.setId(msInstance.getId()); + deploymentArtifact.setMsInstanceInfo(msInstanceInfo); + return deploymentArtifact; + } +}
\ No newline at end of file |