diff options
author | Martin Polden <mpolden@mpolden.no> | 2023-05-09 19:49:19 +0200 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2023-05-09 20:53:38 +0200 |
commit | aa3b3b13b2bba9e524870949a942c3e5224ba0e3 (patch) | |
tree | ae31e6e3ce18fbb3cc7c92e040c37409945b7071 /client | |
parent | 2c245233cde7e286c806bf8182ec2329dacb915c (diff) |
Support consuming request body in mock
Diffstat (limited to 'client')
-rw-r--r-- | client/go/internal/mock/http.go | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/client/go/internal/mock/http.go b/client/go/internal/mock/http.go index 58614d7e5bd..8a17d9996d6 100644 --- a/client/go/internal/mock/http.go +++ b/client/go/internal/mock/http.go @@ -11,13 +11,20 @@ import ( ) type HTTPClient struct { - // The responses to return for future requests. Once a response is consumed, it's removed from this slice + // The responses to return for future requests. Once a response is consumed, it's removed from this slice. nextResponses []HTTPResponse - // LastRequest is the last HTTP request made through this + // LastRequest is the last HTTP request made through this. LastRequest *http.Request - // Requests contains all requests made through this + // ReadBody controls whether the client consumes the request body automatically. If true, LastBody will contain the + // body of the most recent request. + ReadBody bool + + // LastBody is a copy of the last request payload sent through this. + LastBody []byte + + // Requests contains all requests made through this. Requests []*http.Request } @@ -48,6 +55,13 @@ func (c *HTTPClient) Do(request *http.Request, timeout time.Duration) (*http.Res c.nextResponses = c.nextResponses[1:] } c.LastRequest = request + if c.ReadBody && request.Body != nil { + body, err := io.ReadAll(request.Body) + if err != nil { + return nil, err + } + c.LastBody = body + } c.Requests = append(c.Requests, request) if response.Header == nil { response.Header = make(http.Header) |