From fbd238e55a15bf4d382cfae8773e08bbd67cd6b3 Mon Sep 17 00:00:00 2001 From: debugtalk Date: Sun, 26 Sep 2021 16:50:59 +0800 Subject: [PATCH] fix: post data --- examples/postman_echo/hardcode_test.go | 20 +++++++++++++++----- runner.go | 16 ++++++++++++---- 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/examples/postman_echo/hardcode_test.go b/examples/postman_echo/hardcode_test.go index bc74ae2f..f061d146 100644 --- a/examples/postman_echo/hardcode_test.go +++ b/examples/postman_echo/hardcode_test.go @@ -19,31 +19,41 @@ func TestCaseHardcode(t *testing.T) { WithParams(map[string]interface{}{"foo1": "bar1", "foo2": "bar2"}). WithHeaders(map[string]string{"User-Agent": "HttpBoomer"}). Validate(). - AssertEqual("status_code", 200, "check status code"), + AssertEqual("status_code", 200, "check status code"). + AssertEqual("headers.Connection", "keep-alive", "check header Connection"). + AssertEqual("headers.\"Content-Type\"", "application/json; charset=utf-8", "check header Content-Type"). + AssertEqual("body.args.foo1", "bar1", "check args foo1"). + AssertEqual("body.args.foo2", "bar2", "check args foo2"), httpboomer.Step("post raw text"). POST("/post"). WithHeaders(map[string]string{"User-Agent": "HttpBoomer", "Content-Type": "text/plain"}). WithData("This is expected to be sent back as part of response body."). Validate(). - AssertEqual("status_code", 200, "check status code"), + AssertEqual("status_code", 200, "check status code"). + AssertEqual("body.data", "This is expected to be sent back as part of response body.", "check data"), httpboomer.Step("post form data"). POST("/post"). WithHeaders(map[string]string{"User-Agent": "HttpBoomer", "Content-Type": "application/x-www-form-urlencoded"}). WithParams(map[string]interface{}{"foo1": "bar1", "foo2": "bar2"}). Validate(). - AssertEqual("status_code", 200, "check status code"), + AssertEqual("status_code", 200, "check status code"). + AssertEqual("body.form.foo1", "bar1", "check form foo1"). + AssertEqual("body.form.foo2", "bar2", "check form foo2"), httpboomer.Step("post json data"). POST("/post"). WithHeaders(map[string]string{"User-Agent": "HttpBoomer"}). WithJSON(map[string]interface{}{"foo1": "bar1", "foo2": "bar2"}). Validate(). - AssertEqual("status_code", 200, "check status code"), + AssertEqual("status_code", 200, "check status code"). + AssertEqual("body.json.foo1", "bar1", "check json foo1"). + AssertEqual("body.json.foo2", "bar2", "check json foo2"), httpboomer.Step("put request"). PUT("/put"). WithHeaders(map[string]string{"User-Agent": "HttpBoomer", "Content-Type": "text/plain"}). WithData("This is expected to be sent back as part of response body."). Validate(). - AssertEqual("status_code", 200, "check status code"), + AssertEqual("status_code", 200, "check status code"). + AssertEqual("body.data", "This is expected to be sent back as part of response body.", "check data"), }, } diff --git a/runner.go b/runner.go index d0bb60f8..7cee988c 100644 --- a/runner.go +++ b/runner.go @@ -72,10 +72,18 @@ func (r *Runner) runStep(step IStep, config *TConfig) error { func (r *Runner) runStepRequest(step *TStep) error { // prepare request args var v []interface{} - v = append(v, req.Header(step.Request.Headers)) - v = append(v, req.Param(step.Request.Params)) - v = append(v, step.Request.Data) - v = append(v, req.BodyJSON(step.Request.JSON)) + if len(step.Request.Headers) > 0 { + v = append(v, req.Header(step.Request.Headers)) + } + if len(step.Request.Params) > 0 { + v = append(v, req.Param(step.Request.Params)) + } + if step.Request.Data != nil { + v = append(v, step.Request.Data) + } + if step.Request.JSON != nil { + v = append(v, req.BodyJSON(step.Request.JSON)) + } for cookieName, cookieValue := range step.Request.Cookies { v = append(v, &http.Cookie{