now making valid requests
This commit is contained in:
39
main.go
39
main.go
@@ -33,7 +33,8 @@ type TestCase struct {
|
|||||||
Expect ExpectOptions `json:"expect"`
|
Expect ExpectOptions `json:"expect"`
|
||||||
|
|
||||||
Header map[string]string
|
Header map[string]string
|
||||||
Body map[string]string
|
//Body map[string]string
|
||||||
|
Body []byte
|
||||||
|
|
||||||
// Something to store results in
|
// Something to store results in
|
||||||
ResultStatusCode int
|
ResultStatusCode int
|
||||||
@@ -136,6 +137,7 @@ func RunTest(testCase *TestCase) error {
|
|||||||
var err error
|
var err error
|
||||||
var requestUrl string
|
var requestUrl string
|
||||||
var requestType string
|
var requestType string
|
||||||
|
var req *http.Request
|
||||||
//var requestHeaders map[string]string
|
//var requestHeaders map[string]string
|
||||||
//var requestBody map[string]string
|
//var requestBody map[string]string
|
||||||
|
|
||||||
@@ -159,6 +161,7 @@ func RunTest(testCase *TestCase) error {
|
|||||||
|
|
||||||
// Populate request body
|
// Populate request body
|
||||||
|
|
||||||
|
// Get request type, default to GET
|
||||||
if len(testCase.Method) == 0 {
|
if len(testCase.Method) == 0 {
|
||||||
//return errors.New("no test method specifed, must be either GET or POST")
|
//return errors.New("no test method specifed, must be either GET or POST")
|
||||||
|
|
||||||
@@ -169,7 +172,12 @@ func RunTest(testCase *TestCase) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Create request
|
// Create request
|
||||||
req, err := http.NewRequest(requestType, requestUrl, nil)
|
if len(testCase.Body) > 0 {
|
||||||
|
req, err = http.NewRequest(requestType, requestUrl, bytes.NewBuffer(testCase.Body))
|
||||||
|
} else {
|
||||||
|
req, err = http.NewRequest(requestType, requestUrl, nil)
|
||||||
|
}
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
errMessage := fmt.Sprintf("error submitting request : '%s'\n", err)
|
errMessage := fmt.Sprintf("error submitting request : '%s'\n", err)
|
||||||
return errors.New(errMessage)
|
return errors.New(errMessage)
|
||||||
@@ -180,14 +188,15 @@ func RunTest(testCase *TestCase) error {
|
|||||||
if len(testDefinitions.Headers) > 0 {
|
if len(testDefinitions.Headers) > 0 {
|
||||||
fmt.Printf("Adding global headers to request\n")
|
fmt.Printf("Adding global headers to request\n")
|
||||||
for k, v := range testDefinitions.Headers {
|
for k, v := range testDefinitions.Headers {
|
||||||
fmt.Printf("Add Header %s = %s\n", k, v)
|
fmt.Printf("Add global header %s = %s\n", k, v)
|
||||||
req.Header.Add(k, v)
|
req.Header.Add(k, v)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Then any test case specific headers
|
// Then any test case specific headers
|
||||||
for i, key := range testCase.Header {
|
for k, v := range testCase.Header {
|
||||||
req.Header.Add(key, testDefinitions.Headers[i])
|
fmt.Printf("Add Header %s = %s\n", k, v)
|
||||||
|
req.Header.Add(k, v)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Perform request
|
// Perform request
|
||||||
@@ -199,6 +208,16 @@ func RunTest(testCase *TestCase) error {
|
|||||||
defer resp.Body.Close()
|
defer resp.Body.Close()
|
||||||
|
|
||||||
// Store response
|
// Store response
|
||||||
|
fmt.Printf("Header response:\n%+v\n", resp.Header)
|
||||||
|
fmt.Printf("http_status:\n'%+v'\n", resp.StatusCode)
|
||||||
|
|
||||||
|
body, err := io.ReadAll(resp.Body)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println(err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Printf("Body response:\n%s\n", string(body))
|
||||||
|
|
||||||
// No errors if we reached this point
|
// No errors if we reached this point
|
||||||
return nil
|
return nil
|
||||||
@@ -366,7 +385,15 @@ func ReadInput(data []byte, testDefinitions *TestDefinitions) {
|
|||||||
|
|
||||||
// TODO : Support nested json instead of single level flat request
|
// TODO : Support nested json instead of single level flat request
|
||||||
|
|
||||||
thisTestCase.Body = OrderedToStringMap(val.(orderedmap.OrderedMap))
|
//thisTestCase.Body = OrderedToStringMap(val.(orderedmap.OrderedMap))
|
||||||
|
|
||||||
|
bytes, err := json.Marshal(val)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Printf("Error processing request body for test case : '%s'\n", err)
|
||||||
|
} else {
|
||||||
|
thisTestCase.Body = bytes
|
||||||
|
//fmt.Printf("Body marshalled:\n%v\n", string(bytes))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// Header
|
// Header
|
||||||
if val, ok := thisTestCaseMap.Get("header"); ok {
|
if val, ok := thisTestCaseMap.Get("header"); ok {
|
||||||
|
Reference in New Issue
Block a user