implemented header contains test
This commit is contained in:
@@ -1,6 +1,48 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
func CheckResults(testCase *TestCase) (bool, error) {
|
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
|
return true, nil
|
||||||
}
|
}
|
||||||
|
7
main.go
7
main.go
@@ -45,11 +45,16 @@ func main() {
|
|||||||
// Perform specified test cases
|
// Perform specified test cases
|
||||||
for i := range testDefinitions.TestCases {
|
for i := range testDefinitions.TestCases {
|
||||||
RunTest(&testDefinitions.TestCases[i])
|
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 {
|
if !success {
|
||||||
fmt.Printf("Test result failed\n")
|
fmt.Printf("Test result failed\n")
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// For debugging, just dump the output
|
// For debugging, just dump the output
|
||||||
|
@@ -11,8 +11,9 @@
|
|||||||
},
|
},
|
||||||
"expect": {
|
"expect": {
|
||||||
"header": {
|
"header": {
|
||||||
"equals": {
|
"contains": {
|
||||||
"http_status": "200"
|
"http_status": "200",
|
||||||
|
"Content-Type": "application/json"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"body": {
|
"body": {
|
||||||
@@ -39,7 +40,7 @@
|
|||||||
"expect": {
|
"expect": {
|
||||||
"header": {
|
"header": {
|
||||||
"contains": {
|
"contains": {
|
||||||
"http_status": "201"
|
"http_status": "200"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user