feat: validate response object

This commit is contained in:
debugtalk
2021-09-26 16:28:18 +08:00
parent df7366af55
commit 9f59dbf340
9 changed files with 156 additions and 18 deletions

View File

@@ -3,26 +3,34 @@ package httpboomer
import (
"log"
"net/http"
"testing"
"github.com/imroc/req"
)
var defaultRunner = NewRunner()
func Test(testcases ...*TestCase) error {
return defaultRunner.Run(testcases...)
func Test(t *testing.T, testcases ...*TestCase) error {
return defaultRunner.WithTestingT(t).Run(testcases...)
}
func NewRunner() *Runner {
return &Runner{
t: &testing.T{},
Client: req.New(),
}
}
type Runner struct {
t *testing.T
Client *req.Req
}
func (r *Runner) WithTestingT(t *testing.T) *Runner {
r.t = t
return r
}
func (r *Runner) Run(testcases ...*TestCase) error {
for _, testcase := range testcases {
if err := r.runCase(testcase); err != nil {
@@ -62,6 +70,7 @@ 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))
@@ -75,12 +84,21 @@ func (r *Runner) runStepRequest(step *TStep) error {
})
}
// do request action
req.Debug = true
resp, err := r.Client.Do(string(step.Request.Method), step.Request.URL, v...)
if err != nil {
return err
}
defer resp.Response().Body.Close()
// validate response
respObj := NewResponseObject(r.t, resp)
err = respObj.Validate(step.Validators)
if err != nil {
return err
}
return nil
}