diff options
author | 2019-08-09 10:21:45 +0200 | |
---|---|---|
committer | 2019-08-14 13:08:28 +0000 | |
commit | 643fd67cf618f518b702322fba9ae0e37a7878ba (patch) | |
tree | 6dd10cc2dafe625633e48f7be25f389db1eabb44 /dcaedt_tools/src/test | |
parent | e90694f0893731f6b2b949c8f0b0d190f1de2c2f (diff) |
Improved the DeployTemplate unit tests
Improved test and refactor the class:
- checkstyle
- correct proper log message
- remove code duplication
- remove useless variable checkedoutVfcmt
- used string join instead stream collect
Issue-ID: SDC-2327
Signed-off-by: Krystian Kedron <k.kedron@partner.samsung.com>
Change-Id: Iea65f8ef0317688ac1eb506f894a8eb3c3d3ce13
Diffstat (limited to 'dcaedt_tools/src/test')
-rw-r--r-- | dcaedt_tools/src/test/java/DeployTemplateTest.java | 138 |
1 files changed, 118 insertions, 20 deletions
diff --git a/dcaedt_tools/src/test/java/DeployTemplateTest.java b/dcaedt_tools/src/test/java/DeployTemplateTest.java index f46375a..f1c3d3b 100644 --- a/dcaedt_tools/src/test/java/DeployTemplateTest.java +++ b/dcaedt_tools/src/test/java/DeployTemplateTest.java @@ -3,13 +3,14 @@ * SDC * ================================================================================ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. + * Modifications Copyright (c) 2019 Samsung * ================================================================================ * 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. @@ -18,27 +19,57 @@ * ============LICENSE_END========================================================= */ -import com.google.gson.JsonObject; -import json.templateInfo.TemplateInfo; -import org.junit.Before; -import org.junit.Test; -import org.mockito.InjectMocks; -import tools.DeployTemplate; - -import java.util.*; - import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyString; + import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.junit.Before; +import org.junit.Test; +import org.mockito.InjectMocks; +import org.onap.sdc.dcae.composition.restmodels.CreateVFCMTRequest; +import org.onap.sdc.dcae.composition.restmodels.sdc.ResourceDetailed; +import org.springframework.web.client.ResourceAccessException; + +import com.google.gson.JsonObject; + +import json.templateInfo.TemplateInfo; +import tools.DeployTemplate; + public class DeployTemplateTest extends BaseTest { @InjectMocks DeployTemplate deployTemplate; private Map<TemplateInfo, JsonObject> templateInfoToJsonObjectMap; + private TemplateInfo vfcmtTemplateInfo; + + private static final String VERIFY_FAILED_MESSAGE = + "Deployment verify finished with errors, found only: 1 of 2 vfcmts"; + private static final String RESOURCE_ACCESS_EXCEPTION_MESSAGE = "Permission denny!"; + private static final String CREATE_RESOURCE_FAILED_MESSAGE = + String.format("Failed create vfcmt: %s, With general message: %s", TEMPLATE_INFO_NAME, + RESOURCE_ACCESS_EXCEPTION_MESSAGE); + private static final String UPDATE_RESOURCE_FAILED_MESSAGE = + String.format("Failed update vfcmt: %s, With general message: %s", VFCMT_NAME1, + RESOURCE_ACCESS_EXCEPTION_MESSAGE); + private static final String NOT_UPDATE_RESOURCE_MESSAGE = + String.format("vfcmt: %s found, but didn't update.", VFCMT_NAME1); + private final ResourceAccessException createResourceException = + new ResourceAccessException(RESOURCE_ACCESS_EXCEPTION_MESSAGE); + private static final String BAD_USER_ID = "badUserId"; + private static final String OPERATION_NOT_ALLOWED_FOR_USER_MESSAGE = String.format( + "User conflicts. Operation not allowed for user %s on resource checked out by %s", + BAD_USER_ID, USER_ID); + private static final String UPDATE_FAILED_MESSAGE = + String.format("Failed update vfcmt: %s, cannot checkout vfcmt", VFCMT_NAME1); @Before @Override @@ -50,15 +81,15 @@ public class DeployTemplateTest extends BaseTest { when(dcaeRestClient.saveComposition(any(), any())).thenReturn("Composition Created"); templateInfoToJsonObjectMap = new HashMap<>(); + vfcmtTemplateInfo = new TemplateInfo(); + vfcmtTemplateInfo.setName(VFCMT_NAME1); + vfcmtTemplateInfo.setFlowType(TEMPLATE_INFO_FLOWTYPE); + vfcmtTemplateInfo.setCategory("category"); + vfcmtTemplateInfo.setSubCategory("subCategory"); + vfcmtTemplateInfo.setDescription("description"); + vfcmtTemplateInfo.setUpdateIfExist(true); + templateInfoToJsonObjectMap.put(vfcmtTemplateInfo, new JsonObject()); TemplateInfo templateInfo = new TemplateInfo(); - templateInfo.setName(VFCMT_NAME1); - templateInfo.setFlowType(TEMPLATE_INFO_FLOWTYPE); - templateInfo.setCategory("category"); - templateInfo.setSubCategory("subCategory"); - templateInfo.setDescription("description"); - templateInfo.setUpdateIfExist(true); - templateInfoToJsonObjectMap.put(templateInfo, new JsonObject()); - templateInfo = new TemplateInfo(); templateInfo.setName(TEMPLATE_INFO_NAME); templateInfo.setFlowType(TEMPLATE_INFO_FLOWTYPE); templateInfo.setCategory("category"); @@ -74,9 +105,76 @@ public class DeployTemplateTest extends BaseTest { } @Test - public void deploy_failedSaving_failedVerify() { + public void deployFailedSaving() { when(dcaeRestClient.saveComposition(anyString(), anyString())).thenReturn("failed"); deployTemplate.deploy(templateInfoToJsonObjectMap); verify(report, times(4)).addErrorMessage(anyString()); } + + @Test + public void deployFailedVerify() { + mockGetAllVfcmtWithBadResources(); + deployTemplate.deploy(templateInfoToJsonObjectMap); + verify(report, times(1)).addErrorMessage(VERIFY_FAILED_MESSAGE); + } + + @Test + public void deployFailedCreateResource() { + when(dcaeRestClient.createResource(any(CreateVFCMTRequest.class))) + .thenThrow(createResourceException); + deployTemplate.deploy(templateInfoToJsonObjectMap); + verify(report, times(1)).addErrorMessage(CREATE_RESOURCE_FAILED_MESSAGE); + verify(report, times(1)).setStatusCode(2); + } + + @Test + public void deployButOperationNotAllowForTheUser() { + when(dcaeRestClient.getUserId()).thenReturn(BAD_USER_ID); + deployTemplate.deploy(templateInfoToJsonObjectMap); + verify(report, times(1)).addErrorMessage(OPERATION_NOT_ALLOWED_FOR_USER_MESSAGE); + verify(report, times(1)).addErrorMessage(UPDATE_FAILED_MESSAGE); + } + + @Test + public void deployAndCheckVfcmt() { + mockGetAllVfcmtWithCertifiedResource(); + deployTemplate.deploy(templateInfoToJsonObjectMap); + } + + @Test + public void deployAndCheckVfcmtFaild() { + mockGetAllVfcmtWithCertifiedResource(); + when(dcaeRestClient.checkoutVfcmt(UUID1)).thenThrow(createResourceException); + deployTemplate.deploy(templateInfoToJsonObjectMap); + verify(report, times(1)).addErrorMessage(UPDATE_RESOURCE_FAILED_MESSAGE); + verify(report, times(1)).setStatusCode(2); + } + + @Test + public void deployAndNotUpdate() { + vfcmtTemplateInfo.setUpdateIfExist(false); + deployTemplate.deploy(templateInfoToJsonObjectMap); + verify(report, times(1)).addNotUpdatedMessage(NOT_UPDATE_RESOURCE_MESSAGE); + } + + private void mockGetAllVfcmtWithBadResources() { + List<ResourceDetailed> resourceDetaileds = new ArrayList<>(); + resourceDetaileds.add(createResource("NOT_CERTIFIED_CHECKOUT")); + when(dcaeRestClient.getAllVfcmts()).thenReturn(resourceDetaileds); + } + + private void mockGetAllVfcmtWithCertifiedResource() { + List<ResourceDetailed> resourceDetaileds = new ArrayList<>(); + resourceDetaileds.add(createResource("READY_FOR_CERTIFICATION")); + when(dcaeRestClient.getAllVfcmts()).thenReturn(resourceDetaileds); + } + + private ResourceDetailed createResource(String status) { + ResourceDetailed resourceDetailed = new ResourceDetailed(); + resourceDetailed.setName(VFCMT_NAME1); + resourceDetailed.setUuid(UUID1); + resourceDetailed.setLifecycleState(status); + resourceDetailed.setLastUpdaterUserId(USER_ID); + return resourceDetailed; + } } |