aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--catalog-ui/src/app/ng2/pages/properties-assignment/properties-assignment.page.component.html2
-rw-r--r--integration-tests/src/test/java/org/onap/sdc/frontend/ci/tests/execute/sanity/ServiceTemplateDesignUiTests.java52
-rw-r--r--integration-tests/src/test/java/org/onap/sdc/frontend/ci/tests/pages/ResourcePropertiesAssignmentInputTab.java17
-rw-r--r--integration-tests/src/test/java/org/onap/sdc/frontend/ci/tests/pages/ResourcePropertiesAssignmentPage.java37
-rw-r--r--integration-tests/src/test/java/org/onap/sdc/frontend/ci/tests/pages/ResourcePropertiesAssignmentTab.java25
-rw-r--r--integration-tests/src/test/resources/ci/testSuites/frontend/onapUiSanity.xml1
6 files changed, 130 insertions, 4 deletions
diff --git a/catalog-ui/src/app/ng2/pages/properties-assignment/properties-assignment.page.component.html b/catalog-ui/src/app/ng2/pages/properties-assignment/properties-assignment.page.component.html
index 46e4d47339..8847e96d18 100644
--- a/catalog-ui/src/app/ng2/pages/properties-assignment/properties-assignment.page.component.html
+++ b/catalog-ui/src/app/ng2/pages/properties-assignment/properties-assignment.page.component.html
@@ -79,7 +79,7 @@
*ngIf="isPropertiesTabSelected && !isSelf()"
[disabled]="checkedPropertiesCount != 1 || isReadonly || hasChangedData"
class="tlv-btn blue declare-button"
- data-tests-id="declare-button declare-input">{{btnSelectInputText}}</button>
+ data-tests-id="declare-button select-input">{{btnSelectInputText}}</button>
<button class="tlv-btn blue declare-button" [disabled]="!checkedPropertiesCount || isReadonly || hasChangedData" (click)="declareProperties()" data-tests-id="declare-button declare-input">Declare Input</button>
<button class="tlv-btn blue declare-button" [disabled]="!checkedPropertiesCount || isReadonly || hasChangedData || isSelf()" (click)="declarePropertiesToPolicies()" data-tests-id="declare-button declare-policy">Declare Policy</button>
<button class="tlv-btn blue declare-button" [disabled]="!checkedPropertiesCount || checkedChildPropertiesCount || isReadonly || hasChangedData" (click)="declareListProperties()" data-tests-id="declare-but($event)ton declare-list-input">Create List Input</button>
diff --git a/integration-tests/src/test/java/org/onap/sdc/frontend/ci/tests/execute/sanity/ServiceTemplateDesignUiTests.java b/integration-tests/src/test/java/org/onap/sdc/frontend/ci/tests/execute/sanity/ServiceTemplateDesignUiTests.java
index 2fcd29fc7e..2a803ea298 100644
--- a/integration-tests/src/test/java/org/onap/sdc/frontend/ci/tests/execute/sanity/ServiceTemplateDesignUiTests.java
+++ b/integration-tests/src/test/java/org/onap/sdc/frontend/ci/tests/execute/sanity/ServiceTemplateDesignUiTests.java
@@ -64,8 +64,8 @@ import org.onap.sdc.frontend.ci.tests.flow.CreateDirectiveNodeFilterFlow;
import org.onap.sdc.frontend.ci.tests.flow.CreateSubstitutionFilterFlow;
import org.onap.sdc.frontend.ci.tests.flow.CreateVfFlow;
import org.onap.sdc.frontend.ci.tests.flow.CreateVfcFlow;
-import org.onap.sdc.frontend.ci.tests.flow.DownloadCsarArtifactFlow;
import org.onap.sdc.frontend.ci.tests.flow.DownloadToscaTemplateFlow;
+import org.onap.sdc.frontend.ci.tests.flow.DownloadCsarArtifactFlow;
import org.onap.sdc.frontend.ci.tests.flow.EditComponentPropertiesFlow;
import org.onap.sdc.frontend.ci.tests.flow.composition.CreateRelationshipFlow;
import org.onap.sdc.frontend.ci.tests.flow.exception.UiTestFlowRuntimeException;
@@ -308,6 +308,19 @@ public class ServiceTemplateDesignUiTests extends SetupCDTest {
verifyToscaTemplateHasDirectiveNodeFilter(yaml, serviceDependencyProperty, vfcNameInComposition);
}
+ @Test(dependsOnMethods = "addComponentProperty")
+ public void declareInputFromProperties() throws Exception {
+ componentPage = (ComponentPage) homePage.clickOnComponent(vfResourceCreateData.getName());
+ componentPage.isLoaded();
+
+ ResourcePropertiesAssignmentPage propertiesAssignmentPage = componentPage.goToPropertiesAssignment();
+ propertiesAssignmentPage.isLoaded();
+
+ declareInputToBaseService(propertiesAssignmentPage, "property1");
+ declareInputToInstanceProperties(propertiesAssignmentPage, "resourceSubtype");
+ verifyToscaTemplateHasDeclareInput(downloadToscaTemplate());
+ }
+
private void checkMetadata(final Map<String, Object> map, final ResourceCreateData createdData) {
final Map<String, Object> metadata = getMapEntry(map, "metadata");
@@ -453,6 +466,23 @@ public class ServiceTemplateDesignUiTests extends SetupCDTest {
return loadYamlObject(filesFromZip.get(resourceEntryOpt.get()));
}
+ private void declareInputToBaseService(ResourcePropertiesAssignmentPage propertiesAssignmentPage, String propertyName){
+ propertiesAssignmentPage.selectProperty(propertyName);
+ propertiesAssignmentPage.clickOnDeclareInput();
+ propertiesAssignmentPage.clickInputTab(propertyName);
+ propertiesAssignmentPage.isInputPresent(vfResourceCreateData.getName() + "_" + propertyName);
+ }
+
+ private void declareInputToInstanceProperties(ResourcePropertiesAssignmentPage propertiesAssignmentPage, String propertyName){
+ propertiesAssignmentPage.selectPropertiesTab();
+ propertiesAssignmentPage.loadCompositionTab();
+ propertiesAssignmentPage.loadComponentInstanceProperties(vfcs.get(0).getName().concat(" 0"));
+ propertiesAssignmentPage.selectProperty(propertyName);
+ propertiesAssignmentPage.clickOnDeclareInput();
+ propertiesAssignmentPage.clickInputTab(propertyName);
+ propertiesAssignmentPage.isInputPresent(vfResourceCreateData.getName() + "_" + vfcs.get(0).getName());
+ }
+
private CreateVfFlow createVF() {
final ResourceCreateData vfCreateData = createVfFormData();
final CreateVfFlow createVfFlow = new CreateVfFlow(webDriver, vfCreateData);
@@ -740,6 +770,26 @@ public class ServiceTemplateDesignUiTests extends SetupCDTest {
return expectedDefinitionFolderFileList;
}
+ private void verifyToscaTemplateHasDeclareInput(Map<?, ?> yaml) {
+ assertNotNull(yaml, "No contents in TOSCA Template");
+ final Map<String, Object> toscaYaml = (Map<String, Object>) yaml;
+ final Map<String, Object> topologyTemplateTosca = getMapEntry(toscaYaml, "topology_template");
+ assertThat(String.format("'%s' should contain a topology_template entry", toscaYaml), topologyTemplateTosca,
+ notNullValue());
+ final Map<String, Object> inputsTosca = getMapEntry(topologyTemplateTosca, "inputs");
+ assertThat(String.format("'%s' should contain a inputs entry", toscaYaml), inputsTosca, notNullValue());
+ assertEquals(2, inputsTosca.keySet().stream()
+ .filter(s -> (s.contains("resourceSubtype") || s.contains("property1"))).count());
+ final Map<String, Object> substitutionMapping = getMapEntry(topologyTemplateTosca, "substitution_mappings");
+ assertThat(String.format("'%s' should contain a substitution_mappings entry", toscaYaml), substitutionMapping,
+ notNullValue());
+ final Map<String, Object> substitutionMappingProperties = getMapEntry(substitutionMapping, "properties");
+ assertThat(String.format("'%s' should contain a properties entry", toscaYaml), substitutionMappingProperties,
+ notNullValue());
+ assertEquals(2, substitutionMappingProperties.keySet().stream()
+ .filter(s -> (s.contains("resourceSubtype") || s.contains("property1"))).count());
+ }
+
private Map<String, Object> getMapEntry(final Map<?, ?> yamlObj, final String entryName) {
try {
return (Map<String, Object>) yamlObj.get(entryName);
diff --git a/integration-tests/src/test/java/org/onap/sdc/frontend/ci/tests/pages/ResourcePropertiesAssignmentInputTab.java b/integration-tests/src/test/java/org/onap/sdc/frontend/ci/tests/pages/ResourcePropertiesAssignmentInputTab.java
index dedb084147..d1b07dc32f 100644
--- a/integration-tests/src/test/java/org/onap/sdc/frontend/ci/tests/pages/ResourcePropertiesAssignmentInputTab.java
+++ b/integration-tests/src/test/java/org/onap/sdc/frontend/ci/tests/pages/ResourcePropertiesAssignmentInputTab.java
@@ -85,6 +85,21 @@ public class ResourcePropertiesAssignmentInputTab extends AbstractPageObject {
}
/**
+ * Checks if a input exists.
+ * @param inputName the property name
+ * @return the value of the input
+ */
+ public boolean isInputPresent(final String inputName) {
+ isInputPropertiesTableLoaded();
+ try {
+ waitForElementVisibility(By.xpath(XpathSelector.INPUT_CHECKBOX.formatXpath(inputName)), 5);
+ } catch (final Exception ignored) {
+ return false;
+ }
+ return true;
+ }
+
+ /**
* Enum that contains identifiers and xpath expressions to elements related to the enclosing page object.
*/
@AllArgsConstructor
@@ -92,6 +107,7 @@ public class ResourcePropertiesAssignmentInputTab extends AbstractPageObject {
private enum XpathSelector {
INPUT_TAB("//*[contains(@data-tests-id, 'Inputs') and contains(@class, 'active')]"),
PROPERTIES_TABLE("//div[contains(@class,'properties-table')]"),
+ INPUT_CHECKBOX("//checkbox[@data-tests-id='%s']"),
NO_DATA_MESSAGE("//div[contains(@class,'no-data') and text()='No data to display']"),
PROPERTY_SAVE_BTN("//button[@data-tests-id='properties-save-button']"),
PROPERTY_SAVE_MESSAGE("//div[contains(text(), 'Successfully saved')]"),
@@ -100,6 +116,7 @@ public class ResourcePropertiesAssignmentInputTab extends AbstractPageObject {
INPUT_PROPERTY_ADD_METADATA_BUTTON(INPUT_PROPERTY_TABLE_ROW.getXpath().concat("//a")),
INPUT_PROPERTY_METADATA_KEY_VALUE_PAIR(INPUT_PROPERTY_TABLE_ROW.getXpath().concat("//input"));
+ @Getter
private final String xpath;
public String formatXpath(Object... params) {
diff --git a/integration-tests/src/test/java/org/onap/sdc/frontend/ci/tests/pages/ResourcePropertiesAssignmentPage.java b/integration-tests/src/test/java/org/onap/sdc/frontend/ci/tests/pages/ResourcePropertiesAssignmentPage.java
index e69f1131e5..4db048be09 100644
--- a/integration-tests/src/test/java/org/onap/sdc/frontend/ci/tests/pages/ResourcePropertiesAssignmentPage.java
+++ b/integration-tests/src/test/java/org/onap/sdc/frontend/ci/tests/pages/ResourcePropertiesAssignmentPage.java
@@ -19,9 +19,11 @@
package org.onap.sdc.frontend.ci.tests.pages;
+import com.aventstack.extentreports.Status;
import java.util.List;
import java.util.Map;
+import org.onap.sdc.frontend.ci.tests.execute.setup.ExtentTestActions;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
@@ -77,6 +79,13 @@ public class ResourcePropertiesAssignmentPage extends AbstractPageObject {
return resourcePropertiesAssignmentTab.isPropertyPresent(propertyName);
}
+ public boolean isInputPresent(final String inputName) {
+ return resourcePropertiesAssignmentInputTab.isInputPresent(inputName);
+ }
+
+ /**
+ * Saves a property
+ */
public void saveProperties() {
resourcePropertiesAssignmentTab.saveProperties();
}
@@ -98,6 +107,31 @@ public class ResourcePropertiesAssignmentPage extends AbstractPageObject {
}
/**
+ * select property
+ */
+ public void selectProperty(String propertyName){
+ resourcePropertiesAssignmentTab.selectProperty(propertyName);
+ }
+
+ public void loadComponentInstanceProperties(final String instanceName){
+ resourcePropertiesAssignmentTab.loadComponentInstanceProperties(instanceName);
+ }
+
+ public void clickOnDeclareInput(){
+ resourcePropertiesAssignmentTab.clickOnDeclareInput();
+ }
+
+ public void loadCompositionTab(){
+ resourcePropertiesAssignmentTab.loadCompositionTab();
+ }
+
+ public void clickInputTab(String propertyName){
+ waitForElementVisibility(By.xpath(XpathSelector.DECLARE_NOTIFIFICATION.getXpath()));
+ ExtentTestActions.takeScreenshot(Status.INFO, "Declare-Input", String.format("Added declared input for property %s", propertyName));
+ selectInputTab();
+ }
+
+ /**
* Enum that contains identifiers and xpath expressions to elements related to the enclosing page object.
*/
@AllArgsConstructor
@@ -105,7 +139,8 @@ public class ResourcePropertiesAssignmentPage extends AbstractPageObject {
MAIN_DIV("w-sdc-main-right-container", "//div[@class='%s']"),
TITLE_DIV("tab-title", "//div[contains(@class,'%s') and contains(text(), 'Properties Assignment')]"),
PROPERTIES_TAB("//*[contains(@data-tests-id, 'Properties') and contains(@class, 'tab')]"),
- INPUT_TAB("//*[contains(@data-tests-id, 'Inputs') and contains(@class, 'tab')]");
+ INPUT_TAB("//*[contains(@data-tests-id, 'Inputs') and contains(@class, 'tab')]"),
+ DECLARE_NOTIFIFICATION("//div[@data-tests-id='Inputs']/div[contains(@class, 'tab-indication')]");
@Getter
private String id;
diff --git a/integration-tests/src/test/java/org/onap/sdc/frontend/ci/tests/pages/ResourcePropertiesAssignmentTab.java b/integration-tests/src/test/java/org/onap/sdc/frontend/ci/tests/pages/ResourcePropertiesAssignmentTab.java
index b237b17272..32a20dd138 100644
--- a/integration-tests/src/test/java/org/onap/sdc/frontend/ci/tests/pages/ResourcePropertiesAssignmentTab.java
+++ b/integration-tests/src/test/java/org/onap/sdc/frontend/ci/tests/pages/ResourcePropertiesAssignmentTab.java
@@ -309,6 +309,26 @@ public class ResourcePropertiesAssignmentTab extends AbstractPageObject {
}
/**
+ * select property
+ */
+ public void selectProperty(String propertyName){
+ isPropertyPresent(propertyName);
+ waitToBeClickable(By.xpath(ResourcePropertiesAssignmentTab.XpathSelector.PROPERTY_CHECKBOX.getXpath(propertyName))).click();
+ }
+
+ public void loadComponentInstanceProperties(final String instanceName){
+ waitToBeClickable(By.xpath(ResourcePropertiesAssignmentTab.XpathSelector.INSTANCE_SPAN.getXpath(instanceName))).click();
+ }
+
+ public void clickOnDeclareInput(){
+ waitToBeClickable(By.xpath(ResourcePropertiesAssignmentTab.XpathSelector.DECLARE_INPUT_BTN.getXpath())).click();
+ }
+
+ public void loadCompositionTab(){
+ waitToBeClickable(By.xpath(ResourcePropertiesAssignmentTab.XpathSelector.COMPOSITION_TAB.getXpath())).click();
+ }
+
+ /**
* Enum that contains identifiers and xpath expressions to elements related to the enclosing page object.
*/
@AllArgsConstructor
@@ -329,7 +349,10 @@ public class ResourcePropertiesAssignmentTab extends AbstractPageObject {
INPUT_PROPERTY("//input[@data-tests-id='value-prop-%s']"),
SELECT_INPUT_PROPERTY("//select[@data-tests-id='value-prop-%s']"),
PROPERTY_TYPES("//*[contains(@data-tests-id, 'propertyType')]"),
- PROPERTY_NAMES("//*[contains(@data-tests-id, 'propertyName')]");
+ PROPERTY_NAMES("//*[contains(@data-tests-id, 'propertyName')]"),
+ DECLARE_INPUT_BTN("declare-button declare-input", "//button[@data-tests-id='%s']"),
+ COMPOSITION_TAB("Composition", "//div[contains(@class,'tab') and contains(text(), '%s')]"),
+ INSTANCE_SPAN("//span[@data-tests-id='%s']");
@Getter
private String id;
diff --git a/integration-tests/src/test/resources/ci/testSuites/frontend/onapUiSanity.xml b/integration-tests/src/test/resources/ci/testSuites/frontend/onapUiSanity.xml
index ce2436e796..73e369b6f1 100644
--- a/integration-tests/src/test/resources/ci/testSuites/frontend/onapUiSanity.xml
+++ b/integration-tests/src/test/resources/ci/testSuites/frontend/onapUiSanity.xml
@@ -41,6 +41,7 @@
<include name="addRelationshipTemplate"/>
<include name="addComponentProperty"/>
<include name="addOutputsToVF_test"/>
+ <include name="declareInputFromProperties"/>
<include name="createSubstitutionFilter"/>
<include name="createDirectiveNodeFilterTest"/>
<include name="updateInterfaceOperation"/>