From e4635297c2db283378487392f2e4d023189632b7 Mon Sep 17 00:00:00 2001 From: Vinicius Isola Date: Thu, 26 Sep 2019 07:07:50 -0400 Subject: [PATCH] feat(Post Processing): stop request chain if post processing error --- pkg/request/executor.go | 7 ++++--- pkg/request/post_process.go | 17 +++++++++-------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/pkg/request/executor.go b/pkg/request/executor.go index 7d9c813..1bc9a27 100644 --- a/pkg/request/executor.go +++ b/pkg/request/executor.go @@ -41,9 +41,9 @@ func ExecuteRequestLoop(executionContext ExecutionContext) ([]ExecutedRequestRes return nil, sessionErr } - currentConfiguredRequest, processError := replaceRequestVariables(currentConfiguredRequest, mergedProfiles, executionContext) - if processError != nil { - return nil, processError + currentConfiguredRequest, replaceVariablesError := replaceRequestVariables(currentConfiguredRequest, mergedProfiles, executionContext) + if replaceVariablesError != nil { + return nil, replaceVariablesError } response, executeErr := executeRequest(client, currentConfiguredRequest, executionContext.Session) @@ -62,6 +62,7 @@ func ExecuteRequestLoop(executionContext ExecutionContext) ([]ExecutedRequestRes result[len(result)-1].PostProcessOutput = postProcessResult.Output if postProcessError != nil { result[len(result)-1].PostProcessError = postProcessError.Error() + break } if len(postProcessResult.Requests) > 0 { diff --git a/pkg/request/post_process.go b/pkg/request/post_process.go index d46f385..05cac78 100644 --- a/pkg/request/post_process.go +++ b/pkg/request/post_process.go @@ -58,7 +58,7 @@ func createAddVariableFunction(executionContext *ExecutionContext) func(string, } } -func createAddRequestFunction(context *PostProcessContext, executionContext *ExecutionContext) func(otto.Value) { +func createAddRequestFunction(vm *otto.Otto, context *PostProcessContext, executionContext *ExecutionContext) func(otto.Value) { return func(value otto.Value) { unconfiguredRequest := Request{} requestName := "" @@ -75,16 +75,16 @@ func createAddRequestFunction(context *PostProcessContext, executionContext *Exe if value.IsObject() { toAddAsMap, err := value.Export() if err != nil { - context.Output += fmt.Sprintf("Error while converting object to map: %s\n%s\n", value, err.Error()) log.Error("Error while converting request object to map.", err) - return + message := fmt.Sprintf("Error while converting object to map: %s\n%s\n", value, err.Error()) + panic(vm.MakeCustomError("MappingError", message)) } var toAdd Request if err := mapstructure.Decode(toAddAsMap, &toAdd); err != nil { - context.Output += fmt.Sprintf("Error while converting map to request object.\n%s\n", err.Error()) log.Error("Error while converting map to request object.", err) - return + message := fmt.Sprintf("Error while converting map to request object.\n%s\n", err.Error()) + panic(vm.MakeCustomError("ConversionError", message)) } unconfiguredRequest = toAdd @@ -95,11 +95,12 @@ func createAddRequestFunction(context *PostProcessContext, executionContext *Exe configuredRequest, err := ConfigureRequestSimple(unconfiguredRequest, &mergedProfile, requestName) if err != nil { - context.Output += fmt.Sprintf("Error while configuring request: %s\n", err.Error()) - return + message := fmt.Sprintf("Error while configuring request: %s\n", err.Error()) + panic(vm.MakeCustomError("ConfigurationError", message)) } context.Requests = append(context.Requests, *configuredRequest) + return } } @@ -122,7 +123,7 @@ func preparePostProcessContext(vm *otto.Otto, executionContext *ExecutionContext } vm.Set("addVariable", createAddVariableFunction(executionContext)) - vm.Set("addRequest", createAddRequestFunction(context, executionContext)) + vm.Set("addRequest", createAddRequestFunction(vm, context, executionContext)) vm.Set("print", createPrintFunction(context)) vm.Set("println", createPrintlnFunction(context))