diff options
Diffstat (limited to 'vid-automation/src')
60 files changed, 1657 insertions, 584 deletions
diff --git a/vid-automation/src/main/java/org/onap/sdc/ci/tests/execute/setup/SetupCDTest.java b/vid-automation/src/main/java/org/onap/sdc/ci/tests/execute/setup/SetupCDTest.java index bb6a19a36..b3be16a42 100644 --- a/vid-automation/src/main/java/org/onap/sdc/ci/tests/execute/setup/SetupCDTest.java +++ b/vid-automation/src/main/java/org/onap/sdc/ci/tests/execute/setup/SetupCDTest.java @@ -20,10 +20,12 @@ package org.onap.sdc.ci.tests.execute.setup; +import com.aventstack.extentreports.ExtentTest; +import com.aventstack.extentreports.Status; import java.io.File; import java.io.IOException; import java.util.UUID; - +import net.lightbody.bmp.core.har.Har; import org.onap.sdc.ci.tests.datatypes.Configuration; import org.onap.sdc.ci.tests.datatypes.User; import org.onap.sdc.ci.tests.datatypes.UserCredentials; @@ -44,11 +46,6 @@ import org.testng.annotations.BeforeMethod; import org.testng.annotations.BeforeSuite; import org.testng.annotations.Test; -import com.aventstack.extentreports.ExtentTest; -import com.aventstack.extentreports.Status; - -import net.lightbody.bmp.core.har.Har; - public abstract class SetupCDTest extends DriverFactory { private static final String RE_RUN = "<html><font color=\"red\">ReRun - </font></html>"; @@ -172,7 +169,7 @@ public abstract class SetupCDTest extends DriverFactory { return url; } - public static void navigateToUrl(String url) throws Exception { + public static void navigateToUrl(String url) { try { System.out.println("Deleting cookies..."); deleteCookies(); @@ -282,7 +279,7 @@ public abstract class SetupCDTest extends DriverFactory { } } - public void navigateAndLogin(UserCredentials userCredentials) throws Exception { + public void navigateAndLogin(UserCredentials userCredentials) { int refreshAttempts = getWindowTest().getRefreshAttempts() != 0 ? getWindowTest().getRefreshAttempts() : 0; setRefreshAttempts(refreshAttempts); setUser(userCredentials); @@ -300,7 +297,7 @@ public abstract class SetupCDTest extends DriverFactory { return user; } - protected void reloginWithNewRole(UserCredentials userCredentials) throws Exception { + protected void reloginWithNewRole(UserCredentials userCredentials) { System.out.println(String.format("Setup before relogin with the userId %s", userCredentials.getUserId())); navigateAndLogin(userCredentials); } @@ -353,4 +350,4 @@ public abstract class SetupCDTest extends DriverFactory { StartTest.main(testSuiteArr); } -}
\ No newline at end of file +} diff --git a/vid-automation/src/main/java/org/onap/sdc/ci/tests/utilities/GeneralUIUtils.java b/vid-automation/src/main/java/org/onap/sdc/ci/tests/utilities/GeneralUIUtils.java index b10636bf1..e834c15ac 100644 --- a/vid-automation/src/main/java/org/onap/sdc/ci/tests/utilities/GeneralUIUtils.java +++ b/vid-automation/src/main/java/org/onap/sdc/ci/tests/utilities/GeneralUIUtils.java @@ -475,6 +475,18 @@ public final class GeneralUIUtils { return element; } + public static boolean isOptionSelectedInMultiSelect(String dataTestId, String option) { + GeneralUIUtils.ultimateWait(); + List<WebElement> selectedElements = getDriver().findElements(By.xpath("//*[@data-tests-id='" + dataTestId + "']//span[@class='c-label']")); + + + for (WebElement selectedElement : selectedElements) { + if (selectedElement.getText().equals(option)) { + return true; + } + } + return false; + } public static WebElement getSelectedElementFromDropDown(String dataTestId){ GeneralUIUtils.ultimateWait();; WebElement selectedElement = new Select (getDriver().findElement(By.xpath("//*[@data-tests-id='" + dataTestId + "']"))).getFirstSelectedOption(); diff --git a/vid-automation/src/main/java/org/onap/simulator/presetGenerator/presets/aaf/AAFGetUrlServicePreset.java b/vid-automation/src/main/java/org/onap/simulator/presetGenerator/presets/aaf/AAFGetUrlServicePreset.java index b3376e61a..c3914660e 100644 --- a/vid-automation/src/main/java/org/onap/simulator/presetGenerator/presets/aaf/AAFGetUrlServicePreset.java +++ b/vid-automation/src/main/java/org/onap/simulator/presetGenerator/presets/aaf/AAFGetUrlServicePreset.java @@ -2,6 +2,7 @@ package org.onap.simulator.presetGenerator.presets.aaf; import org.onap.simulator.presetGenerator.presets.BasePresets.BasePreset; import org.springframework.http.HttpMethod; +import vid.automation.test.services.SimulatorApi; public class AAFGetUrlServicePreset extends BasePreset { @Override @@ -11,7 +12,11 @@ public class AAFGetUrlServicePreset extends BasePreset { @Override public String getReqPath() { - return "/locate/com.att.aaf.service:2.0"; + return "/locate/" + regexAafServerName() + ":2.0"; + } + + private String regexAafServerName() { + return "([a-z-]+\\.)*[a-z-]+"; } @Override @@ -21,6 +26,22 @@ public class AAFGetUrlServicePreset extends BasePreset { @Override public Object getResponseBody() { - return "{\"endpoint\":[{\"name\":\"com.att.aaf.service\",\"major\": 2,\"minor\": 0,\"patch\": 19,\"pkg\": 21,\"latitude\": 38.627346,\"longitude\": -90.19377,\"protocol\": \"http\",\"subprotocol\": [],\"hostname\": \"127.0.0.1\",\"port\": 1080}]}"; + return "" + + "{" + + " \"endpoint\": [{" + + " \"name\": \"aaf-service\"," + + " \"major\": 2," + + " \"minor\": 0," + + " \"patch\": 19," + + " \"pkg\": 21," + + " \"latitude\": 38.627346," + + " \"longitude\": -90.19377," + + " \"protocol\": \"http\"," + + " \"subprotocol\": []," + + " \"port\": " + SimulatorApi.getSimulatedResponsesPort() + "," + + " \"hostname\": \"" + SimulatorApi.getSimulatorHost() + "\"" + + " }" + + " ]" + + "}"; } } diff --git a/vid-automation/src/main/java/org/onap/simulator/presetGenerator/presets/mso/PresetMSOCreateMacroPre1806Post.java b/vid-automation/src/main/java/org/onap/simulator/presetGenerator/presets/mso/PresetMSOCreateMacroPre1806Post.java index 29e1365af..e2f342f0e 100644 --- a/vid-automation/src/main/java/org/onap/simulator/presetGenerator/presets/mso/PresetMSOCreateMacroPre1806Post.java +++ b/vid-automation/src/main/java/org/onap/simulator/presetGenerator/presets/mso/PresetMSOCreateMacroPre1806Post.java @@ -25,7 +25,7 @@ public class PresetMSOCreateMacroPre1806Post extends PresetMSOBaseCreateInstance " }," + " \"modelInfo\": {" + " \"modelType\": \"service\"," + - " \"modelInvariantId\": \"d27e42cf-087e-4d31-88ac-6c4b7585f800\"," + + " \"modelInvariantId\": \"a8dcd72d-d44d-44f2-aa85-53aa9ca99cba\"," + " \"modelVersionId\": \"4d71990b-d8ad-4510-ac61-496288d9078e\"," + " \"modelName\": \"vidmacrofalsenaming\"," + " \"modelVersion\": \"1.0\"" + diff --git a/vid-automation/src/main/java/org/onap/simulator/presetGenerator/presets/mso/PresetMSOCreateServiceInstanceAlacarte5GServiceWithNetwork.java b/vid-automation/src/main/java/org/onap/simulator/presetGenerator/presets/mso/PresetMSOCreateServiceInstanceAlacarte.java index 40c18fa55..180aaefd1 100644 --- a/vid-automation/src/main/java/org/onap/simulator/presetGenerator/presets/mso/PresetMSOCreateServiceInstanceAlacarte5GServiceWithNetwork.java +++ b/vid-automation/src/main/java/org/onap/simulator/presetGenerator/presets/mso/PresetMSOCreateServiceInstanceAlacarte.java @@ -1,16 +1,20 @@ package org.onap.simulator.presetGenerator.presets.mso; -import java.util.Map; - import static org.onap.simulator.presetGenerator.presets.mso.PresetMSOServiceInstanceGen2WithNames.Keys.SERVICE_NAME; -public class PresetMSOCreateServiceInstanceAlacarte5GServiceWithNetwork extends PresetMSOCreateServiceInstanceGen2WithNames { +import java.util.Map; +import vid.automation.test.infra.ModelInfo; + +public class PresetMSOCreateServiceInstanceAlacarte extends PresetMSOCreateServiceInstanceGen2WithNames { private final String requestorId; + protected final ModelInfo modelInfo; - public PresetMSOCreateServiceInstanceAlacarte5GServiceWithNetwork(Map<Keys, String> names, String requestId, String requestorId) { - super(names, 0, requestId); + public PresetMSOCreateServiceInstanceAlacarte(Map<Keys, String> names, String requestId, String responseInstanceId, + String requestorId, ModelInfo modelInfo) { + super(names, 0, requestId, responseInstanceId); this.requestorId = requestorId; + this.modelInfo = modelInfo; } @Override @@ -22,13 +26,7 @@ public class PresetMSOCreateServiceInstanceAlacarte5GServiceWithNetwork extends public Object getRequestBody() { return "{" + " \"requestDetails\": {" + - " \"modelInfo\": {" + - " \"modelInvariantId\": \"16e56d12-40b3-4db1-a40e-d48c36679e2e\"," + - " \"modelVersionId\": \"4659e8bd-0920-4eed-8ec5-550b4c8dceeb\"," + - " \"modelName\": \"SR-IOV Provider-1\"," + - " \"modelType\": \"service\"," + - " \"modelVersion\": \"1.0\"" + - " }," + + modelInfo.createMsoModelInfo()+ " \"owningEntity\": {" + " \"owningEntityId\": \"d61e6f2d-12fa-4cc2-91df-7c244011d6fc\"," + " \"owningEntityName\": \"WayneHolland\"" + diff --git a/vid-automation/src/main/java/org/onap/simulator/presetGenerator/presets/mso/PresetMSOCreateVfModuleALaCarteCypress.java b/vid-automation/src/main/java/org/onap/simulator/presetGenerator/presets/mso/PresetMSOCreateVfModuleALaCarteCypress.java index 7b434d559..2a353a38b 100644 --- a/vid-automation/src/main/java/org/onap/simulator/presetGenerator/presets/mso/PresetMSOCreateVfModuleALaCarteCypress.java +++ b/vid-automation/src/main/java/org/onap/simulator/presetGenerator/presets/mso/PresetMSOCreateVfModuleALaCarteCypress.java @@ -1,12 +1,10 @@ package org.onap.simulator.presetGenerator.presets.mso; import com.google.common.collect.ImmutableMap; - import java.util.Map; -public class PresetMSOCreateVfModuleALaCarteCypress extends PresetMSOBaseCreateInstancePost { - private String serviceInstanceId; - private String vnfInstanceId; +public class PresetMSOCreateVfModuleALaCarteCypress extends PresetMSOCreateVfModuleBase { + protected final Map<Keys, String> names; public enum Keys { @@ -34,25 +32,13 @@ public class PresetMSOCreateVfModuleALaCarteCypress extends PresetMSOBaseCreateI .build(); public PresetMSOCreateVfModuleALaCarteCypress(String overrideRequestId, String serviceInstanceId, String vnfInstanceId, Map<Keys, String> names, String testApi, boolean withTestApi) { - super(overrideRequestId); - this.vnfInstanceId = vnfInstanceId; - this.serviceInstanceId = serviceInstanceId; + super(overrideRequestId, DEFAULT_INSTANCE_ID, serviceInstanceId, vnfInstanceId, "vfModule"); this.names = names; this.msoTestApi = testApi; this.withTestApi = withTestApi; } @Override - public boolean isStrictMatch() { - return true; - } - - @Override - public String getReqPath() { - return getRootPath() + "/serviceInstantiation/v./serviceInstances/" + serviceInstanceId + "/vnfs/" + vnfInstanceId + "/vfModules"; - } - - @Override public Object getRequestBody() { return "" + "{" + diff --git a/vid-automation/src/main/java/org/onap/simulator/presetGenerator/presets/mso/PresetMSOCreateVfModuleALaCarteE2E.java b/vid-automation/src/main/java/org/onap/simulator/presetGenerator/presets/mso/PresetMSOCreateVfModuleALaCarteE2E.java new file mode 100644 index 000000000..89744a723 --- /dev/null +++ b/vid-automation/src/main/java/org/onap/simulator/presetGenerator/presets/mso/PresetMSOCreateVfModuleALaCarteE2E.java @@ -0,0 +1,89 @@ +package org.onap.simulator.presetGenerator.presets.mso; + +import org.apache.commons.lang3.ObjectUtils; +import vid.automation.test.infra.ModelInfo; +import vid.automation.test.infra.ModelInfoWithCustomization; + +public class PresetMSOCreateVfModuleALaCarteE2E extends PresetMSOCreateVfModuleBase { + + protected final String requestorId; + protected final ModelInfo serviceModelInfo; + private final String instanceName; + private final ModelInfoWithCustomization resourceModelInfo; + private final String relatedInstance; + + public PresetMSOCreateVfModuleALaCarteE2E( + String overrideRequestId, + String responseInstanceId, + String serviceInstanceId, + String vnfInstanceId, + String requestorId, + ModelInfo serviceModelInfo, + String instanceName, + ModelInfoWithCustomization resourceModelInfo, + String relatedInstance) { + super(overrideRequestId, responseInstanceId, serviceInstanceId, vnfInstanceId, resourceModelInfo.resourceType); + this.requestorId = requestorId; + this.serviceModelInfo = serviceModelInfo; + this.instanceName = instanceName; + this.resourceModelInfo = resourceModelInfo; + this.relatedInstance = relatedInstance; + } + + @Override + public Object getRequestBody() { + return "{" + + " \"requestDetails\": {" + + resourceModelInfo.createMsoModelInfo() + + " \"cloudConfiguration\": {" + + " \"lcpCloudRegionId\": \"hvf6\"," + + addCloudOwnerIfNeeded() + + " \"tenantId\": \"bae71557c5bb4d5aac6743a4e5f1d054\"" + + " }," + + " \"requestInfo\": {" + + addInstanceName() + + " \"source\": \"VID\"," + + " \"suppressRollback\": false," + + " \"requestorId\": \""+requestorId+"\"" + + " }," + + " \"relatedInstanceList\": [{" + + " \"relatedInstance\": {" + + serviceModelInfo.createMsoModelInfo() + + " \"instanceId\": \""+serviceInstanceId+"\"" + + " }" + + " }, {" + + " \"relatedInstance\": {" + + " \"modelInfo\": {" + + " \"modelCustomizationName\": \"vOCG_1804_VF 0\"," + + " \"modelCustomizationId\": \"e9ed1da0-c078-426a-8e84-6f4e85eace59\"," + + " \"modelInvariantId\": \"db23d71a-4cb4-4030-9c9b-e3f886c2b35c\"," + + " \"modelVersionId\": \"aca3f7b1-15f9-45a5-b182-b8b5aca84a76\"," + + " \"modelName\": \"vOCG_1804_VF\"," + + " \"modelType\": \"vnf\"," + + " \"modelVersion\": \"4.0\"" + + " }," + + " \"instanceId\": \""+vnfInstanceId+"\"" + + " }" + + " }" + addRelatedInstance() + + " ]," + + " \"requestParameters\": {" + + " \"userParams\": [{" + + " \"param\": \"ABCD\"," + + " \"vnf_instance_name\": \"sample\"" + + " }" + + " ]," + + " \"testApi\": \"VNF_API\"" + + " }" + + " }" + + "}"; + } + + private String addInstanceName() { + return instanceName==null ? "" : + "\"instanceName\": \""+instanceName+"\","; + } + + private String addRelatedInstance() { + return ObjectUtils.defaultIfNull(relatedInstance, ""); + } +} diff --git a/vid-automation/src/main/java/org/onap/simulator/presetGenerator/presets/mso/PresetMSOCreateVfModuleBase.java b/vid-automation/src/main/java/org/onap/simulator/presetGenerator/presets/mso/PresetMSOCreateVfModuleBase.java new file mode 100644 index 000000000..7c148fa08 --- /dev/null +++ b/vid-automation/src/main/java/org/onap/simulator/presetGenerator/presets/mso/PresetMSOCreateVfModuleBase.java @@ -0,0 +1,25 @@ +package org.onap.simulator.presetGenerator.presets.mso; + +public class PresetMSOCreateVfModuleBase extends PresetMSOBaseCreateInstancePost { + + private final String resourceType; + protected String serviceInstanceId; + protected String vnfInstanceId; + + public PresetMSOCreateVfModuleBase(String requestId, String responseInstanceId, String serviceInstanceId, String vnfInstanceId, String resourceType) { + super(requestId, responseInstanceId); + this.serviceInstanceId = serviceInstanceId; + this.vnfInstanceId = vnfInstanceId; + this.resourceType = resourceType; + } + + @Override + public boolean isStrictMatch() { + return true; + } + + @Override + public String getReqPath() { + return getRootPath() + String.format("/serviceInstantiation/v./serviceInstances/%s/vnfs/%s/%ss",serviceInstanceId, vnfInstanceId, resourceType); + } +} diff --git a/vid-automation/src/main/java/org/onap/simulator/presetGenerator/presets/mso/PresetMSOCreateVnfALaCarteCypress2.java b/vid-automation/src/main/java/org/onap/simulator/presetGenerator/presets/mso/PresetMSOCreateVnfALaCarteCypress2.java index 96424e803..da1c3ffcf 100644 --- a/vid-automation/src/main/java/org/onap/simulator/presetGenerator/presets/mso/PresetMSOCreateVnfALaCarteCypress2.java +++ b/vid-automation/src/main/java/org/onap/simulator/presetGenerator/presets/mso/PresetMSOCreateVnfALaCarteCypress2.java @@ -24,7 +24,7 @@ public class PresetMSOCreateVnfALaCarteCypress2 extends PresetMSOCreateVnfBase { "{\"lcpCloudRegionId\":\"just another region\"," + addCloudOwnerIfNeeded() + "\"tenantId\":\"092eb9e8e4b7412e8787dd091bc58e86\"}," + - "\"platform\":{\"platformName\":\"xxx1\"}," + + "\"platform\":{\"platformName\":\"xxx1,platform\"}," + "\"modelInfo\":" + "{\"modelCustomizationId\":\"1da7b585-5e61-4993-b95e-8e6606c81e45\"," + "\"modelCustomizationName\":\"2017-488_PASQUALE-vPE 0\"," + diff --git a/vid-automation/src/main/java/org/onap/simulator/presetGenerator/presets/mso/PresetMSOCreateVnfALaCarteE2E.java b/vid-automation/src/main/java/org/onap/simulator/presetGenerator/presets/mso/PresetMSOCreateVnfALaCarteE2E.java new file mode 100644 index 000000000..dba42f32f --- /dev/null +++ b/vid-automation/src/main/java/org/onap/simulator/presetGenerator/presets/mso/PresetMSOCreateVnfALaCarteE2E.java @@ -0,0 +1,67 @@ +package org.onap.simulator.presetGenerator.presets.mso; + +import vid.automation.test.infra.ModelInfo; + +public class PresetMSOCreateVnfALaCarteE2E extends PresetMSOCreateVnfBase { + + private final String requestorId; + protected String lineOfBusinessName; + protected final ModelInfo serviceModelInfo; + + public PresetMSOCreateVnfALaCarteE2E( + String overrideRequestId, + String serviceInstanceId, + String vnfInstanceId, + String lineOfBusinessName, + String requestorId, + ModelInfo serviceModelInfo) { + super(overrideRequestId, serviceInstanceId, vnfInstanceId); + this.lineOfBusinessName = lineOfBusinessName; + this.requestorId = requestorId; + this.serviceModelInfo = serviceModelInfo; + } + + @Override + public Object getRequestBody() { + return "{" + + " \"requestDetails\": {" + + " \"modelInfo\": {" + + " \"modelCustomizationName\": \"vOCG_1804_VF 0\"," + + " \"modelCustomizationId\": \"e9ed1da0-c078-426a-8e84-6f4e85eace59\"," + + " \"modelInvariantId\": \"db23d71a-4cb4-4030-9c9b-e3f886c2b35c\"," + + " \"modelVersionId\": \"aca3f7b1-15f9-45a5-b182-b8b5aca84a76\"," + + " \"modelName\": \"vOCG_1804_VF\"," + + " \"modelType\": \"vnf\"," + + " \"modelVersion\": \"4.0\"" + + " }," + + " \"cloudConfiguration\": {" + + " \"lcpCloudRegionId\": \"some legacy region\"," + + addCloudOwnerIfNeeded() + + " \"tenantId\": \"092eb9e8e4b7412e8787dd091bc58e86\"" + + " }," + + " \"requestInfo\": {" + + " \"source\": \"VID\"," + + " \"suppressRollback\": false," + + " \"requestorId\": \""+requestorId+"\"" + + " }," + + " \"platform\": {" + + " \"platformName\": \"platform\"" + + " }," + + " \"lineOfBusiness\": {" + + " \"lineOfBusinessName\": \""+lineOfBusinessName+"\"" + + " }," + + " \"relatedInstanceList\": [{" + + " \"relatedInstance\": {" + + serviceModelInfo.createMsoModelInfo() + + " \"instanceId\": \""+serviceInstanceId+"\"" + + " }" + + " }" + + " ]," + + " \"requestParameters\": {" + + " \"userParams\": []," + + " \"testApi\": \"VNF_API\"" + + " }" + + " }" + + "}"; + } +} diff --git a/vid-automation/src/main/java/org/onap/vid/api/AsyncInstantiationBase.java b/vid-automation/src/main/java/org/onap/vid/api/AsyncInstantiationBase.java index 66bde727e..5e1310535 100644 --- a/vid-automation/src/main/java/org/onap/vid/api/AsyncInstantiationBase.java +++ b/vid-automation/src/main/java/org/onap/vid/api/AsyncInstantiationBase.java @@ -1,8 +1,34 @@ package org.onap.vid.api; +import static java.lang.Boolean.FALSE; +import static java.lang.Boolean.TRUE; +import static java.util.Collections.emptyList; +import static java.util.stream.Collectors.joining; +import static java.util.stream.Collectors.toMap; +import static org.hamcrest.CoreMatchers.hasItem; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.containsInAnyOrder; +import static org.hamcrest.Matchers.hasSize; +import static org.onap.simulator.presetGenerator.presets.mso.PresetMSOServiceInstanceGen2WithNames.Keys; +import static org.testng.Assert.assertNotNull; +import static org.testng.AssertJUnit.assertEquals; +import static org.testng.AssertJUnit.assertTrue; +import static vid.automation.test.utils.ExtendedHamcrestMatcher.hasItemsFromCollection; + import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; import com.google.common.util.concurrent.Uninterruptibles; +import java.time.Instant; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.UUID; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicReference; +import java.util.function.Predicate; +import java.util.stream.Collectors; +import java.util.stream.IntStream; +import java.util.stream.Stream; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.builder.ReflectionToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; @@ -38,33 +64,6 @@ import vid.automation.test.model.ServiceAction; import vid.automation.test.services.AsyncJobsService; import vid.automation.test.services.SimulatorApi; -import java.time.Instant; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.UUID; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicReference; -import java.util.function.Predicate; -import java.util.stream.Collectors; -import java.util.stream.IntStream; -import java.util.stream.Stream; - -import static java.lang.Boolean.FALSE; -import static java.lang.Boolean.TRUE; -import static java.util.Collections.emptyList; -import static java.util.stream.Collectors.joining; -import static java.util.stream.Collectors.toMap; -import static org.hamcrest.CoreMatchers.hasItem; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.containsInAnyOrder; -import static org.hamcrest.Matchers.hasSize; -import static org.onap.simulator.presetGenerator.presets.mso.PresetMSOServiceInstanceGen2WithNames.Keys; -import static org.testng.Assert.assertNotNull; -import static org.testng.AssertJUnit.assertEquals; -import static org.testng.AssertJUnit.assertTrue; -import static vid.automation.test.utils.ExtendedHamcrestMatcher.hasItemsFromCollection; - public class AsyncInstantiationBase extends BaseMsoApiTest { public static final String CREATE_BULK_OF_ALACARTE_REQUEST_WITH_VNF = "asyncInstantiation/vidRequestCreateALaCarteWithVnf.json"; @@ -507,7 +506,7 @@ public class AsyncInstantiationBase extends BaseMsoApiTest { .filter(serviceInfo -> serviceInfo.jobId.equals(jobId)) .findFirst().orElse(null); Assert.assertNotNull(serviceInfoFromDB); - Assert.assertEquals(serviceInfoDataReflected(expectedServiceInfo), serviceInfoDataReflected(serviceInfoFromDB)); + Assert.assertEquals(serviceInfoDataReflected(serviceInfoFromDB), serviceInfoDataReflected(expectedServiceInfo)); assertTrue("actual service instance doesn't contain template service name:" + expectedServiceInfo.serviceInstanceName, serviceInfoFromDB.serviceInstanceName.contains(expectedServiceInfo.serviceInstanceName)); diff --git a/vid-automation/src/main/java/org/onap/vid/api/BaseApiTest.java b/vid-automation/src/main/java/org/onap/vid/api/BaseApiTest.java index 3778e4b16..4819b813f 100644 --- a/vid-automation/src/main/java/org/onap/vid/api/BaseApiTest.java +++ b/vid-automation/src/main/java/org/onap/vid/api/BaseApiTest.java @@ -8,7 +8,6 @@ import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.isEmptyOrNullString; import static org.hamcrest.Matchers.not; -//import com.automation.common.report_portal_integration.listeners.ReportPortalListener; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; @@ -21,7 +20,6 @@ import java.util.Properties; import java.util.Random; import java.util.TimeZone; import javax.ws.rs.client.Client; -import javax.ws.rs.client.ClientBuilder; import org.apache.commons.io.IOUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -39,6 +37,7 @@ import vid.automation.reportportal.ReportPortalListenerDelegator; import vid.automation.test.infra.FeaturesTogglingConfiguration; import vid.automation.test.services.UsersService; import vid.automation.test.utils.CookieAndJsonHttpHeadersInterceptor; +import vid.automation.test.utils.InsecureHttpsClient; @Listeners(ReportPortalListenerDelegator.class) public class BaseApiTest { @@ -51,16 +50,16 @@ public class BaseApiTest { @SuppressWarnings("WeakerAccess") protected Client client; protected Random random; - protected final RestTemplate restTemplate = new RestTemplate(); + protected final RestTemplate restTemplate = InsecureHttpsClient.newRestTemplate(); protected final UsersService usersService = new UsersService(); - protected final RestTemplate restTemplateErrorAgnostic = new RestTemplate(); + protected final RestTemplate restTemplateErrorAgnostic = InsecureHttpsClient.newRestTemplate(); @BeforeClass public void init() { uri = getUri(); objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); - client = ClientBuilder.newClient(); + client = InsecureHttpsClient.newJaxrsClient(); client.property(ClientProperties.SUPPRESS_HTTP_COMPLIANCE_VALIDATION, true); random = new Random(System.currentTimeMillis()); FeaturesTogglingConfiguration.initializeFeatureManager(); @@ -69,7 +68,8 @@ public class BaseApiTest { private URI getUri() { String host = System.getProperty("VID_HOST", "127.0.0.1"); int port = Integer.valueOf(System.getProperty("VID_PORT", "8080")); - return new JerseyUriBuilder().host(host).port(port).scheme("http").path("vid").build(); + String protocol = System.getProperty("VID_PROTOCOL", "http"); + return new JerseyUriBuilder().host(host).port(port).scheme(protocol).path("vid").build(); } public void login() { @@ -77,9 +77,20 @@ public class BaseApiTest { } public void login(UserCredentials userCredentials) { + final List<ClientHttpRequestInterceptor> interceptors = loginWithChosenRESTClient(userCredentials, restTemplate); + restTemplateErrorAgnostic.setInterceptors(interceptors); + restTemplateErrorAgnostic.setErrorHandler(new DefaultResponseErrorHandler() { + @Override + public boolean hasError(ClientHttpResponse response) { + return false; + } + }); + } + + public List<ClientHttpRequestInterceptor> loginWithChosenRESTClient(UserCredentials userCredentials,RestTemplate givenRestTemplate) { final List<ClientHttpRequestInterceptor> interceptors = singletonList(new CookieAndJsonHttpHeadersInterceptor(getUri(), userCredentials)); - restTemplate.setInterceptors(interceptors); - restTemplate.setErrorHandler(new DefaultResponseErrorHandler() { + givenRestTemplate.setInterceptors(interceptors); + givenRestTemplate.setErrorHandler(new DefaultResponseErrorHandler() { @Override public void handleError(ClientHttpResponse response) throws IOException { try { @@ -90,14 +101,7 @@ public class BaseApiTest { } } }); - - restTemplateErrorAgnostic.setInterceptors(interceptors); - restTemplateErrorAgnostic.setErrorHandler(new DefaultResponseErrorHandler() { - @Override - public boolean hasError(ClientHttpResponse response) { - return false; - } - }); + return interceptors; } diff --git a/vid-automation/src/main/java/vid/automation/test/Constants.java b/vid-automation/src/main/java/vid/automation/test/Constants.java index 689c46387..7256f0a2e 100644 --- a/vid-automation/src/main/java/vid/automation/test/Constants.java +++ b/vid-automation/src/main/java/vid/automation/test/Constants.java @@ -303,7 +303,7 @@ public class Constants { }}; } - public static final String CREATE_SERVICE_INSTANCE_MACRO_MODAL = "Set a new service instance"; + } @@ -506,6 +506,7 @@ public class Constants { public static final String PROJECT_SELECT_TEST_ID = "project"; public static final String OWNING_ENTITY_SELECT_TEST_ID = "owningEntity"; public static final String PLATFORM_SELECT_TEST_ID = "platform"; + public static final String PLATFORM_MULTI_SELECT_TEST_ID = "multi-selectPlatform"; public static final String LOB_SELECT_TEST_ID = "lineOfBusiness"; } diff --git a/vid-automation/src/main/java/vid/automation/test/infra/Features.java b/vid-automation/src/main/java/vid/automation/test/infra/Features.java index 329bb4a89..289151b88 100644 --- a/vid-automation/src/main/java/vid/automation/test/infra/Features.java +++ b/vid-automation/src/main/java/vid/automation/test/infra/Features.java @@ -5,8 +5,6 @@ import org.togglz.core.context.FeatureContext; public enum Features implements Feature { - CREATE_INSTANCE_TEST, - EMPTY_DRAWING_BOARD_TEST, FLAG_ADD_MSO_TESTAPI_FIELD, FLAG_SERVICE_MODEL_CACHE, FLAG_NETWORK_TO_ASYNC_INSTANTIATION, @@ -14,8 +12,6 @@ public enum Features implements Feature { FLAG_UNASSIGN_SERVICE, FLAG_FABRIC_CONFIGURATION_ASSIGNMENTS, FLAG_SHOW_VERIFY_SERVICE, - FLAG_DEFAULT_VNF, - FLAG_SETTING_DEFAULTS_IN_DRAWING_BOARD, FLAG_RESTRICTED_SELECT, FLAG_5G_IN_NEW_INSTANTIATION_UI, FLAG_ASYNC_ALACARTE_VNF, @@ -27,7 +23,6 @@ public enum Features implements Feature { FLAG_ENABLE_WEBPACK_MODERN_UI, FLAG_1810_CR_LET_SELECTING_COLLECTOR_TYPE_UNCONDITIONALLY, FLAG_1810_CR_ADD_CLOUD_OWNER_TO_MSO_REQUEST, - FLAG_1810_CR_SOFT_DELETE_ALACARTE_VF_MODULE, FLAG_1810_AAI_LOCAL_CACHE, FLAG_1810_IDENTIFY_SERVICE_FOR_NEW_UI, FLAG_1902_NEW_VIEW_EDIT, @@ -55,7 +50,11 @@ public enum Features implements Feature { FLAG_FLASH_REDUCED_RESPONSE_CHANGEMG, FLAG_FLASH_CLOUD_REGION_AND_NF_ROLE_OPTIONAL_SEARCH, FLAG_1911_INSTANTIATION_ORDER_IN_ASYNC_ALACARTE, - FLAG_1911_INSTANTIATION_ORDER_BUTTON_IN_ASYNC_ALACARTE + FLAG_2002_ANY_ALACARTE_BESIDES_EXCLUDED_NEW_INSTANTIATION_UI, + FLAG_2002_VNF_PLATFORM_MULTI_SELECT, + FLAG_2002_VFM_UPGRADE_ADDITIONAL_OPTIONS, + FLAG_2002_IDENTIFY_INVARIANT_MACRO_UUID_BY_BACKEND, + FLAG_2004_TEMP_BUTTON_TO_INSTANTIATION_STATUS_FILTER, ; public boolean isActive() { diff --git a/vid-automation/src/main/java/vid/automation/test/infra/Get.java b/vid-automation/src/main/java/vid/automation/test/infra/Get.java index 9bcad7b64..1e0c94844 100644 --- a/vid-automation/src/main/java/vid/automation/test/infra/Get.java +++ b/vid-automation/src/main/java/vid/automation/test/infra/Get.java @@ -97,6 +97,9 @@ public class Get { return GeneralUIUtils.getSelectedElementFromDropDown(dataTestId).getText(); } + public static Boolean isOptionSelectedInMultiSelect(String dataTestId, String option) { + return GeneralUIUtils.isOptionSelectedInMultiSelect(dataTestId, option); + } public static List<WebElement> byClass(String className) { return GeneralUIUtils.getWebElementsListByContainsClassName(className); diff --git a/vid-automation/src/main/java/vid/automation/test/infra/ModelInfo.java b/vid-automation/src/main/java/vid/automation/test/infra/ModelInfo.java index 59e48013c..546b80b05 100644 --- a/vid-automation/src/main/java/vid/automation/test/infra/ModelInfo.java +++ b/vid-automation/src/main/java/vid/automation/test/infra/ModelInfo.java @@ -2,9 +2,8 @@ package vid.automation.test.infra; import com.google.common.collect.ImmutableList; -public class ModelInfo { - public final String modelVersionId; //aka model uuid - public final String modelInvariantId; +public class ModelInfo extends ModelInfoBase { + public final String zipFileName; public static class ModelInfoWithMultipleVersions { @@ -32,8 +31,11 @@ public class ModelInfo { } public ModelInfo(String modelVersionId, String modelInvariantId, String zipFileName) { - this.modelVersionId = modelVersionId; - this.modelInvariantId = modelInvariantId; + this(modelVersionId, modelInvariantId, zipFileName, null, null); + } + + public ModelInfo(String modelVersionId, String modelInvariantId, String zipFileName, String modelName, String modelVersion) { + super(modelVersionId, modelInvariantId, modelName, modelVersion, "service"); this.zipFileName = zipFileName; } @@ -50,16 +52,22 @@ public class ModelInfo { public static final ModelInfo macroSriovNoDynamicFieldsEcompNamingFalseFullModelDetails = new ModelInfo ("1a80c596-27e5-4ca9-b5bb-e03a7fd4c0fd", "cdb90b57-ed78-4d44-a5b4-7f43a02ec632", "csar-noDynamicFields-ecompNamingFalse-fullModelDetails-1a80c596.zip"); public static final ModelInfo macroSriovWithDynamicFieldsEcompNamingFalsePartialModelDetailsVnfEcompNamingFalse = new ModelInfo("6b528779-44a3-4472-bdff-9cd15ec93450", "e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0" , "csar-withDynamicFields-ecompNamingFalse-partialModelDetails-vnfEcompNamingFalse.zip"); public static final ModelInfo macroSriovNoDynamicFieldsEcompNamingFalseFullModelDetailsVnfEcompNamingFalse = new ModelInfo("4a80c596-27e5-4ca9-b5bb-e03a7fd4c0fd", "4140a873-00bb-4f57-ac46-0494cc9e674a", "csar-noDynamicFields-ecompNamingFalse-fullModelDetails-1a80c596-vnfEcompNamingFalse.zip"); - public static final ModelInfo aLaCarteNetworkProvider5G = new ModelInfo("4659e8bd-0920-4eed-8ec5-550b4c8dceeb", "16e56d12-40b3-4db1-a40e-d48c36679e2e", "service-SrIovProvider1-csar.zip"); + public static final ModelInfo aLaCarteNetworkProvider5G = new ModelInfo("4659e8bd-0920-4eed-8ec5-550b4c8dceeb", "16e56d12-40b3-4db1-a40e-d48c36679e2e", "service-SrIovProvider1-csar.zip", "SR-IOV Provider-1", "1.0"); public static final ModelInfo pasqualeVmxVpeBvService488Annotations = new ModelInfo("f4d84bb4-a416-4b4e-997e-0059973630b9", "598e3f9e-3244-4d8f-a8e0-0e5d7a29eda9", "service-PasqualeVmxVpeBvService488-csar-annotations.zip"); public static final ModelInfo macroDrawingBoardComplexService = new ModelInfo("6e59c5de-f052-46fa-aa7e-2fca9d674c44","cfef8302-d90f-475f-87cc-3f49a62ef14c", "service-Complexservice-csar.zip" ); public static final ModelInfo aLaCarteServiceCreationTest = new ModelInfo("f913c5d0-206e-45c2-9284-1c68f4e67dc7", "45e61192-876c-4e28-9139-5a0c47410379", "serviceCreationTest.zip"); + public static final ModelInfo aLaCarteServiceCreationNewUI = new ModelInfo("f3862254-8df2-4a0a-8137-0a9fe985860c", "d1068db8-b933-4919-8972-8bc1aed366c8", "service-Vocg1804Svc.zip", "vOCG_1804_SVC", "1.0"); + public static final ModelInfo aLaCarteServiceOldVersionTest = new ModelInfo("04743c62-ab58-41a0-bc53-1052ef1c094a", "5d353b28-e5b7-419b-98e8-cad5d258be13", "serviceCreationTest04743c62-ab58-41a0-bc53-1052ef1c094a.zip"); public static final ModelInfo aLaCarteVnfGroupingService = new ModelInfo("4117a0b6-e234-467d-b5b9-fe2f68c8b0fc", "7ee41ce4-4827-44b0-a48e-2707a59905d2", "csar15782222_instantiationTypeAlacarte_VnfGrouping.zip"); public static final ModelInfo serviceFabricSriovService = new ModelInfo("253f1467-fe68-4e80-ba71-308000caec31", "c15fe228-7d40-4f99-afa7-10abeedf9aac", "service-fabric-SriovService-csar.zip"); public static final ModelInfo infrastructureVpnService = new ModelInfo("f028b2e2-7080-4b13-91b2-94944d4c42d8", "dfc2c44c-2429-44ca-ae26-1e6dc1f207fb", "service-Infravpn-csar.zip"); public static final ModelInfo collectionResourceService = new ModelInfo("abd0cb02-5f97-42cd-be93-7dd3e31a6a64", "04bdd793-32ed-4045-adea-4e096304a067", "csar_collection_resource.zip"); public static final ModelInfo collectionResourceForResume = new ModelInfo("6e0bec91-09f3-43aa-9cf3-e617cd0146be", "f6342be5-d66b-4d03-a1aa-c82c3094c4ea", "csar_collection_resource_for_resume.zip"); public static final ModelInfo transportWithPnfsService = new ModelInfo("12550cd7-7708-4f53-a09e-41d3d6327ebc", "561faa57-7bbb-40ec-a81c-c0d4133e98d4", "csarTransportWithPnfs.zip"); + public static final ModelInfo serviceWithInstantiationTypeMacro = new ModelInfo( + "fca0674c-f825-44bc-a87f-41ba7a0b4ab7", + "44173a37-0fce-486b-84be-40582bf3e40b", + "csar15782222_instantiationTypeMacro_invariantUUIDAlacarte_withoutNetworks.zip"); public static final ImmutableList<ModelInfo> superSetOfModelInfos = buildModelInfos(); public static ImmutableList<ModelInfo> buildModelInfos() { @@ -81,8 +89,11 @@ public class ModelInfo { .add(transportWithPnfsService) .add(collectionResourceService) .add(collectionResourceForResume) + .add(aLaCarteServiceCreationNewUI) + .add(serviceWithInstantiationTypeMacro) .build(); } + } diff --git a/vid-automation/src/main/java/vid/automation/test/infra/ModelInfoBase.java b/vid-automation/src/main/java/vid/automation/test/infra/ModelInfoBase.java new file mode 100644 index 000000000..e26339667 --- /dev/null +++ b/vid-automation/src/main/java/vid/automation/test/infra/ModelInfoBase.java @@ -0,0 +1,34 @@ +package vid.automation.test.infra; + +public class ModelInfoBase { + + public final String modelVersionId; //aka model uuid + public final String modelInvariantId; + public final String modelName; + public final String modelVersion; + public final String resourceType; + + public ModelInfoBase(String modelVersionId, String modelInvariantId, String modelName, String modelVersion, String resourceType) { + this.modelVersionId = modelVersionId; + this.modelInvariantId = modelInvariantId; + this.modelName = modelName; + this.modelVersion = modelVersion; + this.resourceType = resourceType; + } + + public String createMsoModelInfo() { + return + " \"modelInfo\": {" + + " \"modelInvariantId\": \""+modelInvariantId+"\"," + + " \"modelVersionId\": \""+modelVersionId+"\"," + + " \"modelName\": \""+modelName+"\"," + + " \"modelType\": \""+resourceType+"\"," + + addAdditionalFields() + + " \"modelVersion\": \""+modelVersion+"\"" + + " },"; + } + + protected String addAdditionalFields() { + return ""; + } +} diff --git a/vid-automation/src/main/java/vid/automation/test/infra/ModelInfoWithCustomization.java b/vid-automation/src/main/java/vid/automation/test/infra/ModelInfoWithCustomization.java new file mode 100644 index 000000000..8ee690f7c --- /dev/null +++ b/vid-automation/src/main/java/vid/automation/test/infra/ModelInfoWithCustomization.java @@ -0,0 +1,20 @@ +package vid.automation.test.infra; + +public class ModelInfoWithCustomization extends ModelInfoBase { + + public final String modelCustomizationName; + public final String modelCustomizationId; + + public ModelInfoWithCustomization(String modelVersionId, String modelInvariantId, String modelName, String modelVersion, String resourceType, + String modelCustomizationName, String modelCustomizationId) { + super(modelVersionId, modelInvariantId, modelName, modelVersion, resourceType); + this.modelCustomizationName = modelCustomizationName; + this.modelCustomizationId = modelCustomizationId; + } + + @Override + protected String addAdditionalFields() { + return "\"modelCustomizationName\": \""+modelCustomizationName+"\"," + + "\"modelCustomizationId\": \""+modelCustomizationId+"\","; + } +} diff --git a/vid-automation/src/main/java/vid/automation/test/infra/SelectOption.java b/vid-automation/src/main/java/vid/automation/test/infra/SelectOption.java index cd766c5bf..096ff47d9 100644 --- a/vid-automation/src/main/java/vid/automation/test/infra/SelectOption.java +++ b/vid-automation/src/main/java/vid/automation/test/infra/SelectOption.java @@ -67,14 +67,29 @@ public class SelectOption { } public static void selectOptionsFromMultiselectById(String multiSelectId, List<String> options) { - Click.byId(multiSelectId); - try { - Thread.sleep(1000); - } catch (InterruptedException e) { - throw new RuntimeException(e); + WebElement multiselectComponent = Get.byXpath("//*[@data-tests-id='" + multiSelectId +"']//div[contains(@class, 'c-btn')]"); + if(multiselectComponent != null){ + multiselectComponent.click(); + try { + Thread.sleep(1000); + for(String option:options) { + String multiSelectOptionPath = "//label[@data-tests-id='" + multiSelectId + "-" + option + "']"; + WebElement multiSelelctOption = Get.byXpath(multiSelectOptionPath); + if(multiSelelctOption != null){ + multiSelelctOption.click(); + } + } + multiselectComponent.click(); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } } - for(String option:options) { - Click.byClassAndVisibleText(Constants.MULTI_SELECT_UNSELECTED_CLASS, option); + } + + public static void selectFirstOptionsFromMultiselect(String multiSelectId){ + WebElement multiSelectOption = Get.byXpath("//*[@data-tests-id='" + multiSelectId +"']//label[contains(@class, 'multiSelectOption')]"); + if(multiSelectOption != null){ + SelectOption.selectOptionsFromMultiselectById(multiSelectId, ImmutableList.of(multiSelectOption.getText())); } } } diff --git a/vid-automation/src/main/java/vid/automation/test/sections/DeployMacroDialogBase.java b/vid-automation/src/main/java/vid/automation/test/sections/DeployMacroDialogBase.java deleted file mode 100644 index 270f53e97..000000000 --- a/vid-automation/src/main/java/vid/automation/test/sections/DeployMacroDialogBase.java +++ /dev/null @@ -1,12 +0,0 @@ -package vid.automation.test.sections; - -public abstract class DeployMacroDialogBase extends VidBasePage { - - public abstract void assertTitle(); - public abstract void closeDialog(); - public abstract void assertDialogExists(); - public abstract void clickOwningEntitySelect(); - public abstract void clickProjectSelect(); - - -} diff --git a/vid-automation/src/main/java/vid/automation/test/sections/InstantiationStatusPage.java b/vid-automation/src/main/java/vid/automation/test/sections/InstantiationStatusPage.java index 1bb095fda..4bd380841 100644 --- a/vid-automation/src/main/java/vid/automation/test/sections/InstantiationStatusPage.java +++ b/vid-automation/src/main/java/vid/automation/test/sections/InstantiationStatusPage.java @@ -1,5 +1,16 @@ package vid.automation.test.sections; +import static java.util.stream.Collectors.toMap; +import static org.hamcrest.CoreMatchers.containsString; +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.testng.Assert.assertEquals; + +import java.nio.charset.Charset; +import java.util.List; +import java.util.Map; +import java.util.function.Consumer; +import java.util.stream.Collectors; import org.apache.http.NameValuePair; import org.apache.http.client.utils.URLEncodedUtils; import org.onap.sdc.ci.tests.utilities.GeneralUIUtils; @@ -10,20 +21,9 @@ import org.openqa.selenium.support.ui.WebDriverWait; import vid.automation.test.Constants; import vid.automation.test.infra.Click; import vid.automation.test.infra.Get; +import vid.automation.test.infra.Input; import vid.automation.test.infra.Wait; -import java.nio.charset.Charset; -import java.util.List; -import java.util.Map; -import java.util.function.Consumer; -import java.util.stream.Collectors; - -import static java.util.stream.Collectors.toMap; -import static org.hamcrest.CoreMatchers.containsString; -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.testng.Assert.assertEquals; - public abstract class InstantiationStatusPage extends VidBasePage { public static final String refreshButtonId = "refresh-btn"; @@ -40,6 +40,11 @@ public abstract class InstantiationStatusPage extends VidBasePage { return wait.until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.xpath("//*[table]//tbody/tr"))).size(); } + public static void verifyInstantiationStatusFilterValue(String serviceModelId) { + final String filterValue = Input.getValueByTestId("instantiation-status-filter"); + assertEquals(filterValue, serviceModelId); + } + public static WebElement assertInstantiationStatusRow(String spanIdSelector, Map<String, String> fieldsIdsAndExpected) { try { WebElement newTrRow = getInstantiationStatusRow(spanIdSelector); diff --git a/vid-automation/src/main/java/vid/automation/test/sections/deploy/DeployDialogBase.java b/vid-automation/src/main/java/vid/automation/test/sections/deploy/DeployDialogBase.java new file mode 100644 index 000000000..5101a8438 --- /dev/null +++ b/vid-automation/src/main/java/vid/automation/test/sections/deploy/DeployDialogBase.java @@ -0,0 +1,21 @@ +package vid.automation.test.sections.deploy; + +import vid.automation.test.sections.VidBasePage; + +public abstract class DeployDialogBase extends VidBasePage { + + public abstract void closeDialog(); + + public abstract void assertDialog(); + + public abstract void waitForDialogToLoad(); + + public abstract String getModelVersionId(); + + public void waitForDialogAssertAndClose() { + waitForDialogToLoad(); + assertDialog(); + closeDialog(); + } + +} diff --git a/vid-automation/src/main/java/vid/automation/test/sections/deploy/DeployModernUIALaCarteDialog.java b/vid-automation/src/main/java/vid/automation/test/sections/deploy/DeployModernUIALaCarteDialog.java new file mode 100644 index 000000000..c4338551b --- /dev/null +++ b/vid-automation/src/main/java/vid/automation/test/sections/deploy/DeployModernUIALaCarteDialog.java @@ -0,0 +1,12 @@ +package vid.automation.test.sections.deploy; + +import static org.testng.AssertJUnit.assertFalse; + +public class DeployModernUIALaCarteDialog extends DeployModernUIBase { + + @Override + public void assertDialog() { + super.assertDialog(); + assertFalse(isLcpRegionExist()); + } +} diff --git a/vid-automation/src/main/java/vid/automation/test/sections/DeployMacroDialog.java b/vid-automation/src/main/java/vid/automation/test/sections/deploy/DeployModernUIBase.java index e7288ea79..747f4ebde 100644 --- a/vid-automation/src/main/java/vid/automation/test/sections/DeployMacroDialog.java +++ b/vid-automation/src/main/java/vid/automation/test/sections/deploy/DeployModernUIBase.java @@ -1,20 +1,28 @@ -package vid.automation.test.sections; +package vid.automation.test.sections.deploy; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.containsString; import org.onap.sdc.ci.tests.utilities.GeneralUIUtils; import org.openqa.selenium.WebElement; import vid.automation.test.Constants; +import vid.automation.test.infra.Exists; +import vid.automation.test.infra.Get; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.containsString; +public abstract class DeployModernUIBase extends DeployDialogBase { -public class DeployMacroDialog extends DeployMacroDialogBase { - String dialogTitle = Constants.BrowseASDC.CREATE_SERVICE_INSTANCE_MACRO_MODAL; @Override - public void assertTitle(){ + public void waitForDialogToLoad() { + goToIframe(); + } + String dialogTitle = "Set a new service instance"; + + public void assertTitle(){ WebElement modalTitle = GeneralUIUtils.getWebElementByTestID(Constants.CREATE_MODAL_TITLE_ID, 30); assertThat(modalTitle.getText(), containsString(dialogTitle)); } + @Override public void closeDialog(){ GeneralUIUtils.ultimateWait(); @@ -23,17 +31,29 @@ public class DeployMacroDialog extends DeployMacroDialogBase { } @Override - public void assertDialogExists() { + public void assertDialog() { assertTitle(); } @Override + public String getModelVersionId() { + return Get.byTestId("model-item-value-uuid").getText(); + } + + protected boolean isLcpRegionExist() { + return Exists.byTestId(Constants.ViewEdit.LCP_REGION_SELECT_TESTS_ID); + } + public void clickOwningEntitySelect() { GeneralUIUtils.clickOnElementByTestId(Constants.OwningEntity.OWNING_ENTITY_SELECT_TEST_ID); } - @Override public void clickProjectSelect() { GeneralUIUtils.clickOnElementByTestId(Constants.OwningEntity.PROJECT_SELECT_TEST_ID); } + + public void clickPreviousInstantiationButton() { + GeneralUIUtils.clickOnElementByTestIdWithoutWait("ShowPreviousInstancesButton"); + } + } diff --git a/vid-automation/src/main/java/vid/automation/test/sections/deploy/DeployModernUIMacroDialog.java b/vid-automation/src/main/java/vid/automation/test/sections/deploy/DeployModernUIMacroDialog.java new file mode 100644 index 000000000..33b4b05ef --- /dev/null +++ b/vid-automation/src/main/java/vid/automation/test/sections/deploy/DeployModernUIMacroDialog.java @@ -0,0 +1,13 @@ +package vid.automation.test.sections.deploy; + +import static org.testng.Assert.assertTrue; + +public class DeployModernUIMacroDialog extends DeployModernUIBase { + + @Override + public void assertDialog() { + super.assertDialog(); + assertTrue(isLcpRegionExist()); + } + +} diff --git a/vid-automation/src/main/java/vid/automation/test/sections/deploy/DeployOldALaCarteDialog.java b/vid-automation/src/main/java/vid/automation/test/sections/deploy/DeployOldALaCarteDialog.java new file mode 100644 index 000000000..aad4c9fb2 --- /dev/null +++ b/vid-automation/src/main/java/vid/automation/test/sections/deploy/DeployOldALaCarteDialog.java @@ -0,0 +1,9 @@ +package vid.automation.test.sections.deploy; + +public class DeployOldALaCarteDialog extends DeployOldDialogBase { + + @Override + public String getTitle() { + return "a la carte"; + } +} diff --git a/vid-automation/src/main/java/vid/automation/test/sections/DeployMacroDialogOld.java b/vid-automation/src/main/java/vid/automation/test/sections/deploy/DeployOldDialogBase.java index e0e391b4d..59c013a09 100644 --- a/vid-automation/src/main/java/vid/automation/test/sections/DeployMacroDialogOld.java +++ b/vid-automation/src/main/java/vid/automation/test/sections/deploy/DeployOldDialogBase.java @@ -1,42 +1,42 @@ -package vid.automation.test.sections; +package vid.automation.test.sections.deploy; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.containsString; import org.junit.Assert; import org.onap.sdc.ci.tests.utilities.GeneralUIUtils; import org.openqa.selenium.WebElement; import vid.automation.test.Constants; +import vid.automation.test.infra.Get; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.containsString; - -public class DeployMacroDialogOld extends DeployMacroDialogBase { - String dialogTitle = "macro"; +public abstract class DeployOldDialogBase extends DeployDialogBase { @Override - public void assertTitle(){ - WebElement modalTitle = GeneralUIUtils.getWebElementByTestID(Constants.CREATE_MODAL_TITLE_ID, 30); - assertThat(modalTitle.getText().toLowerCase(), containsString(dialogTitle)); + public void waitForDialogToLoad() { + GeneralUIUtils.ultimateWait(); } @Override public void closeDialog(){ - GeneralUIUtils.ultimateWait(); clickCancelButtonByTestID(); } @Override - public void assertDialogExists(){ + public void assertDialog(){ + assertTitle(); boolean byText = GeneralUIUtils.findAndWaitByText(Constants.BrowseASDC.CREATE_SERVICE_INSTANCE, 15); Assert.assertTrue(byText); } - @Override - public void clickOwningEntitySelect(){ - GeneralUIUtils.clickOnElementByTestId(Constants.OwningEntity.OWNING_ENTITY_SELECT_TEST_ID); + public void assertTitle(){ + WebElement modalTitle = GeneralUIUtils.getWebElementByTestID(Constants.CREATE_MODAL_TITLE_ID, 30); + assertThat(modalTitle.getText().toLowerCase(), containsString(getTitle())); } @Override - public void clickProjectSelect(){ - GeneralUIUtils.clickOnElementByTestId(Constants.OwningEntity.PROJECT_SELECT_TEST_ID); + public String getModelVersionId() { + return Get.byTestId("Service UUID").getText(); } + public abstract String getTitle(); } diff --git a/vid-automation/src/main/java/vid/automation/test/sections/deploy/DeployOldMacroDialog.java b/vid-automation/src/main/java/vid/automation/test/sections/deploy/DeployOldMacroDialog.java new file mode 100644 index 000000000..73ae4c55a --- /dev/null +++ b/vid-automation/src/main/java/vid/automation/test/sections/deploy/DeployOldMacroDialog.java @@ -0,0 +1,9 @@ +package vid.automation.test.sections.deploy; + +public class DeployOldMacroDialog extends DeployOldDialogBase { + + @Override + public String getTitle() { + return "macro"; + } +} diff --git a/vid-automation/src/main/java/vid/automation/test/services/AsyncJobsService.java b/vid-automation/src/main/java/vid/automation/test/services/AsyncJobsService.java index 35849b481..05d6553d3 100644 --- a/vid-automation/src/main/java/vid/automation/test/services/AsyncJobsService.java +++ b/vid-automation/src/main/java/vid/automation/test/services/AsyncJobsService.java @@ -1,16 +1,18 @@ package vid.automation.test.services; import com.google.common.collect.ImmutableList; -import vid.automation.test.utils.DB_CONFIG; - import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; import java.util.List; +import vid.automation.test.utils.DB_CONFIG; public class AsyncJobsService { + private static final String MUTE_JOB_STATEMENT = + "UPDATE `vid_job` SET `TAKEN_BY`='muteAllAsyncJobs', `JOB_STATUS`=CONCAT('MUTED_', `JOB_STATUS`), `AGE`=`AGE`+5 "; + public void dropAllAsyncJobs() { runStatementsInDb(ImmutableList.of( "DELETE FROM `vid_service_info`", @@ -44,7 +46,11 @@ public class AsyncJobsService { public void muteAllAsyncJobs() { - runStatementInDb("UPDATE `vid_job` SET `TAKEN_BY`='muteAllAsyncJobs', `JOB_STATUS`=CONCAT('MUTED_', `JOB_STATUS`), `AGE`=`AGE`+5 WHERE `TAKEN_BY` is NULL or `TAKEN_BY`<>'muteAllAsyncJobs'"); + runStatementInDb(MUTE_JOB_STATEMENT + "WHERE `TAKEN_BY` is NULL or `TAKEN_BY`<>'muteAllAsyncJobs'"); + } + + public void muteAsyncJobById(String uuid) { + runStatementInDb(MUTE_JOB_STATEMENT + String.format("WHERE JOB_ID='%s'",uuid)); } public void dropAllFromNameCounter() { diff --git a/vid-automation/src/main/java/vid/automation/test/services/SimulatorApi.java b/vid-automation/src/main/java/vid/automation/test/services/SimulatorApi.java index 6e15b7b52..c8ac7ead9 100644 --- a/vid-automation/src/main/java/vid/automation/test/services/SimulatorApi.java +++ b/vid-automation/src/main/java/vid/automation/test/services/SimulatorApi.java @@ -56,17 +56,24 @@ public class SimulatorApi { public List<StringWrapper> values; } + public static class BodyWrapper { + public String value; + } + public static class HttpRequest { public StringWrapper path; + public BodyWrapper body; public List<RecordedHeaders> headers; } public static class RecordedRequests { public String path; + public String body; public Map<String, List<String>> headers; - public RecordedRequests(String path, Map<String, List<String>> headers) { + public RecordedRequests(String path, String body, Map<String, List<String>> headers) { this.path = path; + this.body = body; this.headers = headers; } @@ -82,7 +89,7 @@ public class SimulatorApi { ImmutableList.of(dropTestApiFieldFromString(), dropFieldCloudOwnerFromString()); static { - String host = System.getProperty("SIM_HOST", System.getProperty("VID_HOST", "127.0.0.1")); + String host = getSimulatorHost(); Integer port = Integer.valueOf(System.getProperty("SIM_PORT", System.getProperty("VID_PORT", "8080"))); //port for registration uri = new JerseyUriBuilder().host(host).port(port).scheme("http").path("vidSimulator").build(); client = ClientBuilder.newClient(); @@ -94,10 +101,18 @@ public class SimulatorApi { jacksonJsonProvider.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); client.register(jacksonJsonProvider); - Integer simulationPort = Integer.valueOf(System.getProperty("SIMULATION_PORT", "1080")); //port getting simulated responses + Integer simulationPort = getSimulatedResponsesPort(); simulationUri = new JerseyUriBuilder().host(host).port(simulationPort).scheme("http").build(); } + public static String getSimulatorHost() { + return System.getProperty("SIM_HOST", System.getProperty("VID_HOST", "127.0.0.1")); + } + + public static Integer getSimulatedResponsesPort() { + return Integer.valueOf(System.getProperty("SIMULATION_PORT", "1080")); + } + public static URI getSimulationUri() { return simulationUri; } @@ -180,6 +195,7 @@ public class SimulatorApi { List<HttpRequest> rawRequests = retrieveRecordedHttpRequests(); return rawRequests.stream().map(request->new RecordedRequests( request.path.value, + request.body != null && request.body != null ? request.body.value : "", request.headers.stream().collect( Collectors.toMap( x->x.name.value, diff --git a/vid-automation/src/main/java/vid/automation/test/test/BrowseASDCTest.java b/vid-automation/src/main/java/vid/automation/test/test/BrowseASDCTest.java index eb08c1f2a..f6b883ac1 100644 --- a/vid-automation/src/main/java/vid/automation/test/test/BrowseASDCTest.java +++ b/vid-automation/src/main/java/vid/automation/test/test/BrowseASDCTest.java @@ -1,49 +1,68 @@ package vid.automation.test.test; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertFalse; +import static vid.automation.test.infra.Features.FLAG_1908_COLLECTION_RESOURCE_NEW_INSTANTIATION_UI; +import static vid.automation.test.infra.Features.FLAG_2002_ANY_ALACARTE_BESIDES_EXCLUDED_NEW_INSTANTIATION_UI; +import static vid.automation.test.infra.Features.FLAG_2002_IDENTIFY_INVARIANT_MACRO_UUID_BY_BACKEND; +import static vid.automation.test.infra.Features.FLAG_2004_TEMP_BUTTON_TO_INSTANTIATION_STATUS_FILTER; +import static vid.automation.test.infra.Features.FLAG_5G_IN_NEW_INSTANTIATION_UI; +import static vid.automation.test.infra.Features.FLAG_NETWORK_TO_ASYNC_INSTANTIATION; +import static vid.automation.test.infra.Features.FLAG_SHOW_ORCHESTRATION_TYPE; +import static vid.automation.test.infra.ModelInfo.aLaCarteForBrowseSdc; +import static vid.automation.test.infra.ModelInfo.aLaCarteServiceCreationTest; +import static vid.automation.test.infra.ModelInfo.instantiationTypeAlacarte_vidNotionsInstantiationUIByUUID; +import static vid.automation.test.infra.ModelInfo.macroForBrowseSdc; +import static vid.automation.test.sections.VidBasePage.goOutFromIframe; +import static vid.automation.test.sections.VidBasePage.goToIframe; + import com.google.common.collect.ImmutableList; +import java.util.List; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.hamcrest.Matchers; +import org.jetbrains.annotations.NotNull; +import org.onap.sdc.ci.tests.datatypes.UserCredentials; +import org.onap.sdc.ci.tests.utilities.GeneralUIUtils; import org.onap.simulator.presetGenerator.presets.BasePresets.BasePreset; import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetServicesGet; import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetSubscribersGet; import org.onap.simulator.presetGenerator.presets.aai.PresetAAIServiceDesignAndCreationPut; import org.onap.simulator.presetGenerator.presets.ecompportal_att.PresetGetSessionSlotCheckIntervalGet; -import org.onap.sdc.ci.tests.datatypes.UserCredentials; -import org.onap.sdc.ci.tests.utilities.GeneralUIUtils; import org.openqa.selenium.By; import org.openqa.selenium.WebElement; import org.testng.Assert; +import org.testng.SkipException; import org.testng.annotations.BeforeClass; import org.testng.annotations.BeforeMethod; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import vid.automation.test.Constants; -import vid.automation.test.infra.*; +import vid.automation.test.infra.Click; +import vid.automation.test.infra.Exists; +import vid.automation.test.infra.FeatureTogglingTest; +import vid.automation.test.infra.Get; +import vid.automation.test.infra.ModelInfo; +import vid.automation.test.infra.SelectOption; import vid.automation.test.model.Service; import vid.automation.test.model.User; -import vid.automation.test.sections.*; +import vid.automation.test.sections.BrowseASDCPage; +import vid.automation.test.sections.InstantiationStatusPage; +import vid.automation.test.sections.SideMenu; +import vid.automation.test.sections.ViewEditPage; +import vid.automation.test.sections.deploy.DeployDialogBase; +import vid.automation.test.sections.deploy.DeployModernUIALaCarteDialog; +import vid.automation.test.sections.deploy.DeployModernUIMacroDialog; +import vid.automation.test.sections.deploy.DeployOldALaCarteDialog; +import vid.automation.test.sections.deploy.DeployOldMacroDialog; import vid.automation.test.services.ServicesService; import vid.automation.test.services.SimulatorApi; -import java.util.List; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertFalse; -import static vid.automation.test.infra.Features.FLAG_5G_IN_NEW_INSTANTIATION_UI; -import static vid.automation.test.infra.Features.FLAG_SHOW_ORCHESTRATION_TYPE; -import static vid.automation.test.infra.Features.FLAG_1908_TRANSPORT_SERVICE_NEW_INSTANTIATION_UI; -import static vid.automation.test.infra.ModelInfo.*; - public class BrowseASDCTest extends CreateInstanceDialogBaseTest { private final String invariantUUIDAlacarte = aLaCarteForBrowseSdc.modelInvariantId; private final String invariantUUIDMacro = macroForBrowseSdc.modelInvariantId; - private final String instantiationTypeNameAlacarte = "a la carte"; - private final String instantiationTypeNameMacro = "macro"; - private final String oldMacro = "old macro"; - private final String newAlacarte = "new a la carte"; public static final String modelInvariantUUID1 = "aeababbc-010b-4a60-8df7-e64c07389466"; public static final String modelInvariantUUID2 = "aa2f8e9c-9e47-4b15-a95c-4a9385599abc"; public static final String modelInvariantUUID3 = "d849c57d-b6fe-4843-8349-4ab8bbb08d71"; @@ -69,7 +88,7 @@ public class BrowseASDCTest extends CreateInstanceDialogBaseTest { return new UserCredentials(user.credentials.userId, user.credentials.password, Constants.Users.EMANUEL_EMANUEL, "", ""); } - @Test(groups = {"shouldBeMigratedToWorkWithSimulator"}) + //@Test(groups = {"shouldBeMigratedToWorkWithSimulator"}) public void testPNFOnCreatePopup() { Service service = servicesService.getService("f39389e4-2a9c-4085-8ac3-04aea9c651be"); BrowseASDCPage browseASDCPage = new BrowseASDCPage(); @@ -85,12 +104,9 @@ public class BrowseASDCTest extends CreateInstanceDialogBaseTest { validateServiceCreationDialog(service); } -// @BeforeMethod -// public void clearSimulator() { -// SimulatorApi.clearAll(); -// } - @Test(groups = {"shouldBeMigratedToWorkWithSimulator"}) + + //@Test(groups = {"shouldBeMigratedToWorkWithSimulator"}) private void testPNFMacroInstantation() throws Exception { User user = usersService.getUser(Constants.Users.EMANUEL_EMANUEL); relogin(user.credentials); @@ -126,89 +142,97 @@ public class BrowseASDCTest extends CreateInstanceDialogBaseTest { } @Test - private void browseServiceModel_deployServiceALaCarteByBackendInput_creationPopupIsALaCarte() throws Exception { + private void browseServiceModel_deployServiceALaCarteByBackendInput_creationPopupIsALaCarte() { // model uuid should be of macro deployServiceAndAssertInstantiationType( "csar15782222_instantiationTypeAlacarte_invariantUUIDMacro.zip", invariantUUIDMacro, - instantiationTypeNameAlacarte + getAlacarteDialogByFlagValue() ); } + @NotNull + public static DeployDialogBase getAlacarteDialogByFlagValue() { + return FLAG_2002_ANY_ALACARTE_BESIDES_EXCLUDED_NEW_INSTANTIATION_UI.isActive() ? + new DeployModernUIALaCarteDialog() : + new DeployOldALaCarteDialog(); + } + @Test @FeatureTogglingTest(FLAG_5G_IN_NEW_INSTANTIATION_UI) - private void browseServiceModel_deployServiceALaCarteByBackendInputHintNewUI_creationPopupIsAngular2() throws Exception { + private void browseServiceModel_deployServiceALaCarteByBackendInputHintNewUI_creationPopupIsAngular2() { deployServiceAndAssertInstantiationType( instantiationTypeAlacarte_vidNotionsInstantiationUIByUUID, - newAlacarte + new DeployModernUIALaCarteDialog() ); } @Test - private void browseServiceModel_deployServiceALaCarteBecauseNotOnMACRO_SERVICESConfig_creationPopupIsALaCarte() throws Exception { + private void browseServiceModel_deployServiceALaCarteBecauseNotOnMACRO_SERVICESConfig_creationPopupIsALaCarte() { deployServiceAndAssertInstantiationType( "csar15782222_instantiationTypeEmpty_invariantUUIDAlacarte.zip", invariantUUIDAlacarte, - instantiationTypeNameAlacarte + getAlacarteDialogByFlagValue() ); } @Test - private void browseServiceModel_deployServiceMacroByBackendInput_creationPopupIsMacro() throws Exception { + private void browseServiceModel_deployServiceMacroByBackendInput_creationPopupIsMacro() { deployServiceAndAssertInstantiationType( - "csar15782222_instantiationTypeMacro_invariantUUIDAlacarte_withoutNetworks.zip", - invariantUUIDAlacarte, - instantiationTypeNameMacro + ModelInfo.serviceWithInstantiationTypeMacro, + new DeployModernUIMacroDialog() ); } @Test - private void browseServiceModel_deployServiceMacroByMACRO_SERVICESConfig_creationPopupIsOldMacro() throws Exception { + private void browseServiceModel_deployServiceMacroByMACRO_SERVICESConfig_creationPopupIsOldMacro() { + if (FLAG_2002_ANY_ALACARTE_BESIDES_EXCLUDED_NEW_INSTANTIATION_UI.isActive() && + ! FLAG_2002_IDENTIFY_INVARIANT_MACRO_UUID_BY_BACKEND.isActive()) { + throw new SkipException("some 2002 flags shall come along together"); + } deployServiceAndAssertInstantiationType( "csar15782222_invariantUUIDMacro.zip", invariantUUIDMacro, - oldMacro - + new DeployOldMacroDialog() ); } @Test - private void browseServiceModel_deployServiceMacroWithPnf_creationPopupIsOldMacro() throws Exception { + private void browseServiceModel_deployServiceMacroWithPnf_creationPopupIsOldMacro() { deployServiceAndAssertInstantiationType( "csar15782222_instantiationTypeMacroWithPnf.zip", invariantUUIDMacro, - oldMacro - + new DeployOldMacroDialog() ); } @Test - @FeatureTogglingTest(flagActive = false, value = FLAG_1908_TRANSPORT_SERVICE_NEW_INSTANTIATION_UI) - public void browseServiceModel_deployServiceMacroWithCR_creationPopupIsOldMacro() throws Exception { + public void browseServiceModel_deployServiceMacroWithCR_creationPopupIsOldMacro() { deployServiceAndAssertInstantiationType( - "csar15782222_instantiationTypeMacroWithCR.zip", - invariantUUIDMacro, - oldMacro - + ModelInfo.collectionResourceService, + FLAG_1908_COLLECTION_RESOURCE_NEW_INSTANTIATION_UI.isActive() ? + new DeployModernUIMacroDialog() : + new DeployOldMacroDialog() ); } @Test - private void browseServiceModel_deployServiceMacroWithNetwork_creationPopupIsMacroByFF() throws Exception { - String macroInstantiationAccordingFF = Features.FLAG_NETWORK_TO_ASYNC_INSTANTIATION.isActive() ? instantiationTypeNameMacro : oldMacro; + private void browseServiceModel_deployServiceMacroWithNetwork_creationPopupIsMacroByFF() { deployServiceAndAssertInstantiationType( "csar15782222_instantiationTypeMacroWithNetwork.zip", invariantUUIDMacro, - macroInstantiationAccordingFF + FLAG_NETWORK_TO_ASYNC_INSTANTIATION.isActive() ? + new DeployModernUIMacroDialog() : + new DeployOldMacroDialog() ); } - private void deployServiceAndAssertInstantiationType(String modelZipFileName, String modelInvariantId, String expectedInstantiationType) throws Exception { - deployServiceAndAssertInstantiationType(new ModelInfo("4d71990b-d8ad-4510-ac61-496288d9078e", modelInvariantId, modelZipFileName), expectedInstantiationType); + private void deployServiceAndAssertInstantiationType(String modelZipFileName, String modelInvariantId, DeployDialogBase deployDialog) { + deployServiceAndAssertInstantiationType(new ModelInfo("4d71990b-d8ad-4510-ac61-496288d9078e", modelInvariantId, modelZipFileName), deployDialog); } - private void deployServiceAndAssertInstantiationType(ModelInfo modelInfo, String expectedInstantiationType) throws Exception { + private void deployServiceAndAssertInstantiationType(ModelInfo modelInfo, DeployDialogBase deployDialog) { registerExpectationForLegacyServiceDeployment(modelInfo, "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb"); User user = usersService.getUser(Constants.Users.EMANUEL_EMANUEL); @@ -219,19 +243,13 @@ public class BrowseASDCTest extends CreateInstanceDialogBaseTest { GeneralUIUtils.ultimateWait(); browseASDCPage.clickDeployServiceButtonByServiceUUID(modelInfo.modelVersionId); - DeployMacroDialogBase macroDialog = null; - if (expectedInstantiationType.equals(instantiationTypeNameAlacarte)) { - GeneralUIUtils.ultimateWait(); - browseASDCPage.clickCancelButtonByTestID(); - } else { //macro - macroDialog = expectedInstantiationType.equals(oldMacro) ? new DeployMacroDialogOld() : getMacroDialog(); - macroDialog.assertTitle(); - macroDialog.closeDialog(); - } + + deployDialog.waitForDialogAssertAndClose(); } + @FeatureTogglingTest(value = FLAG_2002_ANY_ALACARTE_BESIDES_EXCLUDED_NEW_INSTANTIATION_UI, flagActive = false) @Test - private void testServiceInstantiationAlaCarte() throws Exception { + private void testServiceInstantiationAlaCarte() { User user = usersService.getUser(Constants.Users.EMANUEL_EMANUEL); relogin(user.credentials); @@ -283,7 +301,10 @@ public class BrowseASDCTest extends CreateInstanceDialogBaseTest { @DataProvider public static Object[][] filterTexts() { - return new Object[][]{{serviceName},{modelInvariantId},{serviceUuid}}; + return new Object[][]{ + {serviceName}, + {modelInvariantId}, + {serviceUuid}}; } @Test(dataProvider = "filterTexts") @@ -300,15 +321,43 @@ public class BrowseASDCTest extends CreateInstanceDialogBaseTest { @Test private void testCategoryParamsDropdownsExistsInCreationDialog() throws Exception { - BrowseASDCPage browseASDCPage = registerSimulatorAndGoToBrowseSDC(); - Service service = servicesService.getService("2f80c596-27e5-4ca9-b5bb-e03a7fd4c0fd"); - browseASDCPage.clickDeployServiceButtonByServiceUUID(service.uuid); - DeployMacroDialogBase deployMacroDialog = getMacroDialog(); - deployMacroDialog.assertDialogExists(); + String serviceId = "2f80c596-27e5-4ca9-b5bb-e03a7fd4c0fd"; + + DeployModernUIMacroDialog deployMacroDialog = getDeployModernUIMacroDialog(serviceId); + deployMacroDialog.assertDialog(); deployMacroDialog.clickProjectSelect(); deployMacroDialog.clickOwningEntitySelect(); } + private DeployModernUIMacroDialog getDeployModernUIMacroDialog(String serviceId) { + BrowseASDCPage browseASDCPage = registerSimulatorAndGoToBrowseSDC(); + Service service = servicesService.getService(serviceId); + browseASDCPage.clickDeployServiceButtonByServiceUUID(service.uuid); + DeployModernUIMacroDialog deployMacroDialog = new DeployModernUIMacroDialog(); + deployMacroDialog.waitForDialogToLoad(); + return deployMacroDialog; + } + + @Test + @FeatureTogglingTest(FLAG_2004_TEMP_BUTTON_TO_INSTANTIATION_STATUS_FILTER) + public void testClickPreviousInstantiationsInCreationDialog() { + try { + String serviceId = "2f80c596-27e5-4ca9-b5bb-e03a7fd4c0fd"; + DeployModernUIMacroDialog deployMacroDialog = getDeployModernUIMacroDialog(serviceId); + deployMacroDialog.clickPreviousInstantiationButton(); + + //exit form deploy dialog + goOutFromIframe(); + //go into Instantiation Status page + goToIframe(); + + InstantiationStatusPage.verifyInstantiationStatusFilterValue(serviceId); + } + finally { + goOutFromIframe(); + } + } + private BrowseASDCPage registerSimulatorAndGoToBrowseSDC() { SimulatorApi.registerExpectation(SimulatorApi.RegistrationStrategy.CLEAR_THEN_SET, "ecompportal_getSessionSlotCheckInterval.json", @@ -324,7 +373,7 @@ public class BrowseASDCTest extends CreateInstanceDialogBaseTest { return new BrowseASDCPage(); } - @Test(groups = {"shouldBeMigratedToWorkWithSimulator"}) + //@Test(groups = {"shouldBeMigratedToWorkWithSimulator"}) private void testOwningEntityRequiredAndProjectOptional() throws Exception { User user = usersService.getUser(Constants.Users.SILVIA_ROBBINS_TYLER_SILVIA); relogin(user.credentials); @@ -358,7 +407,7 @@ public class BrowseASDCTest extends CreateInstanceDialogBaseTest { assertSuccessfulServiceInstanceCreation(); } - @Test(groups = {"shouldBeMigratedToWorkWithSimulator"}) + //@Test(groups = {"shouldBeMigratedToWorkWithSimulator"}) protected void testLineOfBusinessOptionalAndPlatformRequired() throws Exception { User user = usersService.getUser(Constants.Users.SILVIA_ROBBINS_TYLER_SILVIA); @@ -404,8 +453,7 @@ public class BrowseASDCTest extends CreateInstanceDialogBaseTest { browseASDCPage.clickConfirmButton(); GeneralUIUtils.findAndWaitByText("Missing data", 5); - - Click.onFirstSelectOptionById(Constants.OwningEntity.PLATFORM_SELECT_TEST_ID); + SelectOption.selectFirstTwoOptionsFromMultiselectById("multi-selectPlatform"); viewEditPage.clickConfirmButton(); assertSuccessfulVNFCreation(); diff --git a/vid-automation/src/main/java/vid/automation/test/test/CreateNewInstanceTest.java b/vid-automation/src/main/java/vid/automation/test/test/CreateNewInstanceTest.java index b57d18789..be96e6992 100644 --- a/vid-automation/src/main/java/vid/automation/test/test/CreateNewInstanceTest.java +++ b/vid-automation/src/main/java/vid/automation/test/test/CreateNewInstanceTest.java @@ -1,11 +1,12 @@ package vid.automation.test.test; +import java.io.IOException; +import java.util.List; import org.onap.sdc.ci.tests.utilities.GeneralUIUtils; import org.openqa.selenium.WebElement; import org.testng.Assert; import org.testng.annotations.Test; import vid.automation.test.Constants; -import vid.automation.test.infra.Features; import vid.automation.test.infra.Get; import vid.automation.test.infra.SelectOption; import vid.automation.test.model.Service; @@ -16,24 +17,15 @@ import vid.automation.test.services.BulkRegistration; import vid.automation.test.services.ServicesService; import vid.automation.test.services.SimulatorApi; -import java.io.IOException; -import java.util.List; - public class CreateNewInstanceTest extends CreateInstanceDialogBaseTest { private ServicesService servicesService = new ServicesService(); public CreateNewInstanceTest() throws IOException { } - @Test + @Test(groups = { "underDevelopment" }) private void testCreateNewServiceInstance() throws Exception { - if (!Features.CREATE_INSTANCE_TEST.isActive()) { - - // time bomb, as it fails on pipeline and I don't know how to fix it - return; - } - SimulatorApi.clearAll(); BulkRegistration.createNewServiceInstance("SILVIA ROBBINS"); diff --git a/vid-automation/src/main/java/vid/automation/test/test/EnvironmentsTest.java b/vid-automation/src/main/java/vid/automation/test/test/EnvironmentsTest.java index 03378b615..962a1de53 100644 --- a/vid-automation/src/main/java/vid/automation/test/test/EnvironmentsTest.java +++ b/vid-automation/src/main/java/vid/automation/test/test/EnvironmentsTest.java @@ -1,6 +1,13 @@ package vid.automation.test.test; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import static vid.automation.test.Constants.TestEnvironments.REFRESH_BUTTON; + import com.google.common.collect.ImmutableMap; +import java.util.List; +import java.util.Map; import org.junit.Assert; import org.onap.sdc.ci.tests.utilities.GeneralUIUtils; import org.openqa.selenium.WebElement; @@ -9,7 +16,13 @@ import org.testng.annotations.BeforeMethod; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import vid.automation.test.Constants; -import vid.automation.test.infra.*; +import vid.automation.test.infra.Click; +import vid.automation.test.infra.Exists; +import vid.automation.test.infra.Features; +import vid.automation.test.infra.Get; +import vid.automation.test.infra.Input; +import vid.automation.test.infra.SelectOption; +import vid.automation.test.infra.Wait; import vid.automation.test.model.Environment; import vid.automation.test.sections.SideMenu; import vid.automation.test.sections.TestEnvironmentPage; @@ -17,12 +30,6 @@ import vid.automation.test.sections.VidBasePage; import vid.automation.test.services.SimulatorApi; import vid.automation.test.utils.ReadFile; -import java.util.List; -import java.util.Map; - -import static org.junit.Assert.*; -import static vid.automation.test.Constants.TestEnvironments.REFRESH_BUTTON; - /* @@ -349,7 +356,7 @@ public class EnvironmentsTest extends VidBaseTestCase { } @Test - public void testApplicationEnvironmentActivationBadManifestStructure() throws Exception { + public void testApplicationEnvironmentActivationBadManifestStructure() { testApplicationEnvironmentActivationBadManifestStructure("bad_manifest_structure.json", "Manifest structure is wrong"); testApplicationEnvironmentActivationBadManifestStructure("manifest_with_wrong_recovery_action.json", "Wrong value for RecoveryAction in manifest. Allowed options are: abort, retry, skip. Wrong value is: leave"); diff --git a/vid-automation/src/main/java/vid/automation/test/test/HealthStatusTest.java b/vid-automation/src/main/java/vid/automation/test/test/HealthStatusTest.java index 2bb97aa2e..b8f90c22d 100644 --- a/vid-automation/src/main/java/vid/automation/test/test/HealthStatusTest.java +++ b/vid-automation/src/main/java/vid/automation/test/test/HealthStatusTest.java @@ -1,30 +1,27 @@ package vid.automation.test.test; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.containsString; +import static org.hamcrest.Matchers.equalTo; +import static vid.automation.test.services.SimulatorApi.RegistrationStrategy.CLEAR_THEN_SET; + import com.fasterxml.jackson.databind.ObjectMapper; import com.google.common.collect.ImmutableList; +import java.io.IOException; +import java.util.Collection; +import java.util.Map; +import org.onap.sdc.ci.tests.utilities.GeneralUIUtils; import org.onap.simulator.presetGenerator.presets.BasePresets.BasePreset; import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetSubscribersGet; import org.onap.simulator.presetGenerator.presets.ecompportal_att.PresetGetSessionSlotCheckIntervalGet; -import org.onap.sdc.ci.tests.utilities.GeneralUIUtils; import org.openqa.selenium.remote.RemoteWebElement; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import vid.automation.test.infra.Click; import vid.automation.test.infra.Get; -import vid.automation.test.infra.Wait; import vid.automation.test.sections.VidBasePage; import vid.automation.test.services.SimulatorApi; -import java.io.IOException; -import java.util.Collection; -import java.util.Map; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.containsString; -import static org.hamcrest.Matchers.equalTo; -import static org.testng.Assert.assertTrue; -import static vid.automation.test.services.SimulatorApi.RegistrationStrategy.CLEAR_THEN_SET; - public class HealthStatusTest extends VidBaseTestCase { private VidBasePage vidBasePage = new VidBasePage(); @@ -45,7 +42,7 @@ public class HealthStatusTest extends VidBaseTestCase { public void testAaiHealthStatus(Collection<BasePreset> presets, String cssName, String description, int httpCode) throws IOException { SimulatorApi.registerExpectationFromPresets(presets, CLEAR_THEN_SET); refreshStatus(); - assertTrue(Wait.waitByClassAndTextXpathOnly(cssName, "AAI", 10)); //instead of ultimate wait + GeneralUIUtils.ultimateWait(); //instead of assertTrue(Wait.waitByClassAndTextXpathOnly(cssName, "AAI", 10)) RemoteWebElement componentName = (RemoteWebElement)Get.byTestId("component-name-AAI"); assertThat("Wrong component name", componentName.getText(), equalTo("AAI")); assertThat("Wrong css for component name", componentName.getAttribute("class"), containsString(cssName)); diff --git a/vid-automation/src/main/java/vid/automation/test/test/NewServiceInstanceTest.java b/vid-automation/src/main/java/vid/automation/test/test/NewServiceInstanceTest.java index a701f1029..5a9dc2c01 100644 --- a/vid-automation/src/main/java/vid/automation/test/test/NewServiceInstanceTest.java +++ b/vid-automation/src/main/java/vid/automation/test/test/NewServiceInstanceTest.java @@ -1,12 +1,12 @@ package vid.automation.test.test; -//import com.automation.common.report_portal_integration.annotations.Step; - +import static java.util.Collections.emptyList; import static junit.framework.TestCase.assertNull; import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic; import static org.hamcrest.CoreMatchers.startsWith; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.containsInAnyOrder; +import static org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetCloudOwnersByCloudRegionId.PRESET_MTN6_TO_ATT_AIC; import static org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetCloudOwnersByCloudRegionId.PRESET_SOME_LEGACY_REGION_TO_ATT_AIC; import static org.onap.simulator.presetGenerator.presets.mso.PresetMSOOrchestrationRequestGet.COMPLETE; import static org.onap.simulator.presetGenerator.presets.mso.PresetMSOOrchestrationRequestGet.DEFAULT_SERVICE_INSTANCE_ID; @@ -17,6 +17,7 @@ import static vid.automation.test.infra.Features.FLAG_1908_COLLECTION_RESOURCE_N import static vid.automation.test.infra.Features.FLAG_1908_INFRASTRUCTURE_VPN; import static vid.automation.test.infra.Features.FLAG_1908_MACRO_NOT_TRANSPORT_NEW_VIEW_EDIT; import static vid.automation.test.infra.Features.FLAG_1908_TRANSPORT_SERVICE_NEW_INSTANTIATION_UI; +import static vid.automation.test.infra.Features.FLAG_2002_ANY_ALACARTE_BESIDES_EXCLUDED_NEW_INSTANTIATION_UI; import static vid.automation.test.infra.Features.FLAG_5G_IN_NEW_INSTANTIATION_UI; import static vid.automation.test.infra.Features.FLAG_ENABLE_WEBPACK_MODERN_UI; import static vid.automation.test.infra.ModelInfo.aLaCarteNetworkProvider5G; @@ -53,18 +54,20 @@ import org.apache.commons.lang3.mutable.MutableInt; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.hamcrest.Matchers; +import org.jetbrains.annotations.NotNull; import org.onap.sdc.ci.tests.datatypes.UserCredentials; import org.onap.sdc.ci.tests.utilities.GeneralUIUtils; -import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetCloudOwnersByCloudRegionId; import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetL3NetworksByCloudRegionSpecificState; import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetTenants; import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetVpnsByType; import org.onap.simulator.presetGenerator.presets.aai.PresetAAIPostNamedQueryForViewEdit; import org.onap.simulator.presetGenerator.presets.mso.PresetMSOBaseCreateInstancePost; import org.onap.simulator.presetGenerator.presets.mso.PresetMSOCreateNetworkALaCarte5G; -import org.onap.simulator.presetGenerator.presets.mso.PresetMSOCreateServiceInstanceAlacarte5GServiceWithNetwork; +import org.onap.simulator.presetGenerator.presets.mso.PresetMSOCreateServiceInstanceAlacarte; import org.onap.simulator.presetGenerator.presets.mso.PresetMSOCreateServiceInstanceGen2WithNamesAlacarteGroupingService; import org.onap.simulator.presetGenerator.presets.mso.PresetMSOCreateServiceInstanceGen2WithNamesEcompNamingFalse; +import org.onap.simulator.presetGenerator.presets.mso.PresetMSOCreateVfModuleALaCarteE2E; +import org.onap.simulator.presetGenerator.presets.mso.PresetMSOCreateVnfALaCarteE2E; import org.onap.simulator.presetGenerator.presets.mso.PresetMSOOrchestrationRequestGet; import org.onap.simulator.presetGenerator.presets.mso.PresetMSOOrchestrationRequestsGet5GServiceInstanceAndNetwork; import org.onap.simulator.presetGenerator.presets.mso.PresetMSOOrchestrationRequestsGet5GServiceInstanceAndNetwork.ResponseDetails; @@ -86,6 +89,7 @@ import vid.automation.test.infra.Features; import vid.automation.test.infra.Get; import vid.automation.test.infra.Input; import vid.automation.test.infra.ModelInfo; +import vid.automation.test.infra.ModelInfoWithCustomization; import vid.automation.test.infra.SelectOption; import vid.automation.test.infra.Wait; import vid.automation.test.model.Service; @@ -229,12 +233,13 @@ public class NewServiceInstanceTest extends CreateInstanceDialogBaseTest { new ArrayList<>(), IS_GENERATED_NAMING.FALSE, true, true, true, "2017-488_PASQUALE-vPE 0", - "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", 0, 1, new ArrayList<>(), "25284168-24bb-4698-8cb4-3f509146eca5"); + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", + 0, 1, new ArrayList<>(), "25284168-24bb-4698-8cb4-3f509146eca5", false); prepareServicePreset(macroSriovNoDynamicFieldsEcompNamingFalseFullModelDetails, false); final String serviceInstanceName = createMacroService(serviceData, true); - createVnf(serviceData, true, true, serviceInstanceName); + createVnf(serviceData, true, serviceInstanceName); createVfModule(serviceData, serviceInstanceName, false, false); @@ -277,7 +282,7 @@ public class NewServiceInstanceTest extends CreateInstanceDialogBaseTest { IS_GENERATED_NAMING.FALSE, false, true, false, "2017-488_PASQUALE-vPE 0", "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", 0, 1, ImmutableList.of("Bandwidth", "Bandwidth units"), - "25284168-24bb-4698-8cb4-3f509146eca5"); + "25284168-24bb-4698-8cb4-3f509146eca5", false); // this is the instance-name that createMacroService is going to use String serviceInstanceName = randomAlphabetic + "instancename"; @@ -289,7 +294,7 @@ public class NewServiceInstanceTest extends CreateInstanceDialogBaseTest { }); doReduxStep(reduxStates, randomAlphabetic, startInStep, reduxForStep, i, mode, () -> - createVnf(serviceData, false, true, serviceInstanceName) + createVnf(serviceData, false, serviceInstanceName) ); final String vnfInstanceName2 = randomAlphabetic + "instanceName"; @@ -297,7 +302,7 @@ public class NewServiceInstanceTest extends CreateInstanceDialogBaseTest { doReduxStep(reduxStates, randomAlphabetic, startInStep, reduxForStep, i, mode, () -> createVnf(new VnfData(vnfName2 + " 0", "afacccf6-397d-45d6-b5ae-94c39734b168", vnfInstanceName2, false), - false, Features.FLAG_DEFAULT_VNF.isActive(), serviceInstanceName) + false, serviceInstanceName) ); doReduxStep(reduxStates, randomAlphabetic, startInStep, reduxForStep, i, mode, () -> @@ -329,7 +334,7 @@ public class NewServiceInstanceTest extends CreateInstanceDialogBaseTest { .build(); registerExpectationFromPresets(ImmutableList.of( // although "some legacy region" is provided for vnf, Service's region "hvf6" overrides it - PresetAAIGetCloudOwnersByCloudRegionId.PRESET_MTN6_TO_ATT_AIC, + PRESET_MTN6_TO_ATT_AIC, new PresetMSOCreateServiceInstanceGen2WithNamesEcompNamingFalse(vars, 0, request1), new PresetMSOCreateServiceInstanceGen2WithNamesEcompNamingFalse(vars, 1, request2) ), SimulatorApi.RegistrationStrategy.APPEND); @@ -345,13 +350,13 @@ public class NewServiceInstanceTest extends CreateInstanceDialogBaseTest { @Test @FeatureTogglingTest(FLAG_1908_INFRASTRUCTURE_VPN) public void createNewServiceInstance_infraStructureVpn() { - String requestId = UUID.randomUUID().toString(); - String instanceId = UUID.randomUUID().toString(); + String requestId = uuid(); + String instanceId = uuid(); prepareServicePreset(infrastructureVpnService, false); SimulatorApi.registerExpectationFromPresets(ImmutableList.of( - PresetAAIGetCloudOwnersByCloudRegionId.PRESET_MTN6_TO_ATT_AIC, + PRESET_MTN6_TO_ATT_AIC, new PresetAAIGetL3NetworksByCloudRegionSpecificState("irma-aic", "hvf6", "bae71557c5bb4d5aac6743a4e5f1d054"), new PresetAAIGetVpnsByType() ), APPEND); @@ -361,7 +366,7 @@ public class NewServiceInstanceTest extends CreateInstanceDialogBaseTest { new ArrayList<>(), IS_GENERATED_NAMING.TRUE_BUT_GIVE_NAME_EITHER_WAY, true, true, false, null, - null, 0, 1, new ArrayList<>(), null); + null, 0, 1, new ArrayList<>(), null, false); final String serviceInstanceName = createMacroService(serviceData, false); SimulatorApi.registerExpectationFromPresets(ImmutableList.of( @@ -388,11 +393,11 @@ public class NewServiceInstanceTest extends CreateInstanceDialogBaseTest { @FeatureTogglingTest(FLAG_1908_COLLECTION_RESOURCE_NEW_INSTANTIATION_UI) public void createNewServiceInstance_collectionResource() { prepareServicePreset(collectionResourceService, false); - String requestId = UUID.randomUUID().toString(); - String instanceId = UUID.randomUUID().toString(); + String requestId = uuid(); + String instanceId = uuid(); SimulatorApi.registerExpectationFromPresets(ImmutableList.of( - PresetAAIGetCloudOwnersByCloudRegionId.PRESET_MTN6_TO_ATT_AIC, + PRESET_MTN6_TO_ATT_AIC, PresetMsoCreateMacroCommonPre1806.ofCollectionResource(requestId, instanceId), new PresetMSOOrchestrationRequestGet(COMPLETE, requestId) ), APPEND); @@ -402,7 +407,7 @@ public class NewServiceInstanceTest extends CreateInstanceDialogBaseTest { new ArrayList<>(), IS_GENERATED_NAMING.TRUE, true, true, false, null, - null, 0, 1, new ArrayList<>(), null); + null, 0, 1, new ArrayList<>(), null, false); createMacroService(serviceData, false, randomAlphabetic(5), true, 1); drawingBoardPage.deploy(); @@ -413,8 +418,8 @@ public class NewServiceInstanceTest extends CreateInstanceDialogBaseTest { @FeatureTogglingTest(FLAG_1908_TRANSPORT_SERVICE_NEW_INSTANTIATION_UI) public void createNewServiceInstance_transportService() { prepareServicePreset(transportWithPnfsService, false); - String requestId = UUID.randomUUID().toString(); - String instanceId = UUID.randomUUID().toString(); + String requestId = uuid(); + String instanceId = uuid(); SimulatorApi.registerExpectationFromPresets(ImmutableList.of( PresetMsoCreateMacroCommonPre1806.ofTransportService(requestId, instanceId), @@ -426,7 +431,7 @@ public class NewServiceInstanceTest extends CreateInstanceDialogBaseTest { new ArrayList<>(), IS_GENERATED_NAMING.TRUE, true, true, false, null, - null, 0, 1, new ArrayList<>(), null); + null, 0, 1, new ArrayList<>(), null, false); createMacroService(serviceData, false, randomAlphabetic(5), false, 1); drawingBoardPage.deploy(); @@ -443,7 +448,7 @@ public class NewServiceInstanceTest extends CreateInstanceDialogBaseTest { aLaCarteVnfGroupingService.modelVersionId, ImmutableList.of(), IS_GENERATED_NAMING.FALSE, false, true, false, - null, null, 0, 1, ImmutableList.of(), null); + null, null, 0, 1, ImmutableList.of(), null, false); prepareServicePreset(aLaCarteVnfGroupingService, false); createALaCarteService(serviceData, randomAlphabetic); @@ -529,11 +534,7 @@ public class NewServiceInstanceTest extends CreateInstanceDialogBaseTest { //@Step("edit vf module and just set name") private void editVfModuleAndJustSetName(String vfModuleName, String vfModuleUUID) { - if (Features.FLAG_SETTING_DEFAULTS_IN_DRAWING_BOARD.isActive()) { - hoverAndClickEditButton(vfModuleUUID + "-" + vfModuleName); - } else { - drawingBoardPage.clickAddButtonByNodeName(vfModuleName); - } + hoverAndClickEditButton(vfModuleUUID + "-" + vfModuleName); Input.text("VF instance name ZERO", "instanceName"); Click.byTestId(VNF_SET_BUTTON_TEST_ID); } @@ -545,12 +546,12 @@ public class NewServiceInstanceTest extends CreateInstanceDialogBaseTest { new ArrayList<>(), IS_GENERATED_NAMING.FALSE, true, false, true, "2017-488_PASQUALE-vPE 0", - vfModule0Name, 1, 1, new ArrayList<>(), vfModule0UUID); + vfModule0Name, 1, 1, new ArrayList<>(), vfModule0UUID, false); prepareServicePreset(macroSriovNoDynamicFieldsEcompNamingFalseFullModelDetails, false); final String serviceInstanceName = createMacroService(serviceData, true); - createVnf(serviceData, true, true, serviceInstanceName); + createVnf(serviceData, true, serviceInstanceName); createVfModule(serviceData, serviceInstanceName, true, false); } @@ -562,12 +563,12 @@ public class NewServiceInstanceTest extends CreateInstanceDialogBaseTest { new ArrayList<>(), IS_GENERATED_NAMING.FALSE, false, false, false, "2017-488_PASQUALE-vPE 0", - vfModule0Name, 1, 1, new ArrayList<>(), vfModule0UUID); + vfModule0Name, 1, 1, new ArrayList<>(), vfModule0UUID, false); prepareServicePreset(macroSriovNoDynamicFieldsEcompNamingFalseFullModelDetailsVnfEcompNamingFalse, false); final String serviceInstanceName = createMacroService(serviceData, true); - createVnf(serviceData, true, true, serviceInstanceName); + createVnf(serviceData, true, serviceInstanceName); createVfModule(serviceData, serviceInstanceName, true, false); } @@ -579,35 +580,149 @@ public class NewServiceInstanceTest extends CreateInstanceDialogBaseTest { new ArrayList<>(), IS_GENERATED_NAMING.FALSE, false, true, false, "2017-488_PASQUALE-vPE 0", - "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", 0, 1, new ArrayList<>(), "25284168-24bb-4698-8cb4-3f509146eca5"); + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", 0, 1, new ArrayList<>(), "25284168-24bb-4698-8cb4-3f509146eca5", false); prepareServicePreset(macroSriovNoDynamicFieldsEcompNamingFalseFullModelDetailsVnfEcompNamingFalse, false); final String serviceInstanceName = createMacroService(serviceData, true); - createVnf(serviceData, true, true, serviceInstanceName); + createVnf(serviceData, true, serviceInstanceName); clickRemoveVfModule(vfModule0UUID, vfModule0Name); createVfModule(serviceData, serviceInstanceName, false, true); } + @Test + @FeatureTogglingTest(FLAG_2002_ANY_ALACARTE_BESIDES_EXCLUDED_NEW_INSTANTIATION_UI) + public void createNewServiceInstance_aLaCarte_WithVnf() { + final ModelInfo serviceModelInfo = ModelInfo.aLaCarteServiceCreationNewUI; + String serviceInstanceName = "ALaCarteWithVnf"+randomAlphabetic(5); + String vnfInstanceName= "VnfForALaCarte"+randomAlphabetic(5); + VnfData vnfData = new VnfData("vOCG_1804_VF 0", "aca3f7b1-15f9-45a5-b182-b8b5aca84a76", vnfInstanceName, true); + VfData vfmData = new VfData("vocg_1804_vf0..Vocg1804Vf..base_ocg..module-0", false, 1, 1, emptyList(), "815db6e5-bdfd-4cb6-9575-82c36df8747a", null); + ServiceData serviceData = new ServiceData(IS_GENERATED_NAMING.TRUE, vnfData, vfmData, true); + + resetGetServicesCache(); + + prepareServicePreset(serviceModelInfo, true); + + String requestorID = getUserCredentials().getUserId(); + + String serviceRequestId = uuid(); + String serviceInstanceId = uuid(); + String vnfRequestId = uuid(); + String vnfInstanceId = uuid(); + String vfm0RequestId = uuid(); + String vfm0InstanceId = uuid(); + String vg1RequestId = uuid(); + String vg1InstanceId = uuid(); + String vfm1RequestId = uuid(); + String vfm1InstanceId = uuid(); + String vfm12RequestId = uuid(); + String vfm12InstanceId = uuid(); + + ModelInfoWithCustomization vfm0 = new ModelInfoWithCustomization( + "815db6e5-bdfd-4cb6-9575-82c36df8747a", + "e9c795c8-6b98-4db3-bd90-a84b8ca5181b", + "Vocg1804Vf..base_ocg..module-0", + "4", + "vfModule", + "Vocg1804Vf..base_ocg..module-0", + "a7b333d7-7633-4197-b40d-80fcfcadee94"); + + ModelInfoWithCustomization vg1 = new ModelInfoWithCustomization( + "9c219e70-1177-494b-8977-1395c9f9168c", + "0ad14d60-98b6-4575-a9b8-458a796c3f98", + "Vocg1804Vf..ocgmgr..module-1", + "4", + "volumeGroup", + "Vocg1804Vf..ocgmgr..module-1", + "f332f3ce-434d-4084-a1e7-5261c16d4940" + ); + + ModelInfoWithCustomization vfm1 = new ModelInfoWithCustomization( + "9c219e70-1177-494b-8977-1395c9f9168c", + "0ad14d60-98b6-4575-a9b8-458a796c3f98", + "Vocg1804Vf..ocgmgr..module-1", + "4", + "vfModule", + "Vocg1804Vf..ocgmgr..module-1", + "f332f3ce-434d-4084-a1e7-5261c16d4940" + ); + + ModelInfoWithCustomization vfm12 = new ModelInfoWithCustomization( + "b601eef4-62fd-4201-a788-ae30e06a1aec", + "e3cb8b85-7a3c-4897-b20b-70640c26d671", + "Vocg1804Vf..ocgapp_001..module-12", + "2", + "vfModule", + "Vocg1804Vf..ocgapp_001..module-12", + "fcc82961-865e-4d38-9c7a-207c511405b6" + ); + + final String vgName = "vg_for_module1"; + + String vgRelatedInstance = ",{\"relatedInstance\": {" + + " \"modelInfo\": {" + + " \"modelType\": \"volumeGroup\"" + + " }," + + " \"instanceId\": \""+vg1InstanceId+"\"," + + " \"instanceName\": \""+vgName+"\"" + + " }}"; + + + registerExpectationFromPresets( + ImmutableList.of( + new PresetMSOCreateServiceInstanceAlacarte( + ImmutableMap.of(Keys.SERVICE_NAME, serviceInstanceName), + serviceRequestId, serviceInstanceId, + requestorID, serviceModelInfo), + PRESET_SOME_LEGACY_REGION_TO_ATT_AIC, + new PresetMSOOrchestrationRequestGet(COMPLETE, serviceRequestId), + new PresetMSOCreateVnfALaCarteE2E(vnfRequestId, serviceInstanceId, vnfInstanceId, "ONAP", requestorID, serviceModelInfo), + new PresetMSOOrchestrationRequestGet(COMPLETE, vnfRequestId), + PRESET_MTN6_TO_ATT_AIC, + new PresetMSOCreateVfModuleALaCarteE2E(vfm0RequestId, vfm0InstanceId, serviceInstanceId, vnfInstanceId, requestorID, serviceModelInfo, null, vfm0, null), + new PresetMSOOrchestrationRequestGet(COMPLETE, vfm0RequestId), + new PresetMSOCreateVfModuleALaCarteE2E(vg1RequestId, vg1InstanceId, serviceInstanceId, vnfInstanceId, requestorID, serviceModelInfo, vgName, vg1, null), + new PresetMSOOrchestrationRequestGet(COMPLETE, vg1RequestId), + new PresetMSOCreateVfModuleALaCarteE2E(vfm1RequestId, vfm1InstanceId, serviceInstanceId, vnfInstanceId, requestorID, serviceModelInfo, null, vfm1, vgRelatedInstance), + new PresetMSOOrchestrationRequestGet(COMPLETE, vfm1RequestId), + new PresetMSOCreateVfModuleALaCarteE2E(vfm12RequestId, vfm12InstanceId, serviceInstanceId, vnfInstanceId, requestorID, serviceModelInfo, null, vfm12, null), + new PresetMSOOrchestrationRequestGet(COMPLETE, vfm12RequestId) + ), + APPEND + ); + + loadServicePopup(serviceModelInfo.modelVersionId); + fillALaCarteServicePopup(serviceInstanceName); + + createVnf(vnfData, false, serviceInstanceName); + createVfModule(serviceData, serviceInstanceName, true, false); + serviceData.vfData = new VfData("vocg_1804_vf0..Vocg1804Vf..ocgmgr..module-1", true, 0, 1, emptyList(), "9c219e70-1177-494b-8977-1395c9f9168c", vgName); + createVfModule(serviceData, serviceInstanceName, false, false); + serviceData.vfData = new VfData("vocg_1804_vf0..Vocg1804Vf..ocgapp_001..module-12", true, 0, 1, emptyList(), "b601eef4-62fd-4201-a788-ae30e06a1aec", null); + createVfModule(serviceData, serviceInstanceName, false, false); + drawingBoardPage.deploy(); + drawingBoardPage.verifyServiceCompletedOnTime(serviceInstanceName, "service "+serviceInstanceName); + } @Test @FeatureTogglingTest(FLAG_5G_IN_NEW_INSTANTIATION_UI) - public void createNewServiceInstance_aLaCarte_validPopupDataAndUI() { + public void createNewServiceInstance_aLaCarte_withNetwork_validPopupDataAndUI() { String serviceInstanceName = "NcService"+randomAlphabetic(5); String networkInstanceName= "NcNetowrk"+randomAlphabetic(5); String defactoNetworkInstanceName = "ExtVL"+networkInstanceName; - BrowseASDCPage browseASDCPage = new BrowseASDCPage(); + prepareServicePreset(aLaCarteNetworkProvider5G, true); - String serviceRequestId = UUID.randomUUID().toString(); - String networkRequestId = UUID.randomUUID().toString(); + String serviceRequestId = uuid(); + String networkRequestId = uuid(); String requestorID = getUserCredentials().getUserId(); registerExpectationFromPresets( ImmutableList.of( - new PresetMSOCreateServiceInstanceAlacarte5GServiceWithNetwork( + new PresetMSOCreateServiceInstanceAlacarte( ImmutableMap.of(Keys.SERVICE_NAME, serviceInstanceName), - serviceRequestId, - requestorID), + serviceRequestId, DEFAULT_SERVICE_INSTANCE_ID, + requestorID, aLaCarteNetworkProvider5G), new PresetMSOOrchestrationRequestGet(COMPLETE, serviceRequestId), PRESET_SOME_LEGACY_REGION_TO_ATT_AIC, new PresetMSOCreateNetworkALaCarte5G(networkRequestId, DEFAULT_SERVICE_INSTANCE_ID, defactoNetworkInstanceName, requestorID), @@ -620,6 +735,16 @@ public class NewServiceInstanceTest extends CreateInstanceDialogBaseTest { APPEND ); loadServicePopup(aLaCarteNetworkProvider5G.modelVersionId); + fillALaCarteServicePopup(serviceInstanceName); + VnfData networkData = new VnfData("SR-IOV Provider-1", "840ffc47-e4cf-46de-8e23-525fd8c6fdc3", defactoNetworkInstanceName, false); + createNetwork(networkData, false, false, serviceInstanceName); + + drawingBoardPage.deploy(); + drawingBoardPage.verifyServiceCompletedOnTime(serviceInstanceName, "service "+serviceInstanceName); + } + + private void fillALaCarteServicePopup(String serviceInstanceName) { + BrowseASDCPage browseASDCPage = new BrowseASDCPage(); WebElement instanceNameInput = Get.byId("instanceName"); instanceNameInput.sendKeys(serviceInstanceName); VidBasePage.selectSubscriberById("e433710f-9217-458d-a79d-1c7aff376d89"); @@ -631,11 +756,6 @@ public class NewServiceInstanceTest extends CreateInstanceDialogBaseTest { Click.byTestId("form-set"); VidBasePage.goOutFromIframe(); browseASDCPage.goToIframe(); - VnfData networkData = new VnfData("SR-IOV Provider-1", "840ffc47-e4cf-46de-8e23-525fd8c6fdc3", defactoNetworkInstanceName, false); - createNetwork(networkData, false, false, serviceInstanceName); - - drawingBoardPage.deploy(); - drawingBoardPage.verifyServiceCompletedOnTime(serviceInstanceName, "service "+serviceInstanceName); } @Test @@ -647,12 +767,12 @@ public class NewServiceInstanceTest extends CreateInstanceDialogBaseTest { serviceDynamicFields, IS_GENERATED_NAMING.TRUE, true, true, false, "2017-488_PASQUALE-vPE 0", - "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", 0, 1, new ArrayList<>(), "25284168-24bb-4698-8cb4-3f509146eca5"); + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", 0, 1, new ArrayList<>(), "25284168-24bb-4698-8cb4-3f509146eca5", false); prepareServicePreset(macroSriovWithDynamicFieldsEcompNamingTruePartialModelDetails, false); final String serviceInstanceName = createMacroService(serviceData, true); - createVnf(serviceData, true, true, serviceInstanceName); + createVnf(serviceData, true, serviceInstanceName); clickRemoveVfModule(vfModule0UUID, vfModule0Name); createVfModule(serviceData, serviceInstanceName, false, false); @@ -1019,23 +1139,23 @@ public class NewServiceInstanceTest extends CreateInstanceDialogBaseTest { } //@Step("create vnf") - private void createVnf(ServiceData serviceData, boolean tryCancelsAndReentries, boolean addedByDefault, String serviceInstanceName) { - createVnf(serviceData.vnfData, tryCancelsAndReentries, addedByDefault, serviceInstanceName); + private void createVnf(ServiceData serviceData, boolean tryCancelsAndReentries, String serviceInstanceName) { + createVnf(serviceData.vnfData, tryCancelsAndReentries, serviceInstanceName); } private void createNetwork(VnfData vnfData, boolean tryCancelsAndReentries, boolean addedByDefault, String serviceInstanceName) { createVnf(vnfData, tryCancelsAndReentries, addedByDefault, serviceInstanceName, true); } - private void createVnf(VnfData vnfData, boolean tryCancelsAndReentries, boolean addedByDefault, String serviceInstanceName) { - createVnf(vnfData, tryCancelsAndReentries, addedByDefault, serviceInstanceName, false); + private void createVnf(VnfData vnfData, boolean tryCancelsAndReentries, String serviceInstanceName) { + createVnf(vnfData, tryCancelsAndReentries, true, serviceInstanceName, false); } private void createVnf(VnfData vnfData, boolean tryCancelsAndReentries, boolean addedByDefault, String serviceInstanceName, boolean isNetwork) { BrowseASDCPage browseASDCPage = new BrowseASDCPage(); String nodeToEdit = extractNodeToEdit(vnfData); - if (addedByDefault && Features.FLAG_SETTING_DEFAULTS_IN_DRAWING_BOARD.isActive()) { + if (addedByDefault) { hoverAndClickEditButton(nodeToEdit); } else { drawingBoardPage.clickAddButtonByNodeName(vnfData.vnfName); @@ -1065,7 +1185,11 @@ public class NewServiceInstanceTest extends CreateInstanceDialogBaseTest { assertSetButtonDisabled(VNF_SET_BUTTON_TEST_ID); - browseASDCPage.selectPlatform("platform"); + if(isNetwork){ + browseASDCPage.selectPlatform("platform"); + }else { + SelectOption.selectOptionsFromMultiselectById("multi-selectPlatform", ImmutableList.of("platform")); + } browseASDCPage.selectLineOfBusiness("ONAP"); assertSetButtonEnabled(VNF_SET_BUTTON_TEST_ID); @@ -1094,7 +1218,9 @@ public class NewServiceInstanceTest extends CreateInstanceDialogBaseTest { assertThat(Get.selectedOptionText(Constants.ViewEdit.LCP_REGION_SELECT_TESTS_ID), startsWith("AAIAIC25")); Assert.assertEquals(Get.selectedOptionText(Constants.ViewEdit.TENANT_SELECT_TESTS_ID), "USP-SIP-IC-24335-T-01"); Assert.assertEquals(Get.selectedOptionText(Constants.ViewEdit.LINE_OF_BUSINESS_SELECT_TESTS_ID), "ONAP"); - Assert.assertEquals(Get.selectedOptionText(Constants.OwningEntity.PLATFORM_SELECT_TEST_ID), "platform"); + + Assert.assertTrue(Get.isOptionSelectedInMultiSelect(Constants.OwningEntity.PLATFORM_MULTI_SELECT_TEST_ID, "platform")); + Click.byTestId(Constants.CANCEL_BUTTON_TEST_ID); GeneralUIUtils.ultimateWait(); } else { @@ -1170,20 +1296,36 @@ public class NewServiceInstanceTest extends CreateInstanceDialogBaseTest { Input.text("VF instance name", "instanceName"); } - if (serviceData.vfData.vgEnabled) { - browseASDCPage.setInputText("volumeGroupName", "_abc"); - Assert.assertEquals(isElementByIdRequired("volumeGroupName-label"), false, "volume Group name input should be always optional"); - } else { - Assert.assertNull(Get.byTestId("volumeGroupName"), "volumeGroupName input should be invisible when vgEnabled == false"); + if (!serviceData.vfData.vgEnabled || (!serviceData.isALaCarte && serviceData.vnfData.isGeneratedNaming)) { + Assert.assertNull(Get.byTestId("volumeGroupName"), "volumeGroupName input should be invisible " + + "when vgEnabled is false or when vgEnabled is true and EcompGenName is true " + + "(was: serviceData.vfData.vgEnabled=>" + serviceData.vfData.vgEnabled + ", serviceData.isGeneratedNaming=>" + IS_GENERATED_NAMING.FALSE + ")"); + } + else { + Assert.assertFalse(isElementByIdRequired("volumeGroupName-label"), + "volume Group name input should be always optional"); + if (serviceData.vfData.vgName!=null) { + browseASDCPage.setInputText("volumeGroupName", serviceData.vfData.vgName); + } } + + Wait.waitByTestId("model-item-value-subscriberName", 10); Assert.assertEquals(Get.byTestId("model-item-value-subscriberName").getText(), "SILVIA ROBBINS", "Subscriber name should be shown in vf module"); Assert.assertEquals(Get.byTestId("model-item-value-min").getText(), Integer.toString(serviceData.vfData.vfMin), "Min should be shown"); Assert.assertEquals(Get.byTestId("model-item-value-max").getText(), Integer.toString(serviceData.vfData.vfMax), "Max should be shown"); - if (!serviceData.vnfData.isGeneratedNaming) { + if (serviceData.isGeneratedNaming!=IS_GENERATED_NAMING.TRUE) { Wait.byText(serviceInstanceName); Assert.assertEquals(Get.byTestId("model-item-value-serviceName").getText(), serviceInstanceName, "Service name should be shown in vf module"); } + + if (serviceData.isALaCarte) { + String lcpRegion = "hvf6"; + Wait.waitByClassAndText("lcpRegionOption", lcpRegion, 30); + viewEditPage.selectLcpRegion(lcpRegion, AIC); + browseASDCPage.selectTenant("bae71557c5bb4d5aac6743a4e5f1d054"); + } + validateDynamicFields(serviceData.vfData.dynamicFields); uploadSupplementaryFile("invalid-file.json", false, browseASDCPage, setButtonTestId); @@ -1195,13 +1337,11 @@ public class NewServiceInstanceTest extends CreateInstanceDialogBaseTest { } private void clickEditVfModule(ServiceData serviceData) { - if (Features.FLAG_SETTING_DEFAULTS_IN_DRAWING_BOARD.isActive()) { - hoverAndClickEditButton(serviceData.vfData.uuid + "-" + serviceData.vfData.vfName); - } + hoverAndClickEditButton(serviceData.vfData.uuid + "-" + serviceData.vfData.vfName); } private void clickAddVfModule(ServiceData serviceData, boolean addedByDefault) { - if (Features.FLAG_SETTING_DEFAULTS_IN_DRAWING_BOARD.isActive() && addedByDefault) { + if (addedByDefault) { return; } System.out.println("VFModule should be added 'manually'"); @@ -1216,10 +1356,8 @@ public class NewServiceInstanceTest extends CreateInstanceDialogBaseTest { } private void clickRemoveVfModule(String vfModuleId, String vfModuleName) { - if (Features.FLAG_SETTING_DEFAULTS_IN_DRAWING_BOARD.isActive()) { - System.out.println("will remove " + vfModule0Name); - hoverAndClickDeleteButton(vfModuleId + "-" + vfModuleName); - } + System.out.println("will remove " + vfModule0Name); + hoverAndClickDeleteButton(vfModuleId + "-" + vfModuleName); } private void assertPauseOnPausePointsVisibility(boolean visibility) { @@ -1232,6 +1370,12 @@ public class NewServiceInstanceTest extends CreateInstanceDialogBaseTest { } } + @NotNull + private String uuid() { + return UUID.randomUUID().toString(); + } + + private void assertNotificationAreaVisibilityBehaviourAndSetBulkSize(int size) { WebElement webElement = Get.byId("notification-area"); Assert.assertNull(webElement, "notification area should be invisible if only 1 qty."); @@ -1259,21 +1403,33 @@ public class NewServiceInstanceTest extends CreateInstanceDialogBaseTest { } static class ServiceData { - ServiceData(String modelUuid, List<String> dynamicFields, IS_GENERATED_NAMING isServiceGeneratedNaming, boolean isVnfGeneratedNaming, boolean isVgEnabled, boolean multiStageDesign, String vnfName, String vfName, int vfMin, int vfMax, List<String> vfModuleDynamicFields, String vfVersionId) { + + ServiceData(String modelUuid, List<String> dynamicFields, IS_GENERATED_NAMING isServiceGeneratedNaming, + boolean isVnfGeneratedNaming, boolean isVgEnabled, boolean multiStageDesign, String vnfName, + String vfName, int vfMin, int vfMax, List<String> vfModuleDynamicFields, String vfVersionId, boolean isALaCarte) { this.modelUuid = modelUuid; this.dynamicFields = dynamicFields; this.isGeneratedNaming = isServiceGeneratedNaming; this.multiStageDesign = multiStageDesign; + this.isALaCarte = isALaCarte; this.vnfData = new VnfData(vnfName, "69e09f68-8b63-4cc9-b9ff-860960b5db09", "VNF instance name", isVnfGeneratedNaming); - this.vfData = new VfData(vfName, isVgEnabled, vfMin, vfMax, vfModuleDynamicFields, vfVersionId); + this.vfData = new VfData(vfName, isVgEnabled, vfMin, vfMax, vfModuleDynamicFields, vfVersionId, "_abc"); } - final String modelUuid; - final List<String> dynamicFields; - final IS_GENERATED_NAMING isGeneratedNaming; - final boolean multiStageDesign; - final VnfData vnfData; - final VfData vfData; + public ServiceData(IS_GENERATED_NAMING isGeneratedNaming, VnfData vnfData, VfData vfData, boolean isALaCarte) { + this.isGeneratedNaming = isGeneratedNaming; + this.vnfData = vnfData; + this.vfData = vfData; + this.isALaCarte = isALaCarte; + } + + String modelUuid; + List<String> dynamicFields; + IS_GENERATED_NAMING isGeneratedNaming; + boolean multiStageDesign; + VnfData vnfData; + VfData vfData; + boolean isALaCarte; enum IS_GENERATED_NAMING { TRUE, FALSE, TRUE_BUT_GIVE_NAME_EITHER_WAY} } @@ -1294,13 +1450,14 @@ public class NewServiceInstanceTest extends CreateInstanceDialogBaseTest { private static class VfData { - VfData(String vfName, boolean vgEnabled, int vfMin, int vfMax, List<String> dynamicFields, String uuid) { + VfData(String vfName, boolean vgEnabled, int vfMin, int vfMax, List<String> dynamicFields, String uuid, String vgName) { this.vfName = vfName; this.vgEnabled = vgEnabled; this.vfMin = vfMin; this.vfMax = vfMax; this.dynamicFields = dynamicFields; this.uuid = uuid; + this.vgName = vgName; } final int vfMin; @@ -1309,6 +1466,7 @@ public class NewServiceInstanceTest extends CreateInstanceDialogBaseTest { final String vfName; final boolean vgEnabled; final List<String> dynamicFields; + final String vgName; } diff --git a/vid-automation/src/main/java/vid/automation/test/test/PreviousVersionsPopupTest.java b/vid-automation/src/main/java/vid/automation/test/test/PreviousVersionsPopupTest.java index c52dd6bac..beef5d966 100644 --- a/vid-automation/src/main/java/vid/automation/test/test/PreviousVersionsPopupTest.java +++ b/vid-automation/src/main/java/vid/automation/test/test/PreviousVersionsPopupTest.java @@ -1,29 +1,36 @@ package vid.automation.test.test; +import static org.testng.Assert.assertEquals; +import static vid.automation.test.infra.ModelInfo.ModelInfoWithMultipleVersions.modelInfoWithMultipleVersions; +import static vid.automation.test.infra.ModelInfo.serviceWithOneVersion; + import com.google.common.collect.ImmutableList; import org.junit.Assert; +import org.onap.sdc.ci.tests.utilities.GeneralUIUtils; import org.onap.simulator.presetGenerator.presets.BasePresets.BasePreset; -import org.onap.simulator.presetGenerator.presets.aai.*; +import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetNetworkZones; +import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetServicesGet; +import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetSubDetailsGet; +import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetSubDetailsWithoutInstancesGet; +import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetSubscribersGet; +import org.onap.simulator.presetGenerator.presets.aai.PresetAAIServiceDesignAndCreationPut; import org.onap.simulator.presetGenerator.presets.ecompportal_att.PresetGetSessionSlotCheckIntervalGet; import org.onap.simulator.presetGenerator.presets.mso.PresetMSOCreateServiceInstancePost; import org.onap.simulator.presetGenerator.presets.mso.PresetMSOOrchestrationRequestGet; import org.onap.simulator.presetGenerator.presets.sdc.PresetSDCGetServiceMetadataGet; import org.onap.simulator.presetGenerator.presets.sdc.PresetSDCGetServiceToscaModelGet; -import org.onap.sdc.ci.tests.utilities.GeneralUIUtils; import org.openqa.selenium.By; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import vid.automation.test.infra.Click; import vid.automation.test.infra.Get; +import vid.automation.test.infra.ModelInfo; import vid.automation.test.sections.BrowseASDCPage; -import vid.automation.test.sections.CreateNewInstancePage; import vid.automation.test.sections.PreviousVersionDialog; import vid.automation.test.sections.SideMenu; +import vid.automation.test.sections.deploy.DeployDialogBase; import vid.automation.test.services.SimulatorApi; -import static vid.automation.test.infra.ModelInfo.ModelInfoWithMultipleVersions.modelInfoWithMultipleVersions; -import static vid.automation.test.infra.ModelInfo.serviceWithOneVersion; - public class PreviousVersionsPopupTest extends CreateInstanceDialogBaseTest{ BrowseASDCPage browseASDCPage = new BrowseASDCPage(); @@ -79,17 +86,16 @@ public class PreviousVersionsPopupTest extends CreateInstanceDialogBaseTest{ } @Test private void openPreviousVersionPopup_deployOldVersion_creationPopupIsALaCarte(){ - String expectedPopupIsALaCarteName = "Create Service Instance -- a la carte"; prepareSimulatorWithThreeVersionsBeforeBrowseASDCService(); - CreateNewInstancePage newInstance= new CreateNewInstancePage(); + registerExpectationForLegacyServiceDeployment(ModelInfo.aLaCarteServiceOldVersionTest, "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb"); newVersionDialog = new PreviousVersionDialog(); navigateToBrowseAsdcAndClickPreviousButton(); newVersionDialog.clickDeployServiceButtonByServiceUUID(modelVersionId2); - assertNewInstanceFormOpened(createModalTitleTestId,expectedPopupIsALaCarteName); - newInstance.clickCancelButtonByTestID(); - GeneralUIUtils.ultimateWait(); - newVersionDialog.clickCancelButton(); - + final DeployDialogBase deployDialog = BrowseASDCTest.getAlacarteDialogByFlagValue(); + deployDialog.waitForDialogToLoad(); + deployDialog.assertDialog(); + assertEquals(deployDialog.getModelVersionId(), modelVersionId2); + deployDialog.closeDialog(); } private void navigateToBrowseAsdcAndClickPreviousButton() { diff --git a/vid-automation/src/main/java/vid/automation/test/test/SanityMacroDeployTest.java b/vid-automation/src/main/java/vid/automation/test/test/SanityMacroDeployTest.java index ba951bc55..032e729a2 100644 --- a/vid-automation/src/main/java/vid/automation/test/test/SanityMacroDeployTest.java +++ b/vid-automation/src/main/java/vid/automation/test/test/SanityMacroDeployTest.java @@ -1,5 +1,10 @@ package vid.automation.test.test; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.containsString; +import static vid.automation.test.infra.ModelInfo.macroForBrowseSdc; +import static vid.automation.test.services.SimulatorApi.RegistrationStrategy.APPEND; + import com.google.common.collect.ImmutableList; import org.junit.Assert; import org.onap.sdc.ci.tests.datatypes.UserCredentials; @@ -17,11 +22,6 @@ import vid.automation.test.sections.BrowseASDCPage; import vid.automation.test.sections.SideMenu; import vid.automation.test.services.SimulatorApi; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.containsString; -import static vid.automation.test.infra.ModelInfo.macroForBrowseSdc; -import static vid.automation.test.services.SimulatorApi.RegistrationStrategy.APPEND; - public class SanityMacroDeployTest extends CreateInstanceDialogBaseTest { static final String NEW_INSTANCE_NAME = "New Instance Name"; @@ -150,7 +150,7 @@ public class SanityMacroDeployTest extends CreateInstanceDialogBaseTest { Assert.assertEquals(currElem.getText(), RESOURCE_DESCRIPTION); currElem = GeneralUIUtils.getWebElementByTestID(Constants.SERVICE_INVARIANT_UUID, 30); - Assert.assertEquals(currElem.getText(), macroForBrowseSdc.modelInvariantId); + Assert.assertEquals(currElem.getText(), "a8dcd72d-d44d-44f2-aa85-53aa9ca99cba"); currElem = GeneralUIUtils.getWebElementByTestID(Constants.SERVICE_VERSION, 30); Assert.assertEquals(currElem.getText(), SERVICE_VERSION); diff --git a/vid-automation/src/main/java/vid/automation/test/test/VidBaseTestCase.java b/vid-automation/src/main/java/vid/automation/test/test/VidBaseTestCase.java index a45f25853..41ede9a3f 100644 --- a/vid-automation/src/main/java/vid/automation/test/test/VidBaseTestCase.java +++ b/vid-automation/src/main/java/vid/automation/test/test/VidBaseTestCase.java @@ -1,17 +1,59 @@ package vid.automation.test.test; -//import com.automation.common.report_portal_integration.annotations.Step; -//import com.automation.common.report_portal_integration.listeners.ReportPortalListener; -//import com.automation.common.report_portal_integration.screenshots.WebDriverScreenshotsProvider; +import static java.util.Collections.emptySet; +import static java.util.Collections.singletonList; +import static java.util.stream.Collectors.groupingBy; +import static java.util.stream.Collectors.mapping; +import static java.util.stream.Collectors.toSet; +import static org.hamcrest.CoreMatchers.not; +import static org.hamcrest.Matchers.contains; +import static org.hamcrest.Matchers.containsInAnyOrder; +import static org.hamcrest.collection.IsEmptyCollection.empty; +import static org.hamcrest.core.Is.is; +import static org.junit.Assert.assertThat; +import static org.onap.simulator.presetGenerator.presets.mso.PresetMSOOrchestrationRequestGet.COMPLETE; +import static org.testng.Assert.assertEquals; +import static org.testng.AssertJUnit.fail; +import static vid.automation.test.utils.TestHelper.GET_SERVICE_MODELS_BY_DISTRIBUTION_STATUS; +import static vid.automation.test.utils.TestHelper.GET_TENANTS; + import com.fasterxml.jackson.databind.ObjectMapper; import com.google.common.collect.ImmutableList; +import java.io.File; +import java.lang.reflect.Method; +import java.net.URI; +import java.net.URISyntaxException; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.TimeUnit; import org.apache.commons.lang3.StringUtils; import org.glassfish.jersey.uri.internal.JerseyUriBuilder; import org.junit.Assert; import org.onap.sdc.ci.tests.datatypes.Configuration; +import org.onap.sdc.ci.tests.datatypes.UserCredentials; +import org.onap.sdc.ci.tests.execute.setup.SetupCDTest; +import org.onap.sdc.ci.tests.utilities.FileHandling; +import org.onap.sdc.ci.tests.utilities.GeneralUIUtils; import org.onap.simulator.presetGenerator.presets.BasePresets.BaseMSOPreset; import org.onap.simulator.presetGenerator.presets.BasePresets.BasePreset; -import org.onap.simulator.presetGenerator.presets.aai.*; +import org.onap.simulator.presetGenerator.presets.aai.PresetAAICloudRegionAndSourceFromConfigurationPut; +import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetNetworkZones; +import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetPortMirroringSourcePorts; +import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetServicesGet; +import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetSubDetailsGet; +import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetSubDetailsWithoutInstancesGet; +import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetSubscribersGet; +import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetTenants; +import org.onap.simulator.presetGenerator.presets.aai.PresetAAIPostNamedQueryForViewEdit; +import org.onap.simulator.presetGenerator.presets.aai.PresetAAIServiceDesignAndCreationPut; import org.onap.simulator.presetGenerator.presets.ecompportal_att.EcompPortalPresetsUtils; import org.onap.simulator.presetGenerator.presets.ecompportal_att.PresetGetSessionSlotCheckIntervalGet; import org.onap.simulator.presetGenerator.presets.mso.PresetMSOCreateServiceInstanceGen2; @@ -19,10 +61,6 @@ import org.onap.simulator.presetGenerator.presets.mso.PresetMSOCreateServiceInst import org.onap.simulator.presetGenerator.presets.mso.PresetMSOOrchestrationRequestGet; import org.onap.simulator.presetGenerator.presets.sdc.PresetSDCGetServiceMetadataGet; import org.onap.simulator.presetGenerator.presets.sdc.PresetSDCGetServiceToscaModelGet; -import org.onap.sdc.ci.tests.datatypes.UserCredentials; -import org.onap.sdc.ci.tests.execute.setup.SetupCDTest; -import org.onap.sdc.ci.tests.utilities.FileHandling; -import org.onap.sdc.ci.tests.utilities.GeneralUIUtils; import org.openqa.selenium.By; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebElement; @@ -36,47 +74,36 @@ import org.testng.annotations.Test; import vid.automation.reportportal.ReportPortalListenerDelegator; import vid.automation.test.Constants; import vid.automation.test.Constants.ViewEdit; -import vid.automation.test.infra.*; +import vid.automation.test.infra.Click; +import vid.automation.test.infra.Exists; +import vid.automation.test.infra.Features; +import vid.automation.test.infra.Get; +import vid.automation.test.infra.ModelInfo; +import vid.automation.test.infra.SelectOption; +import vid.automation.test.infra.Wait; import vid.automation.test.model.Credentials; import vid.automation.test.model.User; -import vid.automation.test.sections.*; +import vid.automation.test.sections.LoginExternalPage; +import vid.automation.test.sections.SearchExistingPage; +import vid.automation.test.sections.SideMenu; +import vid.automation.test.sections.VidBasePage; +import vid.automation.test.sections.ViewEditPage; +import vid.automation.test.sections.deploy.DeployModernUIMacroDialog; import vid.automation.test.services.CategoryParamsService; import vid.automation.test.services.SimulatorApi; import vid.automation.test.services.UsersService; import vid.automation.test.utils.CookieAndJsonHttpHeadersInterceptor; import vid.automation.test.utils.DB_CONFIG; +import vid.automation.test.utils.InsecureHttpsClient; import vid.automation.test.utils.TestConfigurationHelper; import vid.automation.test.utils.TestHelper; -import java.io.File; -import java.lang.reflect.Method; -import java.net.URI; -import java.net.URISyntaxException; -import java.sql.*; -import java.util.*; -import java.util.concurrent.TimeUnit; - -import static java.util.Collections.emptySet; -import static java.util.Collections.singletonList; -import static java.util.stream.Collectors.*; -import static org.hamcrest.CoreMatchers.not; -import static org.hamcrest.Matchers.contains; -import static org.hamcrest.Matchers.containsInAnyOrder; -import static org.hamcrest.collection.IsEmptyCollection.empty; -import static org.hamcrest.core.Is.is; -import static org.junit.Assert.assertThat; -import static org.onap.simulator.presetGenerator.presets.mso.PresetMSOOrchestrationRequestGet.COMPLETE; -import static org.testng.Assert.assertEquals; -import static org.testng.AssertJUnit.fail; -import static vid.automation.test.utils.TestHelper.GET_SERVICE_MODELS_BY_DISTRIBUTION_STATUS; -import static vid.automation.test.utils.TestHelper.GET_TENANTS; - @Listeners(ReportPortalListenerDelegator.class) public class VidBaseTestCase extends SetupCDTest{ protected final UsersService usersService = new UsersService(); protected final CategoryParamsService categoryParamsService = new CategoryParamsService(); - protected final RestTemplate restTemplate = new RestTemplate(); + protected final RestTemplate restTemplate = InsecureHttpsClient.newRestTemplate(); protected final URI uri; protected final URI envUrI; @@ -229,7 +256,7 @@ public class VidBaseTestCase extends SetupCDTest{ return presets; } - protected void relogin(Credentials credentials) throws Exception { + protected void relogin(Credentials credentials) { // `getWindowTest().getPreviousUser()` is SetupCDTest's state of previous user used if (!credentials.userId.equals(getWindowTest().getPreviousUser())) { UserCredentials userCredentials = new UserCredentials(credentials.userId, @@ -485,12 +512,6 @@ public class VidBaseTestCase extends SetupCDTest{ assertThat(String.format(Constants.ServiceModelInfo.METADETA_ERROR_MESSAGE, elementTestId), infoItemText, is(value)); } - public DeployMacroDialogBase getMacroDialog(){ - VidBasePage vidBasePage =new VidBasePage(); - vidBasePage.goToIframe(); - return new DeployMacroDialog(); - } - protected void loadServicePopup(ModelInfo modelInfo) { loadServicePopup(modelInfo.modelVersionId); } @@ -503,7 +524,7 @@ public class VidBaseTestCase extends SetupCDTest{ } protected void loadServicePopupOnBrowseASDCPage(String modelVersionId ) { - DeployMacroDialog deployMacroDialog = new DeployMacroDialog(); + DeployModernUIMacroDialog deployMacroDialog = new DeployModernUIMacroDialog(); VidBasePage.goOutFromIframe(); deployMacroDialog.clickDeployServiceButtonByServiceUUID(modelVersionId); deployMacroDialog.goToIframe(); diff --git a/vid-automation/src/main/java/vid/automation/test/test/ViewEditServiceInstanceTest.java b/vid-automation/src/main/java/vid/automation/test/test/ViewEditServiceInstanceTest.java index a24ecb735..cbc28d0b0 100644 --- a/vid-automation/src/main/java/vid/automation/test/test/ViewEditServiceInstanceTest.java +++ b/vid-automation/src/main/java/vid/automation/test/test/ViewEditServiceInstanceTest.java @@ -1,42 +1,45 @@ package vid.automation.test.test; +import static org.apache.logging.log4j.core.util.Assert.isNonEmpty; +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.equalTo; +import static org.hamcrest.collection.IsEmptyCollection.empty; +import static org.testng.AssertJUnit.assertEquals; +import static vid.automation.test.services.SimulatorApi.RegistrationStrategy.APPEND; + import com.google.common.collect.ImmutableMap; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import org.hamcrest.MatcherAssert; import org.junit.Assert; import org.junit.Before; -import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetNetworkCollectionDetails; import org.onap.sdc.ci.tests.utilities.GeneralUIUtils; +import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetNetworkCollectionDetails; import org.openqa.selenium.By; import org.openqa.selenium.WebElement; import org.testng.annotations.AfterMethod; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import vid.automation.test.Constants; -import vid.automation.test.infra.*; +import vid.automation.test.infra.Click; +import vid.automation.test.infra.Exists; +import vid.automation.test.infra.FeatureTogglingTest; +import vid.automation.test.infra.Features; +import vid.automation.test.infra.Get; +import vid.automation.test.infra.Wait; import vid.automation.test.model.User; import vid.automation.test.sections.VidBasePage; import vid.automation.test.sections.ViewEditPage; import vid.automation.test.services.BulkRegistration; import vid.automation.test.services.SimulatorApi; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.time.LocalDate; -import java.util.Arrays; -import java.util.List; -import java.util.Map; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import static org.apache.logging.log4j.core.util.Assert.isNonEmpty; -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.equalTo; -import static org.hamcrest.collection.IsEmptyCollection.empty; -import static org.testng.AssertJUnit.assertEquals; -import static vid.automation.test.infra.Features.FLAG_1810_CR_SOFT_DELETE_ALACARTE_VF_MODULE; -import static vid.automation.test.services.SimulatorApi.RegistrationStrategy.APPEND; - public class ViewEditServiceInstanceTest extends VidBaseTestCase { private ViewEditPage viewEditPage = new ViewEditPage(); @@ -115,7 +118,6 @@ public class ViewEditServiceInstanceTest extends VidBaseTestCase { deleteInstance(Constants.ViewEdit.DELETE_VF_MODULE_BUTTON_TEST_ID + "aa", Constants.ViewEdit.VF_MODULE_DELETED_SUCCESSFULLY_TEXT); } - @FeatureTogglingTest(value = FLAG_1810_CR_SOFT_DELETE_ALACARTE_VF_MODULE) @Test public void softDeleteAndResumeVfModuleInstance_deleteDialogAppears_msoResponseIsOk() { SimulatorApi.clearAll(); diff --git a/vid-automation/src/main/java/vid/automation/test/utils/CookieAndJsonHttpHeadersInterceptor.java b/vid-automation/src/main/java/vid/automation/test/utils/CookieAndJsonHttpHeadersInterceptor.java index c98b2428a..0117a8a99 100644 --- a/vid-automation/src/main/java/vid/automation/test/utils/CookieAndJsonHttpHeadersInterceptor.java +++ b/vid-automation/src/main/java/vid/automation/test/utils/CookieAndJsonHttpHeadersInterceptor.java @@ -1,19 +1,23 @@ package vid.automation.test.utils; +import java.io.IOException; +import java.net.URI; +import java.util.Collections; +import java.util.List; import org.junit.Assert; import org.onap.sdc.ci.tests.datatypes.UserCredentials; -import org.springframework.http.*; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpRequest; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; import org.springframework.http.client.ClientHttpRequestExecution; import org.springframework.http.client.ClientHttpRequestInterceptor; import org.springframework.http.client.ClientHttpResponse; import org.springframework.http.client.support.HttpRequestWrapper; import org.springframework.web.client.RestTemplate; -import java.io.IOException; -import java.net.URI; -import java.util.Collections; -import java.util.List; - public class CookieAndJsonHttpHeadersInterceptor implements ClientHttpRequestInterceptor { private final HttpHeaders cookieAndJsonHttpHeaders; @@ -33,7 +37,7 @@ public class CookieAndJsonHttpHeadersInterceptor implements ClientHttpRequestInt protected HttpHeaders getCookieAndJsonHttpHeaders(URI uri, UserCredentials userCredentials) { HttpHeaders loginRequestHeaders = new HttpHeaders(); loginRequestHeaders.setContentType(MediaType.APPLICATION_FORM_URLENCODED); - RestTemplate restTemplate = new RestTemplate(); + RestTemplate restTemplate = InsecureHttpsClient.newRestTemplate(); ResponseEntity<String> loginRes = restTemplate.postForEntity(uri.toASCIIString() + "/login_external.htm", new HttpEntity<>("loginId=" + userCredentials.getUserId() + "&password=" + userCredentials.getPassword(), loginRequestHeaders), String.class); Assert.assertEquals("Login failed - wrong http status with user:" + userCredentials.getUserId() + " password:" + userCredentials.getPassword(), HttpStatus.FOUND, loginRes.getStatusCode()); Assert.assertNull("Failed to login with user:" + userCredentials.getUserId() + " password:" + userCredentials.getPassword(), loginRes.getBody()); diff --git a/vid-automation/src/main/java/vid/automation/test/utils/InsecureHttpsClient.java b/vid-automation/src/main/java/vid/automation/test/utils/InsecureHttpsClient.java new file mode 100644 index 000000000..6106ae4a2 --- /dev/null +++ b/vid-automation/src/main/java/vid/automation/test/utils/InsecureHttpsClient.java @@ -0,0 +1,26 @@ +package vid.automation.test.utils; + +import javax.ws.rs.client.Client; +import javax.ws.rs.client.ClientBuilder; +import org.apache.http.conn.ssl.NoopHostnameVerifier; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; +import org.springframework.web.client.RestTemplate; + +public class InsecureHttpsClient { + + public static RestTemplate newRestTemplate() { + CloseableHttpClient insecureTLSHttpClient + = HttpClients.custom().setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE).build(); + HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(insecureTLSHttpClient); + return new RestTemplate(factory); + } + + public static Client newJaxrsClient() { + return ClientBuilder.newBuilder() + .hostnameVerifier(NoopHostnameVerifier.INSTANCE) + .build(); + } + +} diff --git a/vid-automation/src/main/resources/NewServiceInstanceTest/createNewServiceInstance_macro_validPopupDataAndUI__dynamicFieldsEcompNamingFalse.json b/vid-automation/src/main/resources/NewServiceInstanceTest/createNewServiceInstance_macro_validPopupDataAndUI__dynamicFieldsEcompNamingFalse.json index 25725db8e..d8aebc746 100644 --- a/vid-automation/src/main/resources/NewServiceInstanceTest/createNewServiceInstance_macro_validPopupDataAndUI__dynamicFieldsEcompNamingFalse.json +++ b/vid-automation/src/main/resources/NewServiceInstanceTest/createNewServiceInstance_macro_validPopupDataAndUI__dynamicFieldsEcompNamingFalse.json @@ -4,17 +4,13 @@ "flags": { "FLAG_NETWORK_TO_ASYNC_INSTANTIATION": false, "FLAG_SHOW_ASSIGNMENTS": true, - "FLAG_DEFAULT_VNF": true, "FLAG_A_LA_CARTE_AUDIT_INFO": true, "FLAG_SHOW_VERIFY_SERVICE": true, "FLAG_ASYNC_ALACARTE_VFMODULE": false, "FLAG_FABRIC_CONFIGURATION_ASSIGNMENTS": true, "FLAG_ASYNC_ALACARTE_VNF": true, "FLAG_SERVICE_MODEL_CACHE": true, - "CREATE_INSTANCE_TEST": false, - "FLAG_SETTING_DEFAULTS_IN_DRAWING_BOARD": true, "FLAG_SUPPLEMENTARY_FILE": true, - "EMPTY_DRAWING_BOARD_TEST": false, "FLAG_ADD_MSO_TESTAPI_FIELD": true, "FLAG_5G_IN_NEW_INSTANTIATION_UI": true, "FLAG_RESTRICTED_SELECT": false, @@ -3249,4 +3245,4 @@ }, "type": "[LCP_REGIONS_AND_TENANTS] Update" } -}
\ No newline at end of file +} diff --git a/vid-automation/src/main/resources/registration_to_simulator/sanity/get_csar_zip_file.json b/vid-automation/src/main/resources/registration_to_simulator/sanity/get_csar_zip_file.json deleted file mode 100644 index 7b39f77e6..000000000 --- a/vid-automation/src/main/resources/registration_to_simulator/sanity/get_csar_zip_file.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "simulatorRequest": { - "method": "GET", - "path": "/vidSimulator/getSomeFile" -} , - "simulatorResponse": { - "responseCode": 200, - "file": "csar15782222_invariantUUIDMacro.zip" - } -}
\ No newline at end of file diff --git a/vid-automation/src/main/resources/registration_to_simulator/sanity/get_sdc_catalog_services_4d71990b.json b/vid-automation/src/main/resources/registration_to_simulator/sanity/get_sdc_catalog_services_4d71990b.json index 56bce65c0..03b6eb71d 100644 --- a/vid-automation/src/main/resources/registration_to_simulator/sanity/get_sdc_catalog_services_4d71990b.json +++ b/vid-automation/src/main/resources/registration_to_simulator/sanity/get_sdc_catalog_services_4d71990b.json @@ -6,7 +6,7 @@ }, "simulatorResponse": { "responseCode": 200, - "file": "csar15782222_invariantUUIDMacro.zip" + "file": "csar15782222_instantiationTypeMacro_invariantUUIDAlacarte.zip" } }, { @@ -24,7 +24,7 @@ "invariantUUID": "d27e42cf-087e-4d31-88ac-6c4b7585f800", "name": "vidmacrofalsenaming", "version": "1.0", - "toscaModelURL": "./csar15782222_invariantUUIDMacro.zip", + "toscaModelURL": "./csar15782222_instantiationTypeMacro_invariantUUIDAlacarte.zip", "category": "Network Connectivityv", "lifecycleState": "CERTIFIED", "lastUpdaterUserId": "rg276b", @@ -35,4 +35,4 @@ } } } -]
\ No newline at end of file +] diff --git a/vid-automation/src/test/java/org/onap/vid/api/AsyncInstantiationALaCarteApiTest.java b/vid-automation/src/test/java/org/onap/vid/api/AsyncInstantiationALaCarteApiTest.java index 25b40ed6b..ff30c9ce5 100644 --- a/vid-automation/src/test/java/org/onap/vid/api/AsyncInstantiationALaCarteApiTest.java +++ b/vid-automation/src/test/java/org/onap/vid/api/AsyncInstantiationALaCarteApiTest.java @@ -1,6 +1,8 @@ package org.onap.vid.api; import static java.util.Collections.emptyMap; +import static java.util.stream.Collectors.toList; +import static java.util.stream.Collectors.toSet; import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.hasItems; import static org.hamcrest.MatcherAssert.assertThat; @@ -8,6 +10,7 @@ import static org.hamcrest.Matchers.allOf; import static org.hamcrest.Matchers.contains; import static org.hamcrest.Matchers.containsInAnyOrder; import static org.hamcrest.Matchers.matchesPattern; +import static org.hamcrest.Matchers.not; import static org.hamcrest.collection.IsCollectionWithSize.hasSize; import static org.onap.simulator.presetGenerator.presets.BasePresets.BaseMSOPreset.DEFAULT_INSTANCE_ID; import static org.onap.simulator.presetGenerator.presets.mso.PresetMSOBaseCreateInstancePost.DEFAULT_REQUEST_ID; @@ -24,6 +27,7 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.UUID; +import java.util.stream.Stream; import org.onap.simulator.presetGenerator.presets.BasePresets.BaseMSOPreset; import org.onap.simulator.presetGenerator.presets.BasePresets.BasePreset; import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetCloudOwnersByCloudRegionId; @@ -49,6 +53,9 @@ import org.onap.vid.model.asyncInstantiation.JobAuditStatus.SourceStatus; import org.onap.vid.model.asyncInstantiation.ServiceInfo; import org.onap.vid.more.LoggerFormatTest; import org.onap.vid.more.LoggerFormatTest.LogName; +import org.springframework.core.ParameterizedTypeReference; +import org.springframework.http.HttpMethod; +import org.springframework.http.ResponseEntity; import org.testng.annotations.AfterMethod; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; @@ -121,6 +128,50 @@ public class AsyncInstantiationALaCarteApiTest extends AsyncInstantiationBase { } @Test + public void deployTwoServicesGetServicesFilterByModelId() { + List<String> uuids = new LinkedList<>(); + try { + //given + final ImmutableMap<PresetMSOServiceInstanceGen2WithNames.Keys, String> names = ImmutableMap + .of(SERVICE_NAME, "calazixide85"); + + String SERVICE_MODEL_UUID = "e3c34d88-a216-4f1d-a782-9af9f9588705"; + + uuids = Stream.of( + createBulkOfInstances(false, 1, names, CREATE_BULK_OF_ALACARTE_REQUEST).get(0), + createBulkOfInstances(false, 1, names, CREATE_BULK_OF_ALACARTE_REQUEST).get(0), + createBulkOfInstances(false, 1, names, CREATE_BULK_OF_MACRO_REQUEST).get(0) + ).collect(toList()); + + //when + ResponseEntity<List<ServiceInfo>> response = restTemplate.exchange( + getServiceInfoUrl() + "?serviceModelId=" + SERVICE_MODEL_UUID, + HttpMethod.GET, + null, + new ParameterizedTypeReference<List<ServiceInfo>>() { + }); + + //then + final List<ServiceInfo> body = response.getBody(); + + //assert that service info list contains only services with desired modelId + assertThat(body.stream().map(x -> x.serviceModelId).collect(toSet()), + contains(SERVICE_MODEL_UUID)); + //assert that service info list contains the 2 first jobs + assertThat(body.stream().map(x -> x.jobId).collect(toList()), + hasItems(uuids.get(0), uuids.get(1))); + //assert that service info list doesn't contains last jobs + assertThat(body.stream().map(x -> x.jobId).collect(toList()), + not(hasItems(uuids.get(2)))); + } + finally { + //clear jobs to not disturb next tests + uuids.forEach(uuid->new AsyncJobsService().muteAsyncJobById(uuid)); + } + } + + + @Test public void deleteServiceWithTwoVnfGroups_andRetry() { String parentServiceInstanceId = "service-instance-id"; String firstVnfGroupToDeleteInstanceId = "VNF_GROUP1_INSTANCE_ID"; @@ -408,12 +459,29 @@ public class AsyncInstantiationALaCarteApiTest extends AsyncInstantiationBase { } } + + @Test + public void deployServiceAfterDragAndDropVFModule__verifyOrderMsoCalls() { + final ImmutableMap<PresetMSOServiceInstanceGen2WithNames.Keys, String> names = ImmutableMap + .of(SERVICE_NAME, "serviceInstanceName"); + String vnfRequestId = UUID.randomUUID().toString(); + registerPresetsForRetryTest("none", names, vnfRequestId, false); + + final List<String> uuids = createBulkOfInstances(false, 1, names, + CREATE_BULK_OF_ALACARTE_NO_TESTAPI_REQUEST_CYPRESS); + + final String jobId = uuids.get(0); + + assertServiceInfoSpecific2(jobId, JobStatus.COMPLETED, names.get(SERVICE_NAME)); + assertMSOcalledWithOrder(); + } + @Test public void verifyMetricsLogInAsyncInstantiation() { final String UUID_REGEX = "[0-9a-fA-F]{8}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{12}"; - final String msoURL = "/mso/serviceInstantiation/v"; + final String msoURL = "/mso"; deploy1ServiceFromCypress__verifyStatusAndMsoCalls_andRetry("none", emptyMap(), emptyMap(), true); List<String> logLines = LoggerFormatTest.getLogLinesAsList(LogName.metrics2019, 200, 1, restTemplate, uri); @@ -525,6 +593,24 @@ public class AsyncInstantiationALaCarteApiTest extends AsyncInstantiationBase { )); } + + private void assertMSOcalledWithOrder() { + + List<RecordedRequests> requests = retrieveRecordedRequests(); + + String path = "/mso/serviceInstantiation/v7/serviceInstances/.*/vnfs/.*/vfModules"; + List<String> msoVFModulesRequests = + requests.stream().filter(x -> x.path.matches(path)).map(x -> x.body).collect(toList()); + + assertThat("request for vfNodule send with position order", + msoVFModulesRequests, + contains( + containsString("2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0"), + containsString("2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2"), + containsString("2017488PasqualeVpe..PASQUALE_vRE_BV..module-1") + )); + } + private ImmutableList<JobAuditStatus> vidAuditStatusesCompleted(String jobId) { return ImmutableList.of( vidAuditStatus(jobId, "PENDING", false), diff --git a/vid-automation/src/test/java/org/onap/vid/api/ChangeManagementApiTest.java b/vid-automation/src/test/java/org/onap/vid/api/ChangeManagementApiTest.java index 7490c0610..6625d2a41 100644 --- a/vid-automation/src/test/java/org/onap/vid/api/ChangeManagementApiTest.java +++ b/vid-automation/src/test/java/org/onap/vid/api/ChangeManagementApiTest.java @@ -1,50 +1,75 @@ package org.onap.vid.api; +import static org.hamcrest.CoreMatchers.containsString; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.core.IsEqual.equalTo; +import static org.hamcrest.core.IsInstanceOf.instanceOf; +import static org.onap.vid.api.TestUtils.getNestedPropertyInMap; +import static org.testng.AssertJUnit.assertEquals; + import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; +import java.io.IOException; +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.UUID; +import java.util.concurrent.Callable; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.function.Consumer; +import java.util.stream.Collectors; +import java.util.stream.Stream; +import javax.ws.rs.HttpMethod; +import javax.ws.rs.client.Entity; +import javax.ws.rs.client.Invocation; +import javax.ws.rs.client.WebTarget; +import javax.ws.rs.core.GenericType; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; +import org.onap.simulator.presetGenerator.presets.aaf.AAFGetBasicAuthPreset; +import org.onap.simulator.presetGenerator.presets.aaf.AAFGetUrlServicePreset; import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetCloudOwnersByCloudRegionId; +import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetSubscribersGet; import org.onap.simulator.presetGenerator.presets.mso.changeManagement.PresetMsoChangeManagementBase; import org.onap.simulator.presetGenerator.presets.mso.changeManagement.PresetMsoVnfInPlaceSoftwareUpdate; import org.onap.simulator.presetGenerator.presets.mso.changeManagement.PresetMsoVnfReplace; import org.onap.simulator.presetGenerator.presets.mso.changeManagement.PresetMsoVnfUpdate; -import org.onap.simulator.presetGenerator.presets.aaf.*; -import org.onap.vid.model.mso.*; -import org.onap.vid.model.workflow.*; +import org.onap.vid.model.mso.ChangeManagementRequest; +import org.onap.vid.model.mso.ChangeManagementRequestDetails; +import org.onap.vid.model.mso.CloudConfiguration; +import org.onap.vid.model.mso.MsoExceptionResponse; +import org.onap.vid.model.mso.MsoResponseWrapper2; +import org.onap.vid.model.mso.RelatedInstance; +import org.onap.vid.model.mso.RelatedInstanceList; +import org.onap.vid.model.mso.RequestInfo; +import org.onap.vid.model.mso.RequestParameters; +import org.onap.vid.model.workflow.GetVnfWorkflowRelationRequest; +import org.onap.vid.model.workflow.GetWorkflowsResponse; +import org.onap.vid.model.workflow.VnfDetails; +import org.onap.vid.model.workflow.VnfDetailsWithWorkflows; +import org.onap.vid.model.workflow.VnfWorkflowRelationAllResponse; +import org.onap.vid.model.workflow.VnfWorkflowRelationRequest; +import org.onap.vid.model.workflow.VnfWorkflowRelationResponse; +import org.onap.vid.model.workflow.WorkflowsDetail; +import org.onap.vid.more.LoggerFormatTest; import org.springframework.http.HttpStatus; import org.springframework.util.StopWatch; +import org.springframework.web.client.RestTemplate; import org.testng.Assert; import org.testng.annotations.BeforeClass; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import vid.automation.test.services.SimulatorApi; import vid.automation.test.services.SimulatorApi.RegistrationStrategy; +import vid.automation.test.utils.InsecureHttpsClient; import vid.automation.test.utils.ReadFile; -import javax.ws.rs.HttpMethod; -import javax.ws.rs.client.Entity; -import javax.ws.rs.client.Invocation; -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.GenericType; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; -import java.io.IOException; -import java.lang.reflect.Method; -import java.util.*; -import java.util.concurrent.Callable; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.function.Consumer; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -import static org.hamcrest.CoreMatchers.containsString; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.core.IsEqual.equalTo; -import static org.hamcrest.core.IsInstanceOf.instanceOf; -import static org.onap.vid.api.TestUtils.getNestedPropertyInMap; -import static org.testng.AssertJUnit.assertEquals; - //This is integration test that require running tomcat public class ChangeManagementApiTest extends BaseApiTest { @@ -470,6 +495,14 @@ public class ChangeManagementApiTest extends BaseApiTest { Response response = callChangeManagementUpdate(vnfIds, changeManagementRequest); MsoResponseWrapper2 body = response.readEntity(MsoResponseWrapper2.class); assertForHappyPath(vnfIds, body, requestType); + RestTemplate manualRestTemplate = InsecureHttpsClient.newRestTemplate(); + super.loginWithChosenRESTClient(getUserCredentials(), manualRestTemplate); + SimulatorApi.registerExpectationFromPreset( new PresetAAIGetSubscribersGet(), RegistrationStrategy.APPEND); + LoggerFormatTest + .verifyExistenceOfIncomingReqsInAuditLogs(manualRestTemplate, uri, + response.getHeaders().get("X-ECOMP-RequestID-echo").get(0).toString(), + "/vid/change-management/workflow/VidVnf"); + } private ChangeManagementRequest createChangeManagementRequest(VnfIds vnfDetails, String requestType) { diff --git a/vid-automation/src/test/java/org/onap/vid/api/ChangeManagementUserApiLoggingTest.java b/vid-automation/src/test/java/org/onap/vid/api/ChangeManagementUserApiLoggingTest.java index dd58e8198..ac8584406 100644 --- a/vid-automation/src/test/java/org/onap/vid/api/ChangeManagementUserApiLoggingTest.java +++ b/vid-automation/src/test/java/org/onap/vid/api/ChangeManagementUserApiLoggingTest.java @@ -41,6 +41,7 @@ public class ChangeManagementUserApiLoggingTest extends BaseApiTest { String requestId = responseEntity.getHeaders().getFirst("X-ECOMP-RequestID-echo"); LoggerFormatTest.assertHeadersAndMetricLogs(restTemplate, uri, requestId, "/mso/orchestrationRequests/", 2); + LoggerFormatTest.verifyExistenceOfIncomingReqsInAuditLogs(restTemplate, uri, requestId, CHANGE_MANAGEMENT + MSO); } @Test diff --git a/vid-automation/src/test/java/org/onap/vid/api/InstantiationTemplatesApiTest.java b/vid-automation/src/test/java/org/onap/vid/api/InstantiationTemplatesApiTest.java new file mode 100644 index 000000000..f6fbd268d --- /dev/null +++ b/vid-automation/src/test/java/org/onap/vid/api/InstantiationTemplatesApiTest.java @@ -0,0 +1,138 @@ +package org.onap.vid.api; + +import static net.javacrumbs.jsonunit.JsonMatchers.jsonEquals; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.arrayWithSize; +import static org.hamcrest.Matchers.greaterThan; +import static org.onap.vid.api.TestUtils.convertRequest; +import static vid.automation.test.services.SimulatorApi.registerExpectationFromPreset; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.node.ObjectNode; +import java.io.IOException; +import java.util.Map.Entry; +import java.util.function.Predicate; +import java.util.stream.Collectors; +import java.util.stream.Stream; +import org.onap.sdc.ci.tests.datatypes.UserCredentials; +import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetSubscribersGet; +import org.onap.vid.model.mso.MsoResponseWrapper2; +import org.springframework.core.ParameterizedTypeReference; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpMethod; +import org.testng.annotations.AfterMethod; +import org.testng.annotations.Test; +import vid.automation.test.Constants; +import vid.automation.test.model.User; +import vid.automation.test.services.AsyncJobsService; +import vid.automation.test.services.SimulatorApi.RegistrationStrategy; + +public class InstantiationTemplatesApiTest extends AsyncInstantiationBase { + + /* + Testing the Template Topology API should be very thin, given the following + assumptions: + + - Template topology API is relying on Retry's logic. + + - The templates themselves are an actual representation of the initial + state in VID's backend. This is all the knowledge that used to create + a service in the first time. So if API is fed with same state, it already + should be able to reiterate another instance. + + + The tests below will verify that: + + - A request resulting from Cypress test on "instantiation-templates.e2e.ts" + is accepted by API endpoint + + - A valid "regular" (not from template) request, yields a template that a + Cypress is able to deploy. + + These two tests are, technically, cyclic. + + Currently the only test below is shortcutting the both tests, by checking + that feeding a Cypress input yields a Template that is the same. This is + not perfect, but currently what we have. + + */ + + @Override + public UserCredentials getUserCredentials() { + User user = usersService.getUser(Constants.Users.EMANUEL_EMANUEL); + return new UserCredentials(user.credentials.userId, user.credentials.password, Constants.Users.EMANUEL_EMANUEL, "", ""); + } + + @AfterMethod + protected void dropAllFromNameCounter() { + AsyncJobsService asyncJobsService = new AsyncJobsService(); + asyncJobsService.muteAllAsyncJobs(); + asyncJobsService.dropAllFromNameCounter(); + } + + protected String templateTopologyUri(String jobId) { + return uri.toASCIIString() + "/asyncInstantiation/templateTopology/" + jobId; + } + + @Test + public void templateTopology_givenDeployFromCypressE2E_getTemplateTopologyDataIsEquivalent() throws IOException { + templateTopology_givenDeploy_templateTopologyIsEquivalent(objectMapper.readValue( + convertRequest(objectMapper, "asyncInstantiation/templates__instance_template.json"), + JsonNode.class)); + } + + public void templateTopology_givenDeploy_templateTopologyIsEquivalent(JsonNode body) { + registerExpectationFromPreset(new PresetAAIGetSubscribersGet(), RegistrationStrategy.CLEAR_THEN_SET); + + String uuid1 = postAsyncInstanceRequest(body); + JsonNode templateTopology1 = restTemplate.getForObject(templateTopologyUri(uuid1), JsonNode.class); + + assertThat(cleanupTemplate(templateTopology1), jsonEquals(cleanupTemplate(body))); + } + + private JsonNode cleanupTemplate(JsonNode templateTopology) { + return Stream.of(templateTopology) + .map(this::removeTrackById) + .map(this::removeNullValues) + .findAny().get(); + } + + private JsonNode removeTrackById(JsonNode node) { + return removeAny(node, it -> it.getKey().equals("trackById")); + } + + private JsonNode removeNullValues(JsonNode node) { + return removeAny(node, it -> it.getValue().isNull()); + } + + private JsonNode removeAny(JsonNode node, Predicate<Entry<String, JsonNode>> entryPredicate) { + if (node.isObject()) { + ((ObjectNode) node).remove( + Streams.fromIterator(node.fields()) + .filter(entryPredicate) + .map(Entry::getKey) + .collect(Collectors.toList()) + ); + + for (JsonNode child : node) { + removeAny(child, entryPredicate); + } + } + + return node; + } + + private <T> String postAsyncInstanceRequest(T body) { + String[] jobsUuids = (String[]) restTemplate.exchange( + getCreateBulkUri(), + HttpMethod.POST, + new HttpEntity<>(body), + new ParameterizedTypeReference<MsoResponseWrapper2<String[]>>() { + }) + .getBody().getEntity(); + + assertThat(jobsUuids, arrayWithSize(greaterThan(0))); + return jobsUuids[0]; + } + +} diff --git a/vid-automation/src/test/java/org/onap/vid/api/ProbeApiTest.java b/vid-automation/src/test/java/org/onap/vid/api/ProbeApiTest.java index 5ed302468..d3c72dab6 100644 --- a/vid-automation/src/test/java/org/onap/vid/api/ProbeApiTest.java +++ b/vid-automation/src/test/java/org/onap/vid/api/ProbeApiTest.java @@ -1,22 +1,34 @@ package org.onap.vid.api; +import static org.hamcrest.CoreMatchers.anyOf; +import static org.hamcrest.CoreMatchers.both; +import static org.hamcrest.CoreMatchers.endsWith; +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.CoreMatchers.startsWith; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.testng.Assert.assertEquals; +import static vid.automation.test.services.SimulatorApi.RegistrationStrategy.CLEAR_THEN_SET; + import com.google.common.collect.ImmutableList; +import java.lang.reflect.Method; +import java.util.Collection; +import java.util.List; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.builder.ReflectionToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; -import org.junit.Assert; import org.onap.simulator.presetGenerator.presets.BasePresets.BasePreset; import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetSubscribersGet; import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetSubscribersGetInvalidResponse; import org.onap.simulator.presetGenerator.presets.mso.PresetMSOOrchestrationRequestsManyStatusesGet; import org.onap.simulator.presetGenerator.presets.mso.PresetMSOOrchestrationRequestsManyStatusesInvalidResponseGet; +import org.onap.simulator.presetGenerator.presets.scheduler.PresetGetSchedulerChangeManagementInvalidResponse; +import org.onap.simulator.presetGenerator.presets.scheduler.PresetGetSchedulerChangeManagements; import org.onap.simulator.presetGenerator.presets.sdc.PresetSDCGetServiceToscaModelGet; import org.onap.simulator.presetGenerator.presets.sdc.PresetSDCGetServiceToscaModelGetEmptyResult; import org.onap.simulator.presetGenerator.presets.sdc.PresetSDCGetServiceToscaModelGetInvalidResponse; import org.onap.vid.model.probe.ExternalComponentStatus; import org.onap.vid.model.probe.HttpRequestMetadata; -import org.onap.simulator.presetGenerator.presets.scheduler.PresetGetSchedulerChangeManagementInvalidResponse; -import org.onap.simulator.presetGenerator.presets.scheduler.PresetGetSchedulerChangeManagements; import org.springframework.core.ParameterizedTypeReference; import org.springframework.http.HttpMethod; import org.springframework.http.ResponseEntity; @@ -25,19 +37,12 @@ import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import vid.automation.test.services.SimulatorApi; -import java.lang.reflect.Method; -import java.util.Collection; -import java.util.List; - -import static org.hamcrest.CoreMatchers.*; -import static vid.automation.test.services.SimulatorApi.RegistrationStrategy.CLEAR_THEN_SET; - public class ProbeApiTest extends BaseApiTest { private static final String MSO_QUERY_PARAMS = "filter=requestExecutionDate:EQUALS:01-01-2100"; private static final String AAI_QUERY_PARMAS = "business/customers?subscriber-type=INFRA&depth=0"; private static final String SDC_PATH_PARAMS = "46401eec-35bd-4e96-ad0d-0356ff6b8c8d/toscaModel"; - private static final String SCHEDULER_PATH = "http://localhost:1080/scheduler/v1/ChangeManagement/schedules/scheduleDetails/"; + private static final String SCHEDULER_PATH = "/scheduler/v1/ChangeManagement/schedules/scheduleDetails/"; @BeforeClass @@ -203,7 +208,7 @@ public class ProbeApiTest extends BaseApiTest { new ParameterizedTypeReference<List<ExternalComponentStatus>>() { }); List<ExternalComponentStatus> probeResults = response.getBody(); - Assert.assertEquals(5, probeResults.size()); + assertEquals(5, probeResults.size()); assertResultAsExpected(ExternalComponentStatus.Component.AAI, probeResults, expectedStatuses); assertResultAsExpected(ExternalComponentStatus.Component.SDC, probeResults, expectedStatuses); assertResultAsExpected(ExternalComponentStatus.Component.MSO, probeResults, expectedStatuses); @@ -216,16 +221,16 @@ public class ProbeApiTest extends BaseApiTest { ExternalComponentStatus componentStatus = probeResults.stream().filter(x -> x.getComponent() == component) .findFirst().orElseThrow(() -> new AssertionError(component.name()+" result not found in response")); - Assert.assertThat("wrong metadata for " + component, requestMetadataReflected(componentStatus.getMetadata()), + assertThat("wrong metadata for " + component, requestMetadataReflected(componentStatus.getMetadata()), is(requestMetadataReflected(expectedStatus.getMetadata()))); - Assert.assertThat("wrong url for " + component, componentStatus.getMetadata().getUrl(), + assertThat("wrong url for " + component, componentStatus.getMetadata().getUrl(), both(endsWith(expectedStatus.getMetadata().getUrl())).and(startsWith("http"))); - Assert.assertThat("wrong description for " + component, componentStatus.getMetadata().getDescription(), + assertThat("wrong description for " + component, componentStatus.getMetadata().getDescription(), anyOf(equalTo(expectedStatus.getMetadata().getDescription()), startsWith(expectedStatus.getMetadata().getDescription()))); - Assert.assertThat("wrong status for " + component, componentStatus.isAvailable(), is(expectedStatus.isAvailable())); + assertThat("wrong status for " + component, componentStatus.isAvailable(), is(expectedStatus.isAvailable())); } //serialize fields except of fields we cannot know ahead of time diff --git a/vid-automation/src/test/java/org/onap/vid/api/SdcApiTest.java b/vid-automation/src/test/java/org/onap/vid/api/SdcApiTest.java index 858b2f8ef..ba70ca94a 100644 --- a/vid-automation/src/test/java/org/onap/vid/api/SdcApiTest.java +++ b/vid-automation/src/test/java/org/onap/vid/api/SdcApiTest.java @@ -21,8 +21,10 @@ package org.onap.vid.api; import static net.javacrumbs.jsonunit.JsonMatchers.jsonEquals; +import static net.javacrumbs.jsonunit.JsonMatchers.jsonPartEquals; import static net.javacrumbs.jsonunit.JsonMatchers.jsonStringEquals; import static net.javacrumbs.jsonunit.core.Option.IGNORING_ARRAY_ORDER; +import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.core.Is.is; import static org.hamcrest.core.IsNot.not; @@ -129,7 +131,16 @@ public class SdcApiTest extends BaseApiTest { ResponseEntity<String> response = restTemplate.getForEntity(buildUri(SDC_GET_SERVICE_MODEL + MACRO_INSTANTIATION_TYPE_UUID), String.class); assertEquals(response.getStatusCode(), HttpStatus.OK); String emptyInstantiationTypeExpectedResponse = loadResourceAsString(EMPTY_INSTANTIATION_TYPE_EXPECTED_RESPONSE); - assertThat("The response is in the format of JSON", response.getBody(), is(jsonStringEquals(turnOffInstantiationUI(emptyInstantiationTypeExpectedResponse)))); + + final String body = response.getBody(); + + assertThat(body, jsonEquals(emptyInstantiationTypeExpectedResponse) + .when(IGNORING_ARRAY_ORDER) + .whenIgnoringPaths("service.vidNotions.instantiationUI", "service.vidNotions.instantiationType")); + + assertThat(body, jsonPartEquals("service.vidNotions.instantiationType", + Features.FLAG_2002_IDENTIFY_INVARIANT_MACRO_UUID_BY_BACKEND.isActive() + ? "ALaCarte" : "ClientConfig")); } @Test @@ -149,7 +160,9 @@ public class SdcApiTest extends BaseApiTest { ResponseEntity<String> response = restTemplate.getForEntity(buildUri(SDC_GET_SERVICE_MODEL + MIN_MAX_INITIAL_UUID), String.class); assertEquals(response.getStatusCode(), HttpStatus.OK); String minMaxInitialExpectedResponse = loadResourceAsString("sdcApiTest/minMaxInitialExpectedResponse.json"); - assertThat("The response is in the format of JSON", response.getBody(), is(jsonStringEquals(turnOffInstantiationUI(minMaxInitialExpectedResponse)))); + assertThat(response.getBody(), jsonEquals(minMaxInitialExpectedResponse) + .when(IGNORING_ARRAY_ORDER) + .whenIgnoringPaths("service.vidNotions.instantiationUI", "service.vidNotions.instantiationType", "service.vidNotions.viewEditUI")); } @Test @@ -163,12 +176,18 @@ public class SdcApiTest extends BaseApiTest { @Test @FeatureTogglingTest(Features.FLAG_1902_VNF_GROUPING) - public void getServiceModelWithServiceRoleGrouping(){ + public void getServiceModelWithServiceRoleGrouping() throws Exception { registerToSimulatorWithPresets(GROUPING_SERVICE_ROLE_UUID, GROUPING_SERVICE_ROLE_INVARIANT_UUID, GROUPING_SERVICE_ROLE_FILE_PATH); ResponseEntity<String> response = restTemplate.getForEntity(buildUri(SDC_GET_SERVICE_MODEL + GROUPING_SERVICE_ROLE_UUID), String.class); assertEquals(response.getStatusCode(), HttpStatus.OK); String groupingServiceRoleExpectedResponse = loadResourceAsString(GROUPING_SERVICE_ROLE_EXPECTED_RESPONSE); - assertThat("The response is in the format of JSON", response.getBody(), is(jsonStringEquals(groupingServiceRoleExpectedResponse))); + assertThat(response.getBody(), jsonEquals(groupingServiceRoleExpectedResponse) + .when(IGNORING_ARRAY_ORDER) + .whenIgnoringPaths("service.vidNotions.instantiationUI")); + + //assert that instantiationUI is not legacy + JsonNode instantiationUI = objectMapper.readValue(response.getBody(), JsonNode.class).get("service").get("vidNotions").get("instantiationUI"); + assertThat(instantiationUI.asText(), not(equalTo("legacy"))); } private void registerToSimulatorWithPresets(String uuid, String invariantUuid, String pathPath){ @@ -178,15 +197,6 @@ public class SdcApiTest extends BaseApiTest { registerExpectationFromPresets(presets, CLEAR_THEN_SET); } - private String turnOffInstantiationUI(String expectedJson) { - if (!Features.FLAG_5G_IN_NEW_INSTANTIATION_UI.isActive()) { - // replaces the instantiationUI field-value with "legacy", whatever it was - return expectedJson.replaceFirst("(\"instantiationUI\": *\")[^\"]*(\",)", "$1legacy$2"); - } else { - return expectedJson; - } - } - @Test public void withModelFromE2eWithToscaParserButNewFlow_requestModels_expectVnfRelatedVfModulesNotNull() { diff --git a/vid-automation/src/test/java/org/onap/vid/api/ServiceTreeApiTest.java b/vid-automation/src/test/java/org/onap/vid/api/ServiceTreeApiTest.java index f8bdc97e2..5d07a4ee8 100644 --- a/vid-automation/src/test/java/org/onap/vid/api/ServiceTreeApiTest.java +++ b/vid-automation/src/test/java/org/onap/vid/api/ServiceTreeApiTest.java @@ -39,6 +39,7 @@ import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; import org.testng.util.RetryAnalyzerCount; import vid.automation.test.services.SimulatorApi; +import vid.automation.test.services.SimulatorApi.RegistrationStrategy; public class ServiceTreeApiTest extends BaseApiTest { @@ -179,7 +180,12 @@ public class ServiceTreeApiTest extends BaseApiTest { .replace("VNF4_INSTANCE_TYPE", vnfPreset4.getInstanceType()); assertJsonEquals(response, expected); + + SimulatorApi.registerExpectationFromPreset(new PresetAAIGetSubscribersGet(), RegistrationStrategy.APPEND); LoggerFormatTest.assertHeadersAndMetricLogs(restTemplate, uri, echoedRequestId(responseEntity), "/network/generic-vnfs/generic-vnf/", 5); + // org.onap.vid.aai.AaiClient.getCloudRegionAndTenantByVnfId for presets PresetAAIGetCloudRegionFromVnf is + // PUTing to AAI, so path is just /aai/v../query + LoggerFormatTest.assertHeadersAndMetricLogs(restTemplate, uri, echoedRequestId(responseEntity), "/query", 4); } @Test diff --git a/vid-automation/src/test/java/org/onap/vid/api/VersionControllerApiTest.java b/vid-automation/src/test/java/org/onap/vid/api/VersionControllerApiTest.java index 4dc799193..0574cec17 100644 --- a/vid-automation/src/test/java/org/onap/vid/api/VersionControllerApiTest.java +++ b/vid-automation/src/test/java/org/onap/vid/api/VersionControllerApiTest.java @@ -1,19 +1,18 @@ package org.onap.vid.api; +import java.util.HashMap; import org.junit.Assert; import org.springframework.core.ParameterizedTypeReference; import org.springframework.http.ResponseEntity; -import org.springframework.web.client.RestTemplate; import org.testng.annotations.Test; - -import java.util.HashMap; +import vid.automation.test.utils.InsecureHttpsClient; public class VersionControllerApiTest extends BaseApiTest { @Test public void probeRequest_returnsResponseAsExpected() { // without log-in - ResponseEntity<HashMap<String, String>> response = new RestTemplate().exchange( + ResponseEntity<HashMap<String, String>> response = InsecureHttpsClient.newRestTemplate().exchange( uri + "/version", org.springframework.http.HttpMethod.GET, null, diff --git a/vid-automation/src/test/java/org/onap/vid/more/LoggerFormatTest.java b/vid-automation/src/test/java/org/onap/vid/more/LoggerFormatTest.java index 7a4eedfa9..b65e797b8 100644 --- a/vid-automation/src/test/java/org/onap/vid/more/LoggerFormatTest.java +++ b/vid-automation/src/test/java/org/onap/vid/more/LoggerFormatTest.java @@ -9,12 +9,17 @@ import static org.hamcrest.Matchers.allOf; import static org.hamcrest.Matchers.contains; import static org.hamcrest.Matchers.containsInAnyOrder; import static org.hamcrest.Matchers.containsInRelativeOrder; +import static org.hamcrest.Matchers.either; +import static org.hamcrest.Matchers.emptyOrNullString; import static org.hamcrest.Matchers.greaterThan; import static org.hamcrest.Matchers.greaterThanOrEqualTo; import static org.hamcrest.Matchers.hasSize; +import static org.hamcrest.Matchers.matchesPattern; import static vid.automation.test.services.SimulatorApi.retrieveRecordedRequests; import com.fasterxml.jackson.databind.JsonNode; + +import java.lang.reflect.Method; import java.net.URI; import java.util.ArrayList; import java.util.Arrays; @@ -26,10 +31,12 @@ import java.util.Map; import org.apache.commons.lang3.StringUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import org.jetbrains.annotations.NotNull; import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetSubscribersGet; import org.onap.vid.api.BaseApiTest; import org.springframework.web.client.RestTemplate; import org.testng.annotations.BeforeClass; +import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import vid.automation.test.services.SimulatorApi; import vid.automation.test.services.SimulatorApi.RecordedRequests; @@ -38,9 +45,10 @@ public class LoggerFormatTest extends BaseApiTest { private final static String logChecker = System.getProperty("EELF_LOG_CHECKER", "http://my-logchecker:8888/validate"); private final Logger logger = LogManager.getLogger(LoggerFormatTest.class); + private final int PRIORITY_LAST = 999; public enum LogName { - audit2019, error, metrics2019 + audit2019, error, metrics2019, debug } @BeforeClass @@ -53,33 +61,51 @@ public class LoggerFormatTest extends BaseApiTest { SimulatorApi.registerExpectationFromPreset(new PresetAAIGetSubscribersGet(), SimulatorApi.RegistrationStrategy.CLEAR_THEN_SET); } - @Test - public void validateAudit2019LogsFormat() { - validateLogsFormat(LogName.audit2019, "audit-ELS-2019.11"); + @DataProvider + public static Object[][] logsAndFormats(Method test) { + return new Object[][]{ + {LogName.debug, "debug", 0.65 }, + {LogName.metrics2019, "metric-ELS-2019.11", 0.95}, + {LogName.audit2019, "audit-ELS-2019.11", 0.95} + }; } - @Test(enabled = false) // no total-score is returned for error-log - public void validateErrorLogsFormat() { - validateLogsFormat(LogName.error); - } - @Test - public void validateMetrics2019LogsFormat() { - validateLogsFormat(LogName.metrics2019, "metric-ELS-2019.11"); + @Test(dataProvider = "logsAndFormats", priority = PRIORITY_LAST) + public void validateLogsAndFormat(LogName logName, String logCheckerFormat, Double expectedRank){ + String logLines = validateLogsFormat(logName, logCheckerFormat, expectedRank); + + if (logName == LogName.audit2019) + { + moreValidationsForAuditFormat(logLines); + } } - private void validateLogsFormat(LogName logName) { - validateLogsFormat(logName, logName.name()); + //more validations for log format that logcheck doesn't verify + private void moreValidationsForAuditFormat (String logLines){ + splitLogLines(logLines).forEach(line -> { + String[] records = line.split("\\|"); + assertThat("server name shall be empty", records[5], emptyOrNullString()); + + //authenticated request shall logs with userId. + final String serviceName = records[6]; + if (StringUtils.containsAny(serviceName, "aai", "mso")) { + assertThat("Partner name shall be userId", records[7], matchesPattern("^[A-Za-z0-9]{4,15}$")); + } + + assertThat("Severity shall be empty", records[13], emptyOrNullString()); + assertThat("marker", records[21], either(is("ENTRY")).or(is("EXIT"))); + }); } - private void validateLogsFormat(LogName logName, String logType) { - validateLogsFormat(logName, logType, 0.95); + private String validateLogsFormat (LogName logName, String logType){ + return validateLogsFormat(logName, logType, 0.95); } - private void validateLogsFormat(LogName logName, String logType, double score) { + private String validateLogsFormat (LogName logName, String logType,double score){ String logLines = getLogLines(logName); - logger.info("logLines are: "+logLines); + logger.info("logLines are: " + logLines); JsonNode response = getCheckerResults(logType, logLines); logger.info("Response is:" + response.toString()); @@ -87,29 +113,29 @@ public class LoggerFormatTest extends BaseApiTest { int valid_records = response.path("summary").path("valid_records").asInt(); assertThat(total_records, greaterThan(30)); //make sure we have at least 30 total records - assertThat((double)valid_records/total_records, is(greaterThanOrEqualTo(score))); + assertThat((double) valid_records / total_records, is(greaterThanOrEqualTo(score))); + + return logLines; } - private String getLogLines(LogName logname) { + private String getLogLines (LogName logname){ return getLogLines(logname, 5000, 30, restTemplate, uri); } - public static String getLogLines(LogName logname, int maxRows, int minRows, RestTemplate restTemplate, URI uri) { + public static String getLogLines (LogName logname,int maxRows, int minRows, RestTemplate restTemplate, URI uri){ String logLines = restTemplate.getForObject(uri + "/logger/" + logname.name() + "?limit={maxRows}", String.class, maxRows); assertThat("expecting at least " + minRows + " rows in " + logname.name(), - StringUtils.countMatches(logLines, '\n') + 1, - is(greaterThanOrEqualTo(minRows))); + StringUtils.countMatches(logLines, '\n') + 1, + is(greaterThanOrEqualTo(minRows))); return logLines; } /** * @return Chronological-ordered list of recent log-lines */ - public static List<String> getLogLinesAsList(LogName logname, int maxRows, int minRows, RestTemplate restTemplate, URI uri) { + public static List<String> getLogLinesAsList (LogName logname,int maxRows, int minRows, RestTemplate restTemplate, URI uri){ String logLines = LoggerFormatTest.getLogLines(logname, maxRows, minRows, restTemplate, uri); - - // Split - List<String> lines = new ArrayList<>(Arrays.asList(logLines.split("(\\r?\\n)"))); + List<String> lines = splitLogLines(logLines); // Reverse reverse(lines); @@ -117,11 +143,16 @@ public class LoggerFormatTest extends BaseApiTest { return lines; } + @NotNull + private static List<String> splitLogLines (String logLines){ + return new ArrayList<>(Arrays.asList(logLines.split("(\\r?\\n)"))); + } + /** * @return Chronological-ordered list of recent log-lines of a given requestId */ - public static List<String> getRequestLogLines(String requestId, LogName logname, RestTemplate restTemplate, URI uri) { + public static List<String> getRequestLogLines (String requestId, LogName logname, RestTemplate restTemplate, URI uri){ List<String> lines = getLogLinesAsList(logname, 30, 1, restTemplate, uri); @@ -131,35 +162,38 @@ public class LoggerFormatTest extends BaseApiTest { return lines; } - public static void verifyExistenceOfIncomingReqsInAuditLogs(RestTemplate restTemplate, URI uri, String requestId, - String path){ + public static void verifyExistenceOfIncomingReqsInAuditLogs (RestTemplate restTemplate, URI uri, String requestId, String path){ List<String> logLines = getRequestLogLines(requestId, LogName.audit2019, restTemplate, uri); String requestIdPrefix = "RequestID="; - assertThat("request id must be found in exactly two rows - entry & exit message in audit log, and include the req path", - logLines, - containsInRelativeOrder( - allOf( - containsString(requestIdPrefix+requestId), - containsString("ENTRY"), - containsString(path)), - allOf( - containsString(requestIdPrefix+requestId), - containsString("EXIT"), - containsString(path)) - )); - } - - public static void assertHeadersAndMetricLogs(RestTemplate restTemplate, URI uri, String requestId, String path, int requestsSize) { + assertThat("\nENTRY & EXIT logs are expected to include RequestId: " + requestId + + " \nAnd request path: " + + path + + "\nin exactly two rows - inside the audit log matching lines:\n" + + String.join("\n", logLines) + "\n", + logLines, + contains( + allOf( + containsString(requestIdPrefix + requestId), + containsString("ENTRY"), + containsString(path)), + allOf( + containsString(requestIdPrefix + requestId), + containsString("EXIT"), + containsString(path)) + )); + } + + public static void assertHeadersAndMetricLogs (RestTemplate restTemplate, URI uri, String requestId, String path, int requestsSize){ List<String> logLines = - getRequestLogLines(requestId, LogName.metrics2019, restTemplate, uri); + getRequestLogLines(requestId, LogName.metrics2019, restTemplate, uri); List<RecordedRequests> requests = retrieveRecordedRequests(); List<RecordedRequests> underTestRequests = - requests.stream().filter(x->x.path.contains(path)).collect(toList()); + requests.stream().filter(x -> x.path.contains(path)).collect(toList()); assertThat(underTestRequests, hasSize(requestsSize)); - underTestRequests.forEach(request-> { + underTestRequests.forEach(request -> { assertThat("X-ONAP-RequestID", request.headers.get("X-ONAP-RequestID"), contains(requestId)); assertThat("X-ECOMP-RequestID", request.headers.get("X-ECOMP-RequestID"), contains(requestId)); assertThat("X-ONAP-PartnerName", request.headers.get("X-ONAP-PartnerName"), contains("VID.VID")); @@ -167,7 +201,7 @@ public class LoggerFormatTest extends BaseApiTest { List<String> allInvocationIds = new LinkedList<>(); - underTestRequests.forEach(request->{ + underTestRequests.forEach(request -> { List<String> invocationIds = request.headers.get("X-InvocationID"); assertThat(invocationIds, hasSize(1)); @@ -180,25 +214,25 @@ public class LoggerFormatTest extends BaseApiTest { //make sure no InvocationId is repeated twice assertThat("expect all InvocationIds to be unique", - allInvocationIds, containsInAnyOrder(new HashSet<>(allInvocationIds).toArray())); + allInvocationIds, containsInAnyOrder(new HashSet<>(allInvocationIds).toArray())); } - public static void assertIdsInMetricsLog(List<String> logLines, String requestId, String invocationId) { + public static void assertIdsInMetricsLog (List < String > logLines, String requestId, String invocationId){ assertThat("request id and invocation id must be found in exactly two rows in: \n" + String.join("\n", logLines), - logLines, - containsInRelativeOrder( - allOf( - containsString("RequestID="+requestId), - containsString("InvocationID="+ invocationId), - containsString("Invoke")), - allOf( - containsString("RequestID="+requestId), - containsString("InvocationID="+ invocationId), - containsString("InvokeReturn")) - )); - } - - private JsonNode getCheckerResults(String logtype, String logLines) { + logLines, + containsInRelativeOrder( + allOf( + containsString("RequestID=" + requestId), + containsString("InvocationID=" + invocationId), + containsString("Invoke")), + allOf( + containsString("RequestID=" + requestId), + containsString("InvocationID=" + invocationId), + containsString("InvokeReturn")) + )); + } + + private JsonNode getCheckerResults (String logtype, String logLines){ Map<String, String> params = new HashMap<>(); params.put("format", "raw"); params.put("type", logtype); diff --git a/vid-automation/src/test/java/org/onap/vid/more/RequestIdFilterInstalled.java b/vid-automation/src/test/java/org/onap/vid/more/RequestIdFilterInstalled.java index 93ab14036..d4a1ce3f8 100644 --- a/vid-automation/src/test/java/org/onap/vid/more/RequestIdFilterInstalled.java +++ b/vid-automation/src/test/java/org/onap/vid/more/RequestIdFilterInstalled.java @@ -136,10 +136,14 @@ public class RequestIdFilterInstalled extends BaseApiTest { @Test public void healthcheck_doGET_RequestIdReceived() { + String path = "/healthCheck"; final Pair<HttpEntity, String> responseAndUuid = makeRequest( - HttpMethod.GET, "/healthCheck", null + HttpMethod.GET, path, null ); assertThatUuidInResponseAndUuidIsInARecentLog(LogName.audit2019, responseAndUuid); + LoggerFormatTest + .verifyExistenceOfIncomingReqsInAuditLogs(restTemplate, uri, + responseAndUuid.getKey().getHeaders().get("X-ECOMP-RequestID-echo").get(0).toString(), path); } private void assertThatUuidInResponseAndUuidIsInARecentLog(LogName logName, Pair<HttpEntity, String> responseAndUuid) { diff --git a/vid-automation/src/test/resources/a-la-carte/redux-a-la-carte-no-testapi.json b/vid-automation/src/test/resources/a-la-carte/redux-a-la-carte-no-testapi.json index a6c4dc16f..1c22fb894 100644 --- a/vid-automation/src/test/resources/a-la-carte/redux-a-la-carte-no-testapi.json +++ b/vid-automation/src/test/resources/a-la-carte/redux-a-la-carte-no-testapi.json @@ -13,6 +13,7 @@ "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0": { "instanceName": "mimazepubi", "lcpCloudRegionId": "hvf6", + "position": "2", "tenantId": "624eb554b0d147c19ff8885341760481", "rollbackOnFailure": "false", "sdncPreLoad": false, @@ -37,6 +38,7 @@ "instanceName": "puwesovabe", "volumeGroupName": "puwesovabe_vol", "lcpCloudRegionId": "AAIAIC25", + "position": "3", "legacyRegion": "my region", "tenantId": "092eb9e8e4b7412e8787dd091bc58e86", "rollbackOnFailure": "true", @@ -68,6 +70,7 @@ "instanceName": "bnmgtrx", "volumeGroupName": "", "lcpCloudRegionId": "hvf6", + "position": "1", "tenantId": "624eb554b0d147c19ff8885341760481", "rollbackOnFailure": "false", "sdncPreLoad": false, @@ -98,7 +101,7 @@ "lcpCloudRegionId": "AAIAIC25", "legacyRegion": "just another region", "tenantId": "092eb9e8e4b7412e8787dd091bc58e86", - "platformName": "xxx1", + "platformName": "xxx1,platform", "lineOfBusiness": "zzz1", "instanceParams": [ {} diff --git a/vid-automation/src/test/resources/a-la-carte/redux-a-la-carte.json b/vid-automation/src/test/resources/a-la-carte/redux-a-la-carte.json index cc1d5b566..7924340c0 100644 --- a/vid-automation/src/test/resources/a-la-carte/redux-a-la-carte.json +++ b/vid-automation/src/test/resources/a-la-carte/redux-a-la-carte.json @@ -98,7 +98,7 @@ "lcpCloudRegionId": "AAIAIC25", "legacyRegion": "just another region", "tenantId": "092eb9e8e4b7412e8787dd091bc58e86", - "platformName": "xxx1", + "platformName": "xxx1,platform", "lineOfBusiness": "zzz1", "instanceParams": [ {} diff --git a/vid-automation/src/test/resources/asyncInstantiation/ServiceTreeForRetry_serviceInstance.json b/vid-automation/src/test/resources/asyncInstantiation/ServiceTreeForRetry_serviceInstance.json index 5139aa0c0..d5b282e89 100644 --- a/vid-automation/src/test/resources/asyncInstantiation/ServiceTreeForRetry_serviceInstance.json +++ b/vid-automation/src/test/resources/asyncInstantiation/ServiceTreeForRetry_serviceInstance.json @@ -55,7 +55,7 @@ "instanceParams": [], "pause": false, "bulkSize": 1, - "rollbackOnFailure": false, + "rollbackOnFailure": "false", "isALaCarte": true, "testApi": "VNF_API", "instanceId": "INSTANCE_ID", diff --git a/vid-automation/src/test/resources/asyncInstantiation/ServiceWithFailedServiceInstance.json b/vid-automation/src/test/resources/asyncInstantiation/ServiceWithFailedServiceInstance.json index 849cb7e43..28761f393 100644 --- a/vid-automation/src/test/resources/asyncInstantiation/ServiceWithFailedServiceInstance.json +++ b/vid-automation/src/test/resources/asyncInstantiation/ServiceWithFailedServiceInstance.json @@ -27,7 +27,7 @@ "pause": false, "productFamilyId": "ddf9cc0f-6331-4d35-bed0-a37f2d5e9cb3", "projectName": "zasaki", - "rollbackOnFailure": false, + "rollbackOnFailure": "false", "statusMessage": "The service instantiation is failed.", "subscriberName": "SILVIA ROBBINS", "subscriptionServiceType": "TYLER SILVIA", diff --git a/vid-automation/src/test/resources/asyncInstantiation/templates__instance_template.json b/vid-automation/src/test/resources/asyncInstantiation/templates__instance_template.json new file mode 100644 index 000000000..8a6401083 --- /dev/null +++ b/vid-automation/src/test/resources/asyncInstantiation/templates__instance_template.json @@ -0,0 +1,130 @@ +{ + "action": "Create", + "instanceName": "vProbe_NC_Service_DG_new_SI", + "productFamilyId": null, + "lcpCloudRegionId": null, + "tenantId": null, + "modelInfo": { + "modelInvariantId": "90a32d31-8a01-4de2-a91f-7e2414d6f5aa", + "modelVersionId": "6cfeeb18-c2b0-49df-987a-da47493c8e38", + "modelName": "vProbe_NC_Service", + "modelType": "service", + "modelVersion": "1.0" + }, + "globalSubscriberId": "e433710f-9217-458d-a79d-1c7aff376d89", + "subscriptionServiceType": "TYLER SILVIA", + "owningEntityId": "d61e6f2d-12fa-4cc2-91df-7c244011d6fc", + "owningEntityName": "WayneHolland", + "tenantName": null, + "aicZoneId": null, + "aicZoneName": null, + "projectName": "WATKINS", + "subscriberName": "SILVIA ROBBINS", + "rollbackOnFailure": "true", + "isALaCarte": true, + "testApi": "GR_API", + "trackById": "36601560-f8e3-4020-bdef-3e4709c51e84", + "existingVNFCounterMap": { + "024a417d-ca46-40bf-95ce-809c6a269011": 1 + }, + "existingVRFCounterMap": {}, + "existingVnfGroupCounterMap": {}, + "existingNetworksCounterMap": {}, + "vnfs": { + "vProbe_NC_VNF 0": { + "modelInfo": { + "modelCustomizationName": "vProbe_NC_VNF 0", + "modelCustomizationId": "024a417d-ca46-40bf-95ce-809c6a269011", + "modelInvariantId": "a6a96924-b9c5-4c85-ae18-cbfca848095e", + "modelVersionId": "21ae311e-432f-4c54-b855-446d0b8ded72", + "modelName": "vProbe_NC_VNF", + "modelType": "vnf", + "modelVersion": "1.0" + }, + "productFamilyId": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb", + "instanceName": "hvf6arlba007", + "action": "Create", + "platformName": "xxx1", + "lcpCloudRegionId": "hvf6", + "tenantId": "4914ab0ab3a743e58f0eefdacc1dde77", + "instanceParams": [ + {} + ], + "rollbackOnFailure": true, + "instanceId": null, + "vfModules": { + "vprobe_nc_vnf0..VprobeNcVnf..FE_base_module..module-0": { + "vprobe_nc_vnf0..VprobeNcVnf..FE_base_module..module-0ahubg": { + "modelInfo": { + "modelCustomizationName": "VprobeNcVnf..FE_base_module..module-0", + "modelCustomizationId": "4d0818cf-eaa9-4a3f-89c2-639953089e14", + "modelInvariantId": "29b6fa3c-aeb3-4103-b3f7-6f98e097b005", + "modelVersionId": "c5b26cc1-a66f-4b69-aa23-6abc7c647c88", + "modelName": "VprobeNcVnf..FE_base_module..module-0", + "modelType": "vfModule", + "modelVersion": "1" + }, + "instanceName": "hvf6arlba007_lba_Base_01", + "action": "Create", + "lcpCloudRegionId": "hvf6", + "tenantId": "4914ab0ab3a743e58f0eefdacc1dde77", + "instanceParams": [ + {} + ], + "rollbackOnFailure": true, + "trackById": "ea2879a6-10bc-4697-90d7-7bc3e71da0fd", + "isFailed": false + } + }, + "vprobe_nc_vnf0..VprobeNcVnf..FE_Add_On_Module_vlbagent_eph..module-1": { + "vprobe_nc_vnf0..VprobeNcVnf..FE_Add_On_Module_vlbagent_eph..module-1yprvi": { + "modelInfo": { + "modelCustomizationName": "VprobeNcVnf..FE_Add_On_Module_vlbagent_eph..module-1", + "modelCustomizationId": "9b99d340-a80b-45ef-9ff1-993fa3e4c001", + "modelInvariantId": "1bcc4824-6c1a-4b51-af7c-076b7fc14d05", + "modelVersionId": "c09e4530-8fd8-418f-9483-2f57ce927b05", + "modelName": "VprobeNcVnf..FE_Add_On_Module_vlbagent_eph..module-1", + "modelType": "vfModule", + "modelVersion": "1" + }, + "instanceName": "hvf6arlba007_lba_dj_01", + "action": "Create", + "lcpCloudRegionId": "hvf6", + "tenantId": "4914ab0ab3a743e58f0eefdacc1dde77", + "instanceParams": [ + {} + ], + "rollbackOnFailure": true, + "trackById": "b134410e-3bc0-478e-883e-1b6bdf8a28df", + "isFailed": false, + "volumeGroupInstanceName": "hvf6arlba007_lba_dj_01_vol", + "usePreload": true + } + } + }, + "trackById": "1d2848a0-3573-4d29-b3dd-60bb263260ea", + "isFailed": false, + "statusMessage": null, + "position": null, + "lineOfBusiness": "zzz1" + } + }, + "networks": {}, + "vrfs": {}, + "vnfGroups": {}, + "instanceParams": [ + {} + ], + "pause": false, + "bulkSize": 1, + "instanceId": null, + "isFailed": false, + "statusMessage": null, + "vidNotions": { + "instantiationUI": "anyAlacarteWhichNotExcluded", + "modelCategory": "5G Fabric Configuration", + "viewEditUI": "legacy", + "instantiationType": "ALaCarte" + }, + "position": null +} diff --git a/vid-automation/src/test/resources/features.properties b/vid-automation/src/test/resources/features.properties index 1324403c6..a1a6cf733 100644 --- a/vid-automation/src/test/resources/features.properties +++ b/vid-automation/src/test/resources/features.properties @@ -1,12 +1,8 @@ -CREATE_INSTANCE_TEST = false -EMPTY_DRAWING_BOARD_TEST = false FLAG_ADD_MSO_TESTAPI_FIELD = true FLAG_NETWORK_TO_ASYNC_INSTANTIATION = false FLAG_SERVICE_MODEL_CACHE = true FLAG_SHOW_ASSIGNMENTS = true FLAG_SHOW_VERIFY_SERVICE = true -FLAG_DEFAULT_VNF = true -FLAG_SETTING_DEFAULTS_IN_DRAWING_BOARD = true FLAG_RESTRICTED_SELECT = false FLAG_FABRIC_CONFIGURATION_ASSIGNMENTS = true FLAG_A_LA_CARTE_AUDIT_INFO=true @@ -19,7 +15,6 @@ FLAG_EXP_ANY_ALACARTE_NEW_INSTANTIATION_UI=false FLAG_ENABLE_WEBPACK_MODERN_UI = false FLAG_1810_CR_ADD_CLOUD_OWNER_TO_MSO_REQUEST=true FLAG_1810_CR_LET_SELECTING_COLLECTOR_TYPE_UNCONDITIONALLY=true -FLAG_1810_CR_SOFT_DELETE_ALACARTE_VF_MODULE = true FLAG_1810_AAI_LOCAL_CACHE = true FLAG_1902_NEW_VIEW_EDIT= false FLAG_EXP_USE_DEFAULT_HOST_NAME_VERIFIER = false @@ -37,3 +32,5 @@ FLAG_FLASH_REDUCED_RESPONSE_CHANGEMG = true FLAG_1911_INSTANTIATION_ORDER_IN_ASYNC_ALACARTE = false FLAG_SHOW_ORCHESTRATION_TYPE = false FLAG_1911_INSTANTIATION_ORDER_BUTTON_IN_ASYNC_ALACARTE = false +FLAG_A_LA_CARTE_PLATFORM_MULTI_SELECT = false + |