diff options
Diffstat (limited to 'src/main/java/com/att/ecomp/dcae/ci/api/tests/ruleEditor/RuleEditorControllerTest.java')
-rw-r--r-- | src/main/java/com/att/ecomp/dcae/ci/api/tests/ruleEditor/RuleEditorControllerTest.java | 319 |
1 files changed, 319 insertions, 0 deletions
diff --git a/src/main/java/com/att/ecomp/dcae/ci/api/tests/ruleEditor/RuleEditorControllerTest.java b/src/main/java/com/att/ecomp/dcae/ci/api/tests/ruleEditor/RuleEditorControllerTest.java new file mode 100644 index 0000000..73b51be --- /dev/null +++ b/src/main/java/com/att/ecomp/dcae/ci/api/tests/ruleEditor/RuleEditorControllerTest.java @@ -0,0 +1,319 @@ +package com.att.ecomp.dcae.ci.api.tests.ruleEditor; + +import com.att.ecomp.dcae.ci.api.tests.DcaeRestBaseTest; +import com.att.ecomp.dcae.ci.entities.rule_editor.SaveRuleError; +import org.onap.sdc.dcae.composition.services.Artifact; +import org.onap.sdc.dcae.composition.vfcmt.Vfcmt; +import com.att.ecomp.dcae.ci.utilities.DcaeRestClient; +import com.att.ecomp.dcae.ci.utilities.Report; +import com.aventstack.extentreports.Status; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.gson.JsonObject; +import org.onap.sdc.dcae.composition.restmodels.ruleeditor.MappingRules; +import org.onap.sdc.dcae.composition.restmodels.ruleeditor.Rule; +import org.openecomp.d2.ci.api.ElementFactory; +import org.openecomp.d2.ci.datatypes.UserRoleEnum; +import org.testng.annotations.Test; +import org.assertj.core.api.SoftAssertions; +import org.openecomp.d2.ci.datatypes.http.RestResponse; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.testng.Assert.fail; + +import java.util.List; + +public class RuleEditorControllerTest extends DcaeRestBaseTest { + + private String ruleRequestBody = + "{version:4.1,eventType:syslogFields,description:newRule,actions:[{from:{value:fromField,regex:\"\"},target:event.commonEventHeader.target,id:id,actionType:copy}," + + "{actionType:concat,from:{values:[{value:concat1},{value:_concat2}]},target:concatTargetField},{actionType:copy,from:{value:extractFromHere,regex:\"([^:]*):.*\"},target:regexTargetField}," + + "{actionType:map,from:{value:fromField},target:mapTargetField,map:{values:[{key:sourceVal1,value:targetVal1},{key:sourceVal2,value:targetVal2}],haveDefault:true,default:'\"\"'}}," + + "{actionType:\"Date Formatter\",id:98908,from:{value:\"${dateFormatterFrom}\"},target:dateFormatterTarget,dateFormatter:{toTimezone:UVW,fromTimezone:XYZ,fromFormat:inputFormat,toFormat:outputFormat}}]," + + "condition:{left:\"${leftOperand}\",operator:contains,right:[rightOperand1,rightOperand2]}}"; + + @Test + public void saveNewMappingRulesArtifactSuccessTest() throws Exception { + Report.log(Status.INFO, "test start"); + Vfcmt vfcmt = createVfcmt(); + RestResponse res = saveCompositionAndFirstRuleSuccess(vfcmt, "map", "n.1.map", "param1", ruleRequestBody); + JsonObject jsonRes = gson.fromJson(res.getResponse(), JsonObject.class); + assertThat(jsonRes.get("version").getAsString()).isEqualTo("4.1"); + assertThat(jsonRes.get("eventType").getAsString()).isEqualTo("syslogFields"); + assertThat(jsonRes.get("uid")).isNotNull(); + String expectedArtifactName = "map_n.1.map_param1_MappingRules.json"; + Artifact savedArtifact = fetchVfcmtArtifactMetadataByName(vfcmt.getUuid(), expectedArtifactName); + assertThat(savedArtifact).isNotNull(); + } + + @Test + public void translateSnmpMappingRuleWithAllActionTypesSuccessTest() throws Exception { + String expectedTranslation = "{\"processing\":[{\"phase\":\"snmp_map\",\"processors\":[{\"array\":\"varbinds\",\"datacolumn\":\"varbind_value\",\"keycolumn\":\"varbind_oid\",\"class\":\"SnmpConvertor\"}," + + "{\"phase\":\"%s\",\"class\":\"RunPhase\"}]},{\"phase\":\"%s\",\"filter\":{\"filters\":[{\"string\":\"${leftOperand}\",\"value\":\"rightOperand1\",\"class\":\"Contains\"}," + + "{\"string\":\"${leftOperand}\",\"value\":\"rightOperand2\",\"class\":\"Contains\"}],\"class\":\"Or\"}," + + "\"processors\":[{\"updates\":{\"event.commonEventHeader.target\":\"fromField\",\"concatTargetField\":\"concat1_concat2\"},\"class\":\"Set\"}," + + "{\"regex\":\"([^:]*):.*\",\"field\":\"regexTargetField\",\"value\":\"extractFromHere\",\"class\":\"ExtractText\"}," + + "{\"map\":{\"sourceVal1\":\"targetVal1\",\"sourceVal2\":\"targetVal2\"},\"field\":\"fromField\",\"toField\":\"mapTargetField\",\"default\":\"\",\"class\":\"MapAlarmValues\"}," + + "{\"fromFormat\":\"inputFormat\",\"fromTz\":\"XYZ\",\"toField\":\"dateFormatterTarget\",\"toFormat\":\"outputFormat\",\"toTz\":\"UVW\",\"value\":\"${dateFormatterFrom}\",\"class\":\"DateFormatter\"}]}," + + "{\"phase\":\"%s\",\"processors\":[{\"phase\":\"map_publish\",\"class\":\"RunPhase\"}]}]}"; + Vfcmt vfcmt = createVfcmt(); + String name = vfcmt.getName(); + saveCompositionAndFirstRuleSuccess(vfcmt, "map", "map", "param1", ruleRequestBody); + RestResponse res = DcaeRestClient.translateRules(vfcmt.getUuid(),"map", "map", "param1", "SNMP"); + Report.log(Status.INFO, "translateRules response= "+res); + assertThat(res.getStatusCode()).isEqualTo(200); + assertThat(res.getResponse()).isEqualTo(String.format(expectedTranslation, name, name, name)); + } + + @Test + public void addNewRuleToExistingArtifact() throws Exception{ + Vfcmt vfcmt = createVfcmt(); + String nid = "n.565663636.0"; + RestResponse res = saveCompositionAndFirstRuleSuccess(vfcmt, "map", nid, "param1", ruleRequestBody); + Rule rule1 = gson.fromJson(res.getResponse(), Rule.class); + res = DcaeRestClient.saveRule(vfcmt.getUuid(), "map", nid, "param1", ruleRequestBody); + Report.log(Status.INFO, "saveRule response= "+res); + Rule rule2 = gson.fromJson(res.getResponse(), Rule.class); + RestResponse responseGetRules = DcaeRestClient.getRules(vfcmt.getUuid(),"map", nid, "param1"); + Report.log(Status.INFO, "getRules response= "+responseGetRules); + MappingRules rules = gson.fromJson(responseGetRules.getResponse(), MappingRules.class); + Report.log(Status.INFO, "MappingRules="+responseGetRules.getResponse()); + assertThat(rules.getRules()).hasSize(2); + assertThat(rules.getRules().keySet()).containsOnly(rule1.getUid(), rule2.getUid()); + } + + @Test + public void editExistingRuleInArtifact() throws Exception{ + Vfcmt vfcmt = createVfcmt(); + String updated = "This is an update"; + RestResponse res = saveCompositionAndFirstRuleSuccess(vfcmt, "map", "map", "param1", ruleRequestBody); + Rule rule = gson.fromJson(res.getResponse(), Rule.class); + Report.log(Status.INFO, "save rule response=%s", res.getResponse()); + res = DcaeRestClient.getRules(vfcmt.getUuid(),"map", "map", "param1"); + Report.log(Status.INFO, "getRules3 response= "+res); + MappingRules rules = gson.fromJson(res.getResponse(), MappingRules.class); + Report.log(Status.INFO, "MappingRules1="+res.getResponse()); + assertThat(rules.getRules().get(rule.getUid()).getDescription()).isEqualTo("newRule"); + assertThat(rules.getRules().keySet()).containsOnly(rule.getUid()); + rule.setDescription(updated); + DcaeRestClient.saveRule(vfcmt.getUuid(), "map", "map", "param1", rule.toJson()); + Report.log(Status.INFO, "saveRule response= "+res); + res = DcaeRestClient.getRules(vfcmt.getUuid(),"map", "map", "param1"); + Report.log(Status.INFO, "getRules2 response= "+res); + rules = gson.fromJson(res.getResponse(), MappingRules.class); + Report.log(Status.INFO, "MappingRules2="+res.getResponse()); + assertThat(rules.getRules()).hasSize(1); + assertThat(rules.getRules().get(rule.getUid()).getDescription()).isEqualTo(updated); + } + + @Test + public void editRuleInArtifactNoSuchIdErrorTest() throws Exception { + String expectedError = "{\"requestError\":{\"serviceException\":{\"messageId\":\"SVC6036\",\"text\":\"Error - Failed to save rule. Internal persistence error\",\"variables\":[],\"formattedErrorMessage\":\"Error - Failed to save rule. Internal persistence error\"}},\"notes\":\"\"}"; + Vfcmt vfcmt = createVfcmt(); + RestResponse res = saveCompositionAndFirstRuleSuccess(vfcmt, "map", "map", "param1", ruleRequestBody); + Rule rule = gson.fromJson(res.getResponse(), Rule.class); + Report.log(Status.INFO, "rule="+rule); + rule.setUid("NoSuchUid"); + res = DcaeRestClient.saveRule(vfcmt.getUuid(), "map", "map", "param1", rule.toJson()); + Report.log(Status.INFO, "saveRule response= "+res); + assertThat(res.getStatusCode()).isEqualTo(409); + assertThat(res.getResponse()).isEqualTo(expectedError); + } + + + @Test + public void getAllRules() throws Exception{ + Vfcmt vfcmt = createVfcmt(); + RestResponse res = saveCompositionAndFirstRuleSuccess(vfcmt, "map", "map", "param1", ruleRequestBody); + String uid1 = gson.fromJson(res.getResponse(), JsonObject.class).get("uid").getAsString(); + //save two more rules + res = DcaeRestClient.saveRule(vfcmt.getUuid(), "map", "map", "param1", ruleRequestBody); + Report.log(Status.INFO, "saveRule1 response= "+res); + String uid2 = gson.fromJson(res.getResponse(), JsonObject.class).get("uid").getAsString(); + res = DcaeRestClient.saveRule(vfcmt.getUuid(), "map", "map", "param1", ruleRequestBody); + Report.log(Status.INFO, "saveRule2 response= "+res); + String uid3 = gson.fromJson(res.getResponse(), JsonObject.class).get("uid").getAsString(); + res = DcaeRestClient.getRules(vfcmt.getUuid(),"map", "map", "param1"); + Report.log(Status.INFO, "getRules response= "+res); + JsonObject jsonRes = gson.fromJson(res.getResponse(), JsonObject.class); + Report.log(Status.INFO, "jsonRes="+jsonRes); + assertThat(jsonRes.get("schema")).isNotNull(); + MappingRules actualRules = gson.fromJson(res.getResponse(), MappingRules.class); + Report.log(Status.INFO, "MappingRules="+res.getResponse()); + assertThat(actualRules.getRules()).hasSize(3); + assertThat(actualRules.getRules().keySet()).containsOnly(uid1, uid2, uid3); + } + + + @Test + public void deleteRuleSuccessTest() throws Exception{ + Vfcmt vfcmt = createVfcmt(); + //save first rule + RestResponse res = saveCompositionAndFirstRuleSuccess(vfcmt, "map", "map", "param1", ruleRequestBody); + String uid1 = gson.fromJson(res.getResponse(), JsonObject.class).get("uid").getAsString(); + // save second rule + res = DcaeRestClient.saveRule(vfcmt.getUuid(), "map", "map", "param1", ruleRequestBody); + Report.log(Status.INFO, "saveRule response= "+res); + String uid2 = gson.fromJson(res.getResponse(), JsonObject.class).get("uid").getAsString(); + res = DcaeRestClient.getRules(vfcmt.getUuid(),"map", "map", "param1"); + Report.log(Status.INFO, "getRules1 response= "+res); + MappingRules actualRules = gson.fromJson(res.getResponse(), MappingRules.class); + Report.log(Status.INFO, "MappingRules1="+res.getResponse()); + // get all rules should return both + assertThat(actualRules.getRules()).hasSize(2); + assertThat(actualRules.getRules().keySet()).containsOnly(uid1, uid2); + // delete a rule + res = DcaeRestClient.deleteRule(vfcmt.getUuid(),"map", "map", "param1", uid2); + Report.log(Status.INFO, "deleteRule1 response= "+res); + assertThat(res.getStatusCode()).isEqualTo(200); + res = DcaeRestClient.getRules(vfcmt.getUuid(),"map", "map", "param1"); + Report.log(Status.INFO, "getRules2 response= "+res); + actualRules = gson.fromJson(res.getResponse(), MappingRules.class); + Report.log(Status.INFO, "MappingRules2="+res.getResponse()); + // get rules should return one rule + assertThat(actualRules.getRules()).hasSize(1); + assertThat(actualRules.getRules().keySet()).containsOnly(uid1); + // delete the last rule - artifact should be deleted + res = DcaeRestClient.deleteRule(vfcmt.getUuid(),"map", "map", "param1", uid1); + Report.log(Status.INFO, "deleteRule2 response= "+res); + assertThat(res.getStatusCode()).isEqualTo(200); + String expectedArtifactName = "map_map_param1_MappingRules.json"; + Artifact savedArtifact = fetchVfcmtArtifactMetadataByName(vfcmt.getUuid(), expectedArtifactName); + Report.log(Status.INFO, "savedArtifact= "+savedArtifact); + assertThat(savedArtifact).isNull(); + // get rules should return empty + res = DcaeRestClient.getRules(vfcmt.getUuid(),"map", "map", "param1"); + Report.log(Status.INFO, "getRules3 response= "+res); + assertThat(res.getStatusCode()).isEqualTo(200); + assertThat(res.getResponse()).isEqualTo("{}"); + + } + + @Test + public void invalidJsonRuleFormatTest() throws Exception{ + String expectedError = "{\"requestError\":{\"serviceException\":{\"messageId\":\"SVC6035\",\"text\":\"Error - Rule format is invalid: %1.\",\"variables\":[\"java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $\"],\"formattedErrorMessage\":\"Error - Rule format is invalid: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $.\"}},\"notes\":\"\"}"; + RestResponse res = DcaeRestClient.saveRule("someId", "someName", "someNid", "someParam", "gibberish" ); + assertThat(res.getStatusCode()).isEqualTo(400); + assertThat(res.getResponse()).isEqualTo(expectedError); + } + + @Test + public void invalidActionTypeTest() throws Exception { + String expectedError = "{\"requestError\":{\"serviceException\":{\"messageId\":\"SVC6035\",\"text\":\"Error - Rule format is invalid: %1.\",\"variables\":[\"Undefined action type: gibberish\"],\"formattedErrorMessage\":\"Error - Rule format is invalid: Undefined action type: gibberish.\"}},\"notes\":\"\"}"; + RestResponse res = DcaeRestClient.saveRule("someId", "someName", "someNid", "someParam", "{actions:[{actionType:gibberish}]}"); + assertThat(res.getStatusCode()).isEqualTo(400); + assertThat(res.getResponse()).isEqualTo(expectedError); + } + + @Test + public void conflictingUsersErrorTest() throws Exception { + Vfcmt vfcmt = createVfcmt(); + RestResponse res = DcaeRestClient.saveComposition(vfcmt.getUuid(), vfcmt.getLastUpdaterUserId(), "{\"nid\":\"map\"}"); + assertThat(res.getStatusCode()).isEqualTo(200); + //check out by other user then try to save rule by current user + res = DcaeRestClient.checkoutVfcmt(vfcmt.getUuid(), ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER2).getUserId()); + assertThat(res.getStatusCode()).isEqualTo(200); + res = DcaeRestClient.saveRule(vfcmt.getUuid(), "map", "map", "someParam", ruleRequestBody); + assertThat(res.getStatusCode()).isEqualTo(403); + } + + @Test + public void uploadArtifactSdcErrorTest() throws Exception { + String expectedError = "{\"requestError\":{\"serviceException\":{\"messageId\":\"SVC6036\",\"text\":\"Error - Failed to save rule. Internal persistence error\",\"variables\":[],\"formattedErrorMessage\":\"Error - Failed to save rule. Internal persistence error\"}},\"notes\":\"Error: Invalid content.\"}"; + Vfcmt vfcmt = createVfcmt(); + RestResponse res = DcaeRestClient.saveComposition(vfcmt.getUuid(), vfcmt.getLastUpdaterUserId(), "{\"nid\":\"map\"}"); + assertThat(res.getStatusCode()).isEqualTo(200); + // Generated artifact label would be invalid and should fail when submitted to SDC + res = DcaeRestClient.saveRule(vfcmt.getUuid(), "map", "map", "()someParam", ruleRequestBody); + assertThat(res.getStatusCode()).isEqualTo(409); + assertThat(res.getResponse()).isEqualTo(expectedError); + } + + @Test + public void saveMappingRuleNoSuchNidErrorTest() throws Exception { + String expectedError = "{\"requestError\":{\"serviceException\":{\"messageId\":\"SVC6114\",\"text\":\"DCAE component %1 not found in composition\",\"variables\":[\"noSuchComponent\"],\"formattedErrorMessage\":\"DCAE component noSuchComponent not found in composition\"}},\"notes\":\"\"}"; + Vfcmt vfcmt = createVfcmt(); + RestResponse res = DcaeRestClient.saveComposition(vfcmt.getUuid(), vfcmt.getLastUpdaterUserId(), "{\"nid\":\"map\"}"); + assertThat(res.getStatusCode()).isEqualTo(200); + res = DcaeRestClient.saveRule(vfcmt.getUuid(), "noSuchComponent", "noSuchComponent", "someParam", ruleRequestBody); + assertThat(res.getStatusCode()).isEqualTo(400); + assertThat(res.getResponse()).isEqualTo(expectedError); + } + + + @Test + public void deleteRuleNoSuchIdTest() throws Exception { + String expectedError = "{\"requestError\":{\"serviceException\":{\"messageId\":\"SVC6115\",\"text\":\"Delete rule failed. Internal persistence error\",\"variables\":[],\"formattedErrorMessage\":\"Delete rule failed. Internal persistence error\"}},\"notes\":\"\"}"; + Vfcmt vfcmt = createVfcmt(); + //save rule + saveCompositionAndFirstRuleSuccess(vfcmt, "map", "map", "param1", ruleRequestBody); + RestResponse res = DcaeRestClient.deleteRule(vfcmt.getUuid(),"map", "map", "param1", "noSuchRuleId"); + Report.log(Status.INFO, "deleteRule response=%s", res); + assertThat(res.getStatusCode()).isEqualTo(409); + assertThat(res.getResponse()).isEqualTo(expectedError); + } + + // After first rule is saved the mappingRules.json artifact is available for get/delete/edit tests + private RestResponse saveCompositionAndFirstRuleSuccess(Vfcmt vfcmt, String dcaeCompName, String nid, String configParam, String body) throws Exception { + // generate and save a composition.yml + Report.log(Status.INFO, "saveCompositionAndFirstRuleSuccess start"); + RestResponse res = DcaeRestClient.saveComposition(vfcmt.getUuid(), vfcmt.getLastUpdaterUserId(), String.format("{\"nid\":\"%s\"}", nid)); + Report.log(Status.INFO, "saveComposition response=%s", res); + assertThat(res.getStatusCode()).isEqualTo(200); + + res = DcaeRestClient.saveRule(vfcmt.getUuid(), dcaeCompName, nid, configParam, body); + Report.log(Status.INFO, "saveRule response=%s", res); + assertThat(res.getStatusCode()).isEqualTo(200); + return res; + } + + + @Test + public void saveMappingRuleNegativeTest_BadResponse() throws Exception { + // arrange + Report.log(Status.INFO, "Arrangeing test..."); + ObjectMapper mapper = new ObjectMapper(); + String badRuleRequestBody = "{\"version\":\"5.3\",\"eventType\":\"syslogFields\",\"uid\":\"\",\"description\":\"map rules\"," + + "\"actions\":[{actionType:\"Date Formatter\",from:{value:whatever}},{\"id\":\"22fdded0-c9eb-11e7-83c1-3592231134a4\",\"actionType\":\"map\",\"from\":{\"value\":\"AAA\",\"regex\":\"\",\"state\":\"closed\",\"values\":[{\"value\":\"\"},{\"value\":\"\"}]},\"target\":\"BBB\",\"map\":{\"values\":[{\"key\":\"foo\",\"value\":\"bar\"}],\"haveDefault\":true,\"default\":\"\"}},{\"id\":\"2d6fab00-c9eb-11e7-83c1-3592231134a4\",\"actionType\":\"map\",\"from\":{\"value\":\"\",\"regex\":\"\",\"state\":\"closed\",\"values\":[{\"value\":\"\"},{\"value\":\"\"}]},\"target\":\"DDD\",\"map\":{\"values\":[{\"key\":\"foo\",\"value\":\"bar\"}],\"haveDefault\":false,\"default\":\"\"}},{\"id\":\"60bff5a0-c9eb-11e7-83c1-3592231134a4\",\"actionType\":\"map\",\"from\":{\"value\":\"EEE\",\"regex\":\"\",\"state\":\"closed\",\"values\":[{\"value\":\"\"},{\"value\":\"\"}]},\"target\":\"\",\"map\":{\"values\":[{\"key\":\"foo\",\"value\":\"bar\"}],\"haveDefault\":false,\"default\":\"\"}},{\"id\":\"75ea0ce0-c9eb-11e7-83c1-3592231134a4\",\"actionType\":\"map\",\"from\":{\"value\":\"FFF\",\"regex\":\"\",\"state\":\"closed\",\"values\":[{\"value\":\"\"},{\"value\":\"\"}]},\"target\":\"GGG\",\"map\":{\"values\":[{\"key\":\"foo\",\"value\":\"bar\"},{\"key\":\"\",\"value\":\"\"}],\"haveDefault\":false,\"default\":\"\"}},{\"id\":\"75ea0ce0-c9eb-11e7-83c1-3592231134a4\",\"actionType\":\"map\",\"from\":{\"value\":\"FFF\",\"regex\":\"\",\"state\":\"closed\",\"values\":[{\"value\":\"\"},{\"value\":\"\"}]},\"target\":\"GGG\",\"map\":{\"values\":[{\"key\":\"foo\",\"value\":\"bar\"},{\"key\":\"foo\",\"value\":\"not bar\"}],\"haveDefault\":false,\"default\":\"\"}}],\"condition\":null}"; + Vfcmt vfcmt = createVfcmt(); + Report.log(Status.INFO, "Saving composition of a fake cdump..."); + RestResponse res = DcaeRestClient.saveComposition(vfcmt.getUuid(), vfcmt.getLastUpdaterUserId(), "{\"nid\":\"map\"}"); + Report.logDebug("saveComposition response", res); + if (res.getStatusCode() != 200) { + fail("Unable to arrange test, save composition failed\n" + res.toString()); + } + // act + Report.log(Status.INFO, "Executing..."); + Report.logDebug("Request body", badRuleRequestBody); + RestResponse targetRes = DcaeRestClient.saveRule(vfcmt.getUuid(), "noSuchComponent", "map", "someParam", badRuleRequestBody); + Report.logDebug("saveRule response", targetRes); + // assert + Report.log(Status.INFO, "Asserting..."); + List<String> errors = mapper.readValue(targetRes.getResponse(), SaveRuleError.class).getFormattedErrors(); // parse response + SoftAssertions.assertSoftly(softly -> { + softly.assertThat(targetRes.getStatusCode()).isEqualTo(400); + softly.assertThat(errors).containsExactlyInAnyOrder( + "Please fill the default value of map action to BBB", + "Please fill the from field of map action to DDD", + "Please fill the target field of map action to ", + "Please fill all key-value pairs of map action to GGG", + "Error: Duplication in map keys exists, please modify rule configuration", + "Please fill the target field of Date Formatter action to null", + "Please fill the to timezone field of Date Formatter action to null", + "Please fill the from timezone field of Date Formatter action to null", + "Please fill the from format field of Date Formatter action to null", + "Please fill the to format field of Date Formatter action to null" + ); + }); + } + + @Test + public void translateInvalidFlowTypeFailureTest() throws Exception { + String expectedError = "{\"requestError\":{\"serviceException\":{\"messageId\":\"SVC6116\",\"text\":\"Translation failed. Reason: %s\",\"variables\":[\"%s\"],\"formattedErrorMessage\":\"Translation failed. Reason: %s\"}},\"notes\":\"\"}"; + RestResponse res = DcaeRestClient.translateRules("someId","map", "map", "param1", "noSuchFlowType"); + assertThat(res.getStatusCode()).isEqualTo(400); + assertThat(res.getResponse()).isEqualTo(String.format(expectedError, "%1", "Flow type noSuchFlowType not found", "Flow type noSuchFlowType not found")); + res = DcaeRestClient.translateRules("someId","map", "map", "param1", null); + assertThat(res.getStatusCode()).isEqualTo(400); + assertThat(res.getResponse()).isEqualTo(String.format(expectedError, "%1", "Flow type null not found", "Flow type null not found")); + } +} |