package client import ( "bytes" "encoding/json" "io/ioutil" "net/http" "github.com/docker/docker/api/types" ) // transportFunc allows us to inject a mock transport for testing. We define it // here so we can detect the tlsconfig and return nil for only this type. type transportFunc func(*http.Request) (*http.Response, error) func (tf transportFunc) RoundTrip(req *http.Request) (*http.Response, error) { return tf(req) } func newMockClient(doer func(*http.Request) (*http.Response, error)) *http.Client { return &http.Client{ Transport: transportFunc(doer), } } func errorMock(statusCode int, message string) func(req *http.Request) (*http.Response, error) { return func(req *http.Request) (*http.Response, error) { header := http.Header{} header.Set("Content-Type", "application/json") body, err := json.Marshal(&types.ErrorResponse{ Message: message, }) if err != nil { return nil, err } return &http.Response{ StatusCode: statusCode, Body: ioutil.NopCloser(bytes.NewReader(body)), Header: header, }, nil } } func plainTextErrorMock(statusCode int, message string) func(req *http.Request) (*http.Response, error) { return func(req *http.Request) (*http.Response, error) { return &http.Response{ StatusCode: statusCode, Body: ioutil.NopCloser(bytes.NewReader([]byte(message))), }, nil } }