implemented header contains test

This commit is contained in:
2024-01-03 10:19:49 +11:00
parent 499a6df594
commit 7629ed05bd
3 changed files with 52 additions and 4 deletions

View File

@@ -1,6 +1,48 @@
package main
import (
"errors"
"fmt"
"strconv"
"strings"
)
func CheckResults(testCase *TestCase) (bool, error) {
// Check headers
for k, v := range testCase.Expect.Header.Contains {
fmt.Printf("Header contains check '%s'='%s'\n", k, v)
if k == "http_status" { // http status is a special case
statusCode, err := strconv.Atoi(v)
if err != nil {
error := fmt.Sprintf("unable to convert http_status expected value '%s' to int : %s", v, err)
return false, errors.New(error)
}
if statusCode != testCase.ResultStatusCode {
return false, nil
}
} else { // any other contains check
checkFound := false
for hKey, hVal := range testCase.ResultHeaders {
if k == hKey {
fmt.Printf("Found header key '%s', checking value '%s' matches test definition '%s'\n", hKey, hVal, v)
for i := range hVal {
if strings.Contains(hVal[i], v) {
fmt.Printf("Found match '%s' = '%s'\n", hVal[i], v)
checkFound = true
}
}
}
}
if !checkFound {
fmt.Printf("Expected to find header key-value of '%s:%s' but no matching value was found\n", k, v)
return false, nil
}
}
}
return true, nil
}

View File

@@ -45,11 +45,16 @@ func main() {
// Perform specified test cases
for i := range testDefinitions.TestCases {
RunTest(&testDefinitions.TestCases[i])
success, _ := CheckResults(&testDefinitions.TestCases[i])
success, err := CheckResults(&testDefinitions.TestCases[i])
if err != nil {
fmt.Printf("Error running test case : %s\n", err)
os.Exit(1)
}
if !success {
fmt.Printf("Test result failed\n")
os.Exit(1)
}
}
// For debugging, just dump the output

View File

@@ -11,8 +11,9 @@
},
"expect": {
"header": {
"equals": {
"http_status": "200"
"contains": {
"http_status": "200",
"Content-Type": "application/json"
}
},
"body": {
@@ -39,7 +40,7 @@
"expect": {
"header": {
"contains": {
"http_status": "201"
"http_status": "200"
}
}
}