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  }