github.com/kubeshop/testkube@v1.17.23/contrib/executor/postman/pkg/runner/newman/mapper.go (about) 1 package newman 2 3 import ( 4 "time" 5 6 "github.com/kubeshop/testkube/pkg/api/v1/testkube" 7 ) 8 9 func MapMetadataToResult(newmanResult NewmanExecutionResult) testkube.ExecutionResult { 10 status := testkube.StatusPtr(testkube.PASSED_ExecutionStatus) 11 if len(newmanResult.Metadata.Run.Failures) > 0 { 12 status = testkube.StatusPtr(testkube.FAILED_ExecutionStatus) 13 } 14 15 result := testkube.ExecutionResult{ 16 Output: newmanResult.Output, 17 OutputType: "text/plain", 18 Status: status, 19 } 20 21 runHasFailedAssertions := false 22 for _, execution := range newmanResult.Metadata.Run.Executions { 23 24 duration := time.Duration(execution.Response.ResponseTime) * time.Millisecond 25 step := testkube.ExecutionStepResult{ 26 Name: execution.Item.Name, 27 Status: "passed", 28 Duration: duration.String(), 29 } 30 31 executionHasFailedAssertions := false 32 for _, assertion := range execution.Assertions { 33 assertionResult := testkube.AssertionResult{ 34 Name: assertion.Assertion, 35 Status: "passed", 36 } 37 38 if assertion.Error != nil { 39 40 assertionResult.ErrorMessage = assertion.Error.Message 41 assertionResult.Status = "failed" 42 executionHasFailedAssertions = true 43 } 44 45 step.AssertionResults = append(step.AssertionResults, assertionResult) 46 } 47 48 if executionHasFailedAssertions { 49 step.Status = "failed" 50 runHasFailedAssertions = true 51 } 52 53 result.Steps = append(result.Steps, step) 54 } 55 56 if runHasFailedAssertions { 57 result.Status = testkube.StatusPtr(testkube.FAILED_ExecutionStatus) 58 } 59 60 return result 61 } 62 63 func makeSuccessExecution(out []byte) (result testkube.ExecutionResult) { 64 status := testkube.PASSED_ExecutionStatus 65 result.Status = &status 66 result.Output = string(out) 67 result.OutputType = "text/plain" 68 69 return result 70 }