From f96e244d1764e0dfb5f574b73eb4d248840447c6 Mon Sep 17 00:00:00 2001 From: talig Date: Tue, 24 Jul 2018 10:30:55 +0300 Subject: Add/Fix workflow/version flow tests Change-Id: I63d432333d5038ff5178742fb3b2347d1b551879 Issue-ID: SDC-1503 Signed-off-by: talig --- workflow/workflow-bdd/features/Version.feature | 65 ++++++++++++++++++++++ .../workflow-bdd/features/VersionState.feature | 17 +++++- .../features/Version_Create_Update.feature | 43 -------------- workflow/workflow-bdd/features/Workflow.feature | 18 ++++-- .../workflow-bdd/features/WorkflowList.feature | 39 ++++++------- .../json/createVersionWithInputsOutputs.json | 17 ++++++ .../workflow-bdd/stepDefinitions/Workflow_Steps.js | 2 +- 7 files changed, 127 insertions(+), 74 deletions(-) create mode 100644 workflow/workflow-bdd/features/Version.feature delete mode 100644 workflow/workflow-bdd/features/Version_Create_Update.feature create mode 100644 workflow/workflow-bdd/resources/json/createVersionWithInputsOutputs.json diff --git a/workflow/workflow-bdd/features/Version.feature b/workflow/workflow-bdd/features/Version.feature new file mode 100644 index 00000000..e43971cb --- /dev/null +++ b/workflow/workflow-bdd/features/Version.feature @@ -0,0 +1,65 @@ +# Copyright © 2018 European Support Limited +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +Feature: Workflow Versions + + Background: Init - Create workflow + Given I want to create a Workflow + + Scenario: Create first empty version + When I want to update the input property "description" with value "first empty version" + And I want to create for path "/workflows/{item.id}/versions" with the input data from the context + And I want to copy to property "item.versionId" from response data path "id" + + Then I want to get path "/workflows/{item.id}/versions/{item.versionId}" + And I want to check that property "id" in the response equals to value of saved property "item.versionId" + And I want to get path "/workflows/{item.id}/versions" + And I want to check that element in the response list with "id" equals to value of saved property "item.versionId" exists + + Scenario: Create first version with inputs/outputs + When I want to set the input data to file "resources/json/createVersionWithInputsOutputs.json" + And I want to create for path "/workflows/{item.id}/versions" with the input data from the context + And I want to copy to property "item.versionId" from response data path "id" + + Then I want to check property "inputs[0].name" for value "in1" + And I want to check property "outputs[0].name" for value "out1" + + Scenario: Create second version + And I want to update the input property "description" with value "first empty version" + And I want to create for path "/workflows/{item.id}/versions" with the input data from the context + And I want to copy to property "item.firstVersionId" from response data path "id" + And I want to update the input property "name" with value "CERTIFIED" + And I want to create for path "/workflows/{item.id}/versions/{item.firstVersionId}/state" with the input data from the context + + When I want to create input data + And I want to update the input property "description" with value "second empty version" + And I want to create for path "/workflows/{item.id}/versions?baseVersionId={item.firstVersionId}" with the input data from the context + And I want to copy to property "item.versionId" from response data path "id" + + Then I want to get path "/workflows/{item.id}/versions/{item.versionId}" + And I want to check that property "id" in the response equals to value of saved property "item.versionId" + And I want to get path "/workflows/{item.id}/versions" + And I want to check that element in the response list with "id" equals to value of saved property "item.versionId" exists + + Scenario: Update version + And I want to create input data + And I want to update the input property "description" with value "workflow version description" + And I want to create for path "/workflows/{item.id}/versions" with the input data from the context + And I want to copy to property "item.versionId" from response data path "id" + + When I want to update the input property "description" with value "workflow version description updated" + And I want to update for path "/workflows/{item.id}/versions/{item.versionId}" with the input data from the context + + Then I want to get path "/workflows/{item.id}/versions/{item.versionId}" + And I want to check property "description" for value "workflow version description updated" \ No newline at end of file diff --git a/workflow/workflow-bdd/features/VersionState.feature b/workflow/workflow-bdd/features/VersionState.feature index c869d146..1bb72ab8 100644 --- a/workflow/workflow-bdd/features/VersionState.feature +++ b/workflow/workflow-bdd/features/VersionState.feature @@ -25,7 +25,7 @@ Feature: Workflow Version State Then I want to check property "name" for value "DRAFT" And I want to check property "nextStates[0]" for value "CERTIFIED" - Scenario: Update state to current state + Scenario: Update state to current state - invalid Then I want the following to fail with response status code 422 When I want to update the input property "name" with value "DRAFT" And I want to create for path "/workflows/{item.id}/versions/{item.versionId}/state" with the input data from the context @@ -37,8 +37,19 @@ Feature: Workflow Version State And I want to check property "name" for value "CERTIFIED" And I want to check property "nextStates" to have length 0 - Scenario: Update state when CERTIFIED + Scenario: Update state when CERTIFIED - invalid When I want to update the input property "name" with value "CERTIFIED" And I want to create for path "/workflows/{item.id}/versions/{item.versionId}/state" with the input data from the context When I want the following to fail with response status code 422 - Then I want to create for path "/workflows/{item.id}/versions/{item.versionId}/state" with the input data from the context \ No newline at end of file + Then I want to create for path "/workflows/{item.id}/versions/{item.versionId}/state" with the input data from the context + + Scenario: Update when CERTIFIED - invalid + When I want to update the input property "name" with value "CERTIFIED" + And I want to create for path "/workflows/{item.id}/versions/{item.versionId}/state" with the input data from the context + And I want to update the input property "description" with value "workflow version description updated" + Then I want the following to fail with response status code 422 + When I want to update for path "/workflows/{item.id}/versions/{item.versionId}" with the input data from the context + + Scenario: Create second version based on non CERTIFIED one - invalid + Then I want the following to fail with response status code 403 + When I want to create for path "/workflows/{item.id}/versions?baseVersionId={item.versionId}" with the input data from the context \ No newline at end of file diff --git a/workflow/workflow-bdd/features/Version_Create_Update.feature b/workflow/workflow-bdd/features/Version_Create_Update.feature deleted file mode 100644 index d2a9ec9d..00000000 --- a/workflow/workflow-bdd/features/Version_Create_Update.feature +++ /dev/null @@ -1,43 +0,0 @@ -# Copyright © 2018 European Support Limited -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -Feature: Workflow Versions - - Background: Init - Given I want to create a Workflow - - Scenario: Create first empty version - When I want to create input data - And I want to update the input property "description" with value "first empty version" - And I want to create for path "/workflows/{item.id}/versions" with the input data from the context - And I want to copy to property "item.versionId" from response data path "id" - - Then I want to get path "/workflows/{item.id}/versions/{item.versionId}" - And I want to check that property "id" in the response equals to value of saved property "item.versionId" - And I want to get path "/workflows/{item.id}/versions" - And I want to check that element in the response list with "id" equals to value of saved property "item.versionId" exists - - Scenario: Update version - And I want to create input data - And I want to update the input property "description" with value "workflow version description" - And I want to create for path "/workflows/{item.id}/versions" with the input data from the context - And I want to copy to property "item.versionId" from response data path "id" - - When I want to set property "updatedDesc" to value "workflow version description updated" - And I want to update the input property "description" with value of property "updatedDesc" - And I want to update for path "/workflows/{item.id}/versions/{item.versionId}" with the input data from the context - - Then I want to get path "/workflows/{item.id}/versions/{item.versionId}" - And I want to check that property "description" in the response equals to value of saved property "updatedDesc" \ No newline at end of file diff --git a/workflow/workflow-bdd/features/Workflow.feature b/workflow/workflow-bdd/features/Workflow.feature index b234fdb7..dffcc55d 100644 --- a/workflow/workflow-bdd/features/Workflow.feature +++ b/workflow/workflow-bdd/features/Workflow.feature @@ -14,12 +14,18 @@ Feature: Workflow - Scenario: Create valid - When I want to create a Workflow + Scenario: Create invalid - without name + Given I want to create input data + When I want the following to fail with response status code 400 + Then I want to create for path "/workflows" with the input data from the context - Scenario: Update and Get workflow + Scenario: Create When I want to create a Workflow - Then I want to update the input property "description" with value "workflow desc updated" - Then I want to update for path "/workflows/{item.id}" with the input data from the context + Then I want to check property "description" for value "Workflow Description" + + Scenario: Update and Get + Given I want to create a Workflow + And I want to update the input property "description" with value "workflow description updated" + When I want to update for path "/workflows/{item.id}" with the input data from the context Then I want to get path "/workflows/{item.id}" - Then I want to check that property "description" in the response equals to value of saved property "inputData.description" + And I want to check property "description" for value "workflow description updated" diff --git a/workflow/workflow-bdd/features/WorkflowList.feature b/workflow/workflow-bdd/features/WorkflowList.feature index 85261f5c..5b6941ec 100644 --- a/workflow/workflow-bdd/features/WorkflowList.feature +++ b/workflow/workflow-bdd/features/WorkflowList.feature @@ -12,7 +12,6 @@ # See the License for the specific language governing permissions and # limitations under the License. - Feature: List Workflows Background: Init - create various workflows in order to test list filter @@ -39,41 +38,39 @@ Feature: List Workflows And I want to update the input property "name" with value "CERTIFIED" And I want to create for path "/workflows/{item.id}/versions/{item.versionId}/state" with the input data from the context And I want to update the input property "description" with value "second version" - And I want to update the input property "baseVersionId" with value of property "item.versionId" - And I want to create for path "/workflows/{item.id}/versions" with the input data from the context - #And I want to print the context data + And I want to create for path "/workflows/{item.id}/versions?baseVersionId={item.versionId}" with the input data from the context Scenario: List all - When I want to get path "/workflows" + When I want to get path "/workflows?size=2000" Then I want to check that element in the response list with "id" equals to value of saved property "noVersionsWorkflowId" exists And I want to check that element in the response list with "id" equals to value of saved property "draftVersionWorkflowId" exists And I want to check that element in the response list with "id" equals to value of saved property "certifiedVersionWorkflowId" exists And I want to check that element in the response list with "id" equals to value of saved property "draftAndCertifiedVersionWorkflowId" exists Scenario: List ones with DRAFT version(s) - When I want to get path "/workflows?versionState=DRAFT" + When I want to get path "/workflows?versionState=DRAFT&size=2000" Then I want to check that element in the response list with "id" equals to value of saved property "noVersionsWorkflowId" does not exist - Then I want to check that element in the response list with "id" equals to value of saved property "draftVersionWorkflowId" exists - Then I want to check that element in the response list with "id" equals to value of saved property "certifiedVersionWorkflowId" does not exist - Then I want to check that element in the response list with "id" equals to value of saved property "draftAndCertifiedVersionWorkflowId" exists + And I want to check that element in the response list with "id" equals to value of saved property "draftVersionWorkflowId" exists + And I want to check that element in the response list with "id" equals to value of saved property "certifiedVersionWorkflowId" does not exist + And I want to check that element in the response list with "id" equals to value of saved property "draftAndCertifiedVersionWorkflowId" exists Scenario: List ones with CERTIFIED version(s) - When I want to get path "/workflows?versionState=CERTIFIED" + When I want to get path "/workflows?versionState=CERTIFIED&size=2000" Then I want to check that element in the response list with "id" equals to value of saved property "noVersionsWorkflowId" does not exist - Then I want to check that element in the response list with "id" equals to value of saved property "draftVersionWorkflowId" does not exist - Then I want to check that element in the response list with "id" equals to value of saved property "certifiedVersionWorkflowId" exists - Then I want to check that element in the response list with "id" equals to value of saved property "draftAndCertifiedVersionWorkflowId" exists + And I want to check that element in the response list with "id" equals to value of saved property "draftVersionWorkflowId" does not exist + And I want to check that element in the response list with "id" equals to value of saved property "certifiedVersionWorkflowId" exists + And I want to check that element in the response list with "id" equals to value of saved property "draftAndCertifiedVersionWorkflowId" exists Scenario: List ones with DRAFT/CERTIFIED version(s) - When I want to get path "/workflows?versionState=DRAFT,CERTIFIED" + When I want to get path "/workflows?versionState=DRAFT,CERTIFIED&size=2000" Then I want to check that element in the response list with "id" equals to value of saved property "noVersionsWorkflowId" does not exist - Then I want to check that element in the response list with "id" equals to value of saved property "draftVersionWorkflowId" exists - Then I want to check that element in the response list with "id" equals to value of saved property "certifiedVersionWorkflowId" exists - Then I want to check that element in the response list with "id" equals to value of saved property "draftAndCertifiedVersionWorkflowId" exists + And I want to check that element in the response list with "id" equals to value of saved property "draftVersionWorkflowId" exists + And I want to check that element in the response list with "id" equals to value of saved property "certifiedVersionWorkflowId" exists + And I want to check that element in the response list with "id" equals to value of saved property "draftAndCertifiedVersionWorkflowId" exists Scenario: List ones with gibberish version(s) = none - When I want to get path "/workflows?versionState=gibberish" + When I want to get path "/workflows?versionState=gibberish&size=2000" Then I want to check that element in the response list with "id" equals to value of saved property "noVersionsWorkflowId" does not exist - Then I want to check that element in the response list with "id" equals to value of saved property "draftVersionWorkflowId" does not exist - Then I want to check that element in the response list with "id" equals to value of saved property "certifiedVersionWorkflowId" does not exist - Then I want to check that element in the response list with "id" equals to value of saved property "draftAndCertifiedVersionWorkflowId" does not exist \ No newline at end of file + And I want to check that element in the response list with "id" equals to value of saved property "draftVersionWorkflowId" does not exist + And I want to check that element in the response list with "id" equals to value of saved property "certifiedVersionWorkflowId" does not exist + And I want to check that element in the response list with "id" equals to value of saved property "draftAndCertifiedVersionWorkflowId" does not exist \ No newline at end of file diff --git a/workflow/workflow-bdd/resources/json/createVersionWithInputsOutputs.json b/workflow/workflow-bdd/resources/json/createVersionWithInputsOutputs.json new file mode 100644 index 00000000..a9b6c3de --- /dev/null +++ b/workflow/workflow-bdd/resources/json/createVersionWithInputsOutputs.json @@ -0,0 +1,17 @@ +{ + "description": "first version - with inputs and outputs", + "inputs": [ + { + "mandatory": true, + "name": "in1", + "type": "STRING" + } + ], + "outputs": [ + { + "mandatory": true, + "name": "out1", + "type": "TIMESTAMP" + } + ] +} \ No newline at end of file diff --git a/workflow/workflow-bdd/stepDefinitions/Workflow_Steps.js b/workflow/workflow-bdd/stepDefinitions/Workflow_Steps.js index aeca5ebb..abeacab2 100644 --- a/workflow/workflow-bdd/stepDefinitions/Workflow_Steps.js +++ b/workflow/workflow-bdd/stepDefinitions/Workflow_Steps.js @@ -16,7 +16,7 @@ /** * @module WORKFLOW - * @description Creates a new WORKFLOW with a random name and saves the id and versionId on the context item object and the context vlm object
+ * @description Creates a new WORKFLOW with a random name and saves the id and versionId on the context item object
* Input data will be taken from the 'resources/json/createWorkflow.json' file. * @step I want to create a Workflow **/ -- cgit 1.2.3-korg