diff --git a/cucumber-tests/src/test/java/cucumber/api/Methods.java b/cucumber-tests/src/test/java/cucumber/api/Methods.java index d5dd458a..d9a02ae6 100644 --- a/cucumber-tests/src/test/java/cucumber/api/Methods.java +++ b/cucumber-tests/src/test/java/cucumber/api/Methods.java @@ -122,4 +122,33 @@ public Map getFormVariables(String taskId) { return submitAndActivityIds; } + + private String getInstanceVariables(String processInstanceId) { + String payload = + "{\"processInstanceIdIn\":[\"" + + processInstanceId + + "\"],\"sorting\":[{\"sortBy\":\"variableName\",\"sortOrder\":\"asc\"}]}"; + Map params = new HashMap<>(); + params.put("deserializeValues", "false"); + params.put("maxResults", "50"); + params.put("firstResult", "0"); + + RestAssured.baseURI = this.camundaUrl; + RequestSpecification httpRequest = RestAssured.given(); + + Response res = httpRequest + .headers(headers) + .cookie(cookiesMap.get("XSRF")) + .cookie(cookiesMap.get("JSESSIONID")) + .body(payload) + .urlEncodingEnabled(false) + .post("camunda/api/engine/engine/default/variable-instance"); + return res.getBody().asString(); + } + + public String getVariableValueByKey(String processInstanceId, String variableKey) { + String valiables = getInstanceVariables(processInstanceId); + JsonPath jpath = new JsonPath(valiables); + return jpath.getString("find{it.name == '" + variableKey + "'}.value"); + } } diff --git a/cucumber-tests/src/test/java/cucumber/stepdefinitions/StepDefinitions.java b/cucumber-tests/src/test/java/cucumber/stepdefinitions/StepDefinitions.java index 6a068ea9..27ff90c6 100644 --- a/cucumber-tests/src/test/java/cucumber/stepdefinitions/StepDefinitions.java +++ b/cucumber-tests/src/test/java/cucumber/stepdefinitions/StepDefinitions.java @@ -107,6 +107,14 @@ public void ensureThatProcessCompleted(Actor actor) { Assertions.assertEquals(404, respCodeResult, "process instance was not completed"); } + @Then("{actor} can get events variables") + public void checkEventVariables(Actor actor) { + String startVar = methods.getVariableValueByKey(processInstanceId, "startVariable"); + Assertions.assertEquals("true", startVar, "variable on start event was not created"); + String endVar = methods.getVariableValueByKey(processInstanceId, "endVariable"); + Assertions.assertEquals("true", endVar, "variable on end event was not created"); + } + @When("{actor} selects start process {string}") public void startProcess(Actor actor, String processName) { actor.wasAbleTo(NavigateTo.theTaskListPage()); diff --git a/cucumber-tests/src/test/resources/features/cucumber/submit_invoice_for_approval.feature b/cucumber-tests/src/test/resources/features/cucumber/submit_invoice_for_approval.feature index 85e58746..75061172 100644 --- a/cucumber-tests/src/test/resources/features/cucumber/submit_invoice_for_approval.feature +++ b/cucumber-tests/src/test/resources/features/cucumber/submit_invoice_for_approval.feature @@ -4,6 +4,7 @@ Feature: Invoice for Approval Scenario: Start and complete process with Attachments API test Given kermit is logged in to Camunda via POST When he starts an Invoice Process via API + Then he can get events variables When he completes Invoice Process via API Then he should see that process not in the list via API @reset