Interface operation feature enhancements

1. API restructuring to enhance model and provide more capabilities.
2. Allowed multiple interface creation under same resource/service.
3. Enhanced validations to align with updated model.
4. API restructuring to align UI model with Tosca model.
5. Enhanced Junit and code coverage.
6. Added BDD and CI-API tests.

Change-Id: I2d8ac8a6154fd9be8254836ba0da1540210031c0
Issue-ID: SDC-1999
Signed-off-by: priyanshu <pagarwal@amdocs.com>
diff --git a/cucumber-js-test-apis-ci/resources/json/createService.json b/cucumber-js-test-apis-ci/resources/json/createService.json
new file mode 100644
index 0000000..a76cc51
--- /dev/null
+++ b/cucumber-js-test-apis-ci/resources/json/createService.json
@@ -0,0 +1,66 @@
+{
+  "artifacts": {},
+  "toscaArtifacts": {},
+  "contactId": "cs0008",
+  "categories": [{
+    "name": "Network L4+",
+    "normalizedName": "network l4+",
+    "uniqueId": "serviceNewCategory.network l4+",
+    "icons": ["network_l_4"],
+    "subcategories": null,
+    "version": null,
+    "ownerId": null,
+    "empty": false,
+    "type": null
+  }],
+  "description": "service1 for bdd",
+  "icon": "defaulticon",
+  "componentInstancesProperties": {},
+  "componentInstancesAttributes": {},
+  "name": "service1",
+  "tags": ["service1"],
+  "capabilities": {},
+  "requirements": {},
+  "deploymentArtifacts": {},
+  "componentType": "SERVICE",
+  "projectCode": "010203",
+  "componentInstances": [],
+  "properties": [],
+  "inputs": [{
+    "uniqueId": "03eeb10e-cf2a-41b8-9d8e-d2dbd094f9d4.test1_dasddas",
+    "type": "scalar-unit.size",
+    "required": false,
+    "definition": false,
+    "schema": {
+      "properties": {},
+      "property": {
+        "type": "",
+        "required": false,
+        "definition": true,
+        "password": false,
+        "hidden": false,
+        "immutable": false,
+        "getInputProperty": false,
+        "empty": false
+      },
+      "empty": false
+    },
+    "password": false,
+    "name": "test1_dasddas",
+    "hidden": false,
+    "immutable": false,
+    "instanceUniqueId": "03eeb10e-cf2a-41b8-9d8e-d2dbd094f9d4",
+    "propertyId": "03eeb10e-cf2a-41b8-9d8e-d2dbd094f9d4.dasddas",
+    "parentUniqueId": "cs0008",
+    "schemaType": "",
+    "getInputProperty": false,
+    "ownerId": "cs0008",
+    "empty": false
+  }],
+  "attributes": [],
+  "forwardingPaths": {},
+  "ecompGeneratedNaming": true,
+  "serviceApiArtifacts": {},
+  "instantiationType": "A-la-carte",
+  "environmentContext": "General_Revenue-Bearing"
+}
\ No newline at end of file
diff --git a/cucumber-js-test-apis-ci/resources/json/createVFWithoutCSAR.json b/cucumber-js-test-apis-ci/resources/json/createVFWithoutCSAR.json
new file mode 100644
index 0000000..dd8764f
--- /dev/null
+++ b/cucumber-js-test-apis-ci/resources/json/createVFWithoutCSAR.json
@@ -0,0 +1,76 @@
+{
+  "artifacts": {},
+  "toscaArtifacts": {},
+  "contactId": "cs0008",
+  "categories": [{
+    "name": "Generic",
+    "normalizedName": "generic",
+    "uniqueId": "REPLACE CATEGORY VSP",
+    "icons": null,
+    "subcategories": [
+      {
+        "name": "Abstract",
+        "normalizedName": "abstract",
+        "uniqueId": "REPLACE SUBCATEGORY VSP",
+        "icons": [
+          "objectStorage",
+          "compute"
+        ],
+        "groupings": null,
+        "ownerId": null,
+        "empty": false
+      }
+    ],
+    "ownerId": null,
+    "empty": false
+  }],
+  "description": "vf_for_bdd",
+  "icon": "defaulticon",
+  "componentInstancesProperties": {},
+  "componentInstancesAttributes": {},
+  "name": "vf_for_bdd",
+  "tags": ["vf_for_bdd"],
+  "capabilities": {},
+  "requirements": {},
+  "deploymentArtifacts": {},
+  "componentType": "RESOURCE",
+  "vendorName": "vf_for_bdd",
+  "vendorRelease": "vf_for_bdd",
+  "componentInstances": [],
+  "inputs": [{
+    "uniqueId": "testInputForBDD",
+    "type": "org.openecomp.datatypes.Naming",
+    "required": false,
+    "definition": false,
+    "defaultValue": null,
+    "description": null,
+    "schema": null,
+    "password": false,
+    "name": "abcdef",
+    "value": null,
+    "label": null,
+    "hidden": false,
+    "immutable": false,
+    "inputPath": null,
+    "status": null,
+    "inputId": null,
+    "instanceUniqueId": null,
+    "propertyId": null,
+    "annotations": null,
+    "parentUniqueId": "abcd",
+    "getInputValues": null,
+    "constraints": null,
+    "inputs": null,
+    "properties": null,
+    "getInputProperty": false,
+    "schemaType": null,
+    "schemaProperty": null,
+    "version": null,
+    "ownerId": null,
+    "empty": false
+  }],
+  "properties": [],
+  "attributes": [],
+  "groups": [],
+  "resourceType": "VF"
+}
\ No newline at end of file
diff --git a/cucumber-js-test-apis-ci/resources/json/interfaceOperation/createInterfaceOperations.json b/cucumber-js-test-apis-ci/resources/json/interfaceOperation/createInterfaceOperations.json
new file mode 100644
index 0000000..ee38f17
--- /dev/null
+++ b/cucumber-js-test-apis-ci/resources/json/interfaceOperation/createInterfaceOperations.json
@@ -0,0 +1,31 @@
+{
+  "interfaces": {
+    "interface1": {
+      "type": "interface1",
+      "operations": {
+        "delete": {
+          "name": "delete",
+          "description": "description",
+          "inputs": {
+            "listToscaDataDefinition": [{
+              "name": "inp1",
+              "type": "string",
+              "inputId": "c4c6e35f-37d1-4fd5-943c-51257386a86c.nf_naming.instance_name",
+              "required": true
+            }]
+          },
+          "outputs": {
+            "listToscaDataDefinition": [{
+              "type": "string",
+              "required": true,
+              "name": "op1"
+            }]
+          },
+          "workflowAssociationType": "NONE",
+          "workflowId": null,
+          "workflowVersionId": null
+        }
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/cucumber-js-test-apis-ci/resources/json/interfaceOperation/updateInterfaceOperation.json b/cucumber-js-test-apis-ci/resources/json/interfaceOperation/updateInterfaceOperation.json
new file mode 100644
index 0000000..8821e7f
--- /dev/null
+++ b/cucumber-js-test-apis-ci/resources/json/interfaceOperation/updateInterfaceOperation.json
@@ -0,0 +1,34 @@
+{
+  "interfaces": {
+    "interface1": {
+      "type": "interface1",
+      "operations": {
+        "delete" : {
+          "name": "sshGV",
+          "description": "sshGV updated description" ,
+          "inputs": {
+            "listToscaDataDefinition": [
+              {
+                "name": "inputId_up",
+                "type": "string",
+                "inputId": "c4c6e35f-37d1-4fd5-943c-51257386a86c.nf_naming.instance_name",
+                "required": true
+              }
+            ]
+          },
+          "outputs": {
+            "listToscaDataDefinition": [{
+              "name": "outUp_up",
+              "type": "string",
+              "required": true
+            }]
+          },
+          "uniqueId": "3f6b7144-2dec-48e2-80cb-c67e8bc1d7d2",
+          "workflowAssociationType": "NONE",
+          "workflowId": null,
+          "workflowVersionId": null
+        }
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/cucumber-js-test-apis-ci/resources/json/operation/createOperation-with-workflow.json b/cucumber-js-test-apis-ci/resources/json/operation/createOperation-with-workflow.json
deleted file mode 100644
index e9693ad..0000000
--- a/cucumber-js-test-apis-ci/resources/json/operation/createOperation-with-workflow.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
-  "interfaceOperations": {
-    "operation": {
-      "description": "abcd description",
-      "inputParams": {
-        "listToscaDataDefinition": [
-          {
-            "name": "inp1",
-            "type": "string",
-            "property": "97477d27-8fe2-45a1-83cb-83368ef2a402.nf_naming_code",
-            "mandatory": true
-          }
-        ]
-      },
-      "outputParams": {
-        "listToscaDataDefinition": [
-          {
-            "name": "op",
-            "mandatory": true,
-            "type": "String"
-          }
-        ]
-      },
-      "operationType": "create",
-      "workflowAssociationType": "EXISTING",
-      "workflowId" : "workflowId",
-      "workflowVersionId" : "workflowVersionId"
-    }
-  }
-}
\ No newline at end of file
diff --git a/cucumber-js-test-apis-ci/resources/json/operation/createOperation.json b/cucumber-js-test-apis-ci/resources/json/operation/createOperation.json
deleted file mode 100644
index 10c34ba..0000000
--- a/cucumber-js-test-apis-ci/resources/json/operation/createOperation.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
-  "interfaceOperations": {
-    "operation": {
-      "description": "abcd description",
-      "inputParams": {
-      },
-      "outputParams": {
-      },
-      "operationType": "create",
-      "workflowId" : null,
-      "workflowVersionId" : null
-    }
-  }
-}
\ No newline at end of file
diff --git a/cucumber-js-test-apis-ci/resources/json/operation/createOperationWithInputOutput.json b/cucumber-js-test-apis-ci/resources/json/operation/createOperationWithInputOutput.json
deleted file mode 100644
index 013d615..0000000
--- a/cucumber-js-test-apis-ci/resources/json/operation/createOperationWithInputOutput.json
+++ /dev/null
@@ -1,29 +0,0 @@
-{
-  "interfaceOperations": {
-    "operation": {
-      "description": "abcd description",
-      "inputParams": {
-        "listToscaDataDefinition": [
-          {
-            "name": "inp1",
-            "type": "string",
-            "property": "97477d27-8fe2-45a1-83cb-83368ef2a402.nf_naming_code",
-            "mandatory": true
-          }
-        ]
-      },
-      "outputParams": {
-        "listToscaDataDefinition": [
-          {
-            "name": "op",
-            "mandatory": true,
-            "type": "String"
-          }
-        ]
-      },
-      "operationType": "create",
-      "workflowId" : null,
-      "workflowVersionId" : null
-    }
-  }
-}
\ No newline at end of file
diff --git a/cucumber-js-test-apis-ci/resources/json/operation/createService.json b/cucumber-js-test-apis-ci/resources/json/operation/createService.json
deleted file mode 100644
index e7afe2a..0000000
--- a/cucumber-js-test-apis-ci/resources/json/operation/createService.json
+++ /dev/null
@@ -1,102 +0,0 @@
-{
-  "artifacts": {
-
-  },
-  "toscaArtifacts": {
-
-  },
-  "contactId": "cs0008",
-  "categories": [
-    {
-      "name": "Network L4+",
-      "normalizedName": "network l4+",
-      "uniqueId": "serviceNewCategory.network l4+",
-      "icons": [
-        "network_l_4"
-      ],
-      "subcategories": null,
-      "version": null,
-      "ownerId": null,
-      "empty": false,
-      "type": null
-    }
-  ],
-  "description": "service1 for bdd",
-  "icon": "defaulticon",
-  "componentInstancesProperties": {
-
-  },
-  "componentInstancesAttributes": {
-
-  },
-  "name": "service1",
-  "tags": [
-    "service1"
-  ],
-  "capabilities": {
-
-  },
-  "requirements": {
-
-  },
-  "deploymentArtifacts": {
-
-  },
-  "componentType": "SERVICE",
-  "projectCode": "010203",
-  "componentInstances": [
-
-  ],
-  "properties": [
-
-  ],
-
-  "inputs": [
-    {
-      "uniqueId": "03eeb10e-cf2a-41b8-9d8e-d2dbd094f9d4.test1_dasddas",
-      "type": "scalar-unit.size",
-      "required": false,
-      "definition": false,
-      "schema": {
-        "properties": {
-
-        },
-        "property": {
-          "type": "",
-          "required": false,
-          "definition": true,
-          "password": false,
-          "hidden": false,
-          "immutable": false,
-          "getInputProperty": false,
-          "empty": false
-        },
-        "empty": false
-      },
-      "password": false,
-      "name": "test1_dasddas",
-      "hidden": false,
-      "immutable": false,
-      "instanceUniqueId": "03eeb10e-cf2a-41b8-9d8e-d2dbd094f9d4",
-      "propertyId": "03eeb10e-cf2a-41b8-9d8e-d2dbd094f9d4.dasddas",
-      "parentUniqueId": "cs0008",
-      "schemaType": "",
-      "getInputProperty": false,
-      "ownerId": "cs0008",
-      "empty": false
-    }
-  ],
-
-  "attributes": [
-
-  ],
-  "forwardingPaths": {
-
-  },
-  "ecompGeneratedNaming": true,
-  "serviceApiArtifacts": {
-
-  },
-  "instantiationType": "A-la-carte",
-  "environmentContext": "General_Revenue-Bearing"
-}
\ No newline at end of file
diff --git a/cucumber-js-test-apis-ci/resources/json/operation/createVF.json b/cucumber-js-test-apis-ci/resources/json/operation/createVF.json
deleted file mode 100644
index 6fe9688..0000000
--- a/cucumber-js-test-apis-ci/resources/json/operation/createVF.json
+++ /dev/null
@@ -1,101 +0,0 @@
-{
-  "artifacts": {
-
-  },
-  "toscaArtifacts": {
-
-  },
-  "contactId": "cs0008",
-  "categories": [
-    {
-      "name": "Allotted Resource",
-      "normalizedName": "allotted resource",
-      "uniqueId": "resourceNewCategory.allotted resource",
-      "icons": null,
-      "subcategories": [
-        {
-          "name": "Tunnel XConnect",
-          "normalizedName": "tunnel xconnect",
-          "uniqueId": "resourceNewCategory.allotted resource.tunnel xconnect",
-          "icons": [
-            "tunnel_x_connect"
-          ],
-          "groupings": null,
-          "ownerId": null,
-          "empty": false
-        }
-      ],
-      "ownerId": null,
-      "empty": false
-    }
-  ],
-  "description": "sd",
-  "icon": "defaulticon",
-  "componentInstancesProperties": {
-
-  },
-  "componentInstancesAttributes": {
-
-  },
-  "name": "REPLACE",
-  "tags": [
-    "REPLACE"
-  ],
-  "capabilities": {
-
-  },
-  "requirements": {
-
-  },
-  "deploymentArtifacts": {
-
-  },
-  "componentType": "RESOURCE",
-  "vendorName": "vendor",
-  "vendorRelease": "vendor release",
-  "componentInstances": [
-
-  ],
-  "inputs": [{
-    "uniqueId": "abcdef",
-    "type": "org.openecomp.datatypes.Naming",
-    "required": false,
-    "definition": false,
-    "defaultValue": null,
-    "description": null,
-    "schema": null,
-    "password": false,
-    "name": "abcdef",
-    "value": null,
-    "label": null,
-    "hidden": false,
-    "immutable": false,
-    "inputPath": null,
-    "status": null,
-    "inputId": null,
-    "instanceUniqueId": null,
-    "propertyId": null,
-    "annotations": null,
-    "parentUniqueId": "abcd",
-    "getInputValues": null,
-    "constraints": null,
-    "inputs": null,
-    "properties": null,
-    "getInputProperty": false,
-    "schemaType": null,
-    "schemaProperty": null,
-    "version": null,
-    "ownerId": null,
-    "empty": false
-  } ],
-  "properties": [
-
-  ],
-  "attributes": [
-
-  ],
-  "groups": [
-
-  ],
-  "resourceType": "VF"
-}
\ No newline at end of file
diff --git a/cucumber-js-test-apis-ci/resources/json/operation/updateOperation.json b/cucumber-js-test-apis-ci/resources/json/operation/updateOperation.json
deleted file mode 100644
index 698d38c..0000000
--- a/cucumber-js-test-apis-ci/resources/json/operation/updateOperation.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
-  "interfaceOperations": {
-    "operation": {
-      "description": "create operation_Updated",
-      "inputParams": {
-        "listToscaDataDefinition": [
-          {
-            "name": "inp1",
-            "type": "string",
-            "property": "97477d27-8fe2-45a1-83cb-83368ef2a402.nf_naming_code",
-            "mandatory": true
-          }
-        ]
-      },
-      "outputParams": {
-        "listToscaDataDefinition": [
-          {
-            "name": "op",
-            "mandatory": true,
-            "type": "String"
-          }
-        ]
-      },
-      "operationType": "create",
-      "uniqueId": "REPLACE FROM CONTEXT"
-    }
-  }
-}
\ No newline at end of file