(result api.HTTPRequestResult)
| 11 | ) |
| 12 | |
| 13 | func printHTTPRequestResult(result api.HTTPRequestResult) string { |
| 14 | if result.Err != "" { |
| 15 | return fmt.Sprintf(" Err: %v\n\n", result.Err) |
| 16 | } |
| 17 | |
| 18 | var str strings.Builder |
| 19 | fmt.Fprintf(&str, " Response Status Code: %v\n", result.StatusCode) |
| 20 | |
| 21 | filteredHeaders := make(map[string]string) |
| 22 | for respK, respV := range result.ResponseHeaders { |
| 23 | for _, test := range result.Request.Tests { |
| 24 | if test.HeadersContain == nil { |
| 25 | continue |
| 26 | } |
| 27 | interpolatedTestHeaderKey := checks.InterpolateVariables(test.HeadersContain.Key, result.Variables) |
| 28 | if strings.EqualFold(respK, interpolatedTestHeaderKey) { |
| 29 | filteredHeaders[respK] = respV |
| 30 | } |
| 31 | } |
| 32 | } |
| 33 | |
| 34 | filteredTrailers := make(map[string]string) |
| 35 | for respK, respV := range result.ResponseTrailers { |
| 36 | for _, test := range result.Request.Tests { |
| 37 | if test.TrailersContain == nil { |
| 38 | continue |
| 39 | } |
| 40 | |
| 41 | interpolatedTestTrailerKey := checks.InterpolateVariables(test.TrailersContain.Key, result.Variables) |
| 42 | if strings.EqualFold(respK, interpolatedTestTrailerKey) { |
| 43 | filteredTrailers[respK] = respV |
| 44 | } |
| 45 | } |
| 46 | } |
| 47 | |
| 48 | if len(filteredHeaders) > 0 { |
| 49 | str.WriteString(" Response Headers: \n") |
| 50 | for k, v := range filteredHeaders { |
| 51 | fmt.Fprintf(&str, " - %v: %v\n", k, v) |
| 52 | } |
| 53 | } |
| 54 | |
| 55 | str.WriteString(" Response Body: \n") |
| 56 | bytes := []byte(result.BodyString) |
| 57 | contentType := http.DetectContentType(bytes) |
| 58 | if contentType == "application/json" || strings.HasPrefix(contentType, "text/") { |
| 59 | var unmarshalled any |
| 60 | err := json.Unmarshal([]byte(result.BodyString), &unmarshalled) |
| 61 | if err == nil { |
| 62 | pretty, err := json.MarshalIndent(unmarshalled, "", " ") |
| 63 | if err == nil { |
| 64 | str.Write(pretty) |
| 65 | } else { |
| 66 | str.WriteString(result.BodyString) |
| 67 | } |
| 68 | } else { |
| 69 | str.WriteString(result.BodyString) |
| 70 | } |
no test coverage detected