aboutsummaryrefslogtreecommitdiffstats
path: root/client
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2023-05-09 19:49:19 +0200
committerMartin Polden <mpolden@mpolden.no>2023-05-09 20:53:38 +0200
commitaa3b3b13b2bba9e524870949a942c3e5224ba0e3 (patch)
treeae31e6e3ce18fbb3cc7c92e040c37409945b7071 /client
parent2c245233cde7e286c806bf8182ec2329dacb915c (diff)
Support consuming request body in mock
Diffstat (limited to 'client')
-rw-r--r--client/go/internal/mock/http.go20
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)