//go:build !release // +build !release package apim import ( "bytes" "io" "io/ioutil" "net/http" piperhttp "github.com/SAP/jenkins-library/pkg/http" "github.com/pkg/errors" ) type HttpMockAPIM struct { Method string // is set during test execution URL string // is set before test execution Header map[string][]string // is set before test execution ResponseBody string // is set before test execution Options piperhttp.ClientOptions // is set during test StatusCode int // is set during test } // Sender provides an interface to the piper http client for uid/pwd and token authenticated requests type SenderMock interface { SendRequest(method, url string, body io.Reader, header http.Header, cookies []*http.Cookie) (*http.Response, error) SetOptions(options piperhttp.ClientOptions) } // Sender provides an interface to the piper http client for uid/pwd and token authenticated requests type ServciceKeyMock interface { GetServiceKey() string } func (c *HttpMockAPIM) SetOptions(options piperhttp.ClientOptions) { c.Options = options } func (c *HttpMockAPIM) SendRequest(method string, url string, r io.Reader, header http.Header, cookies []*http.Cookie) (*http.Response, error) { c.Method = method c.URL = url if r != nil { _, err := ioutil.ReadAll(r) if err != nil { return nil, err } } res := http.Response{ StatusCode: c.StatusCode, Header: c.Header, Body: ioutil.NopCloser(bytes.NewReader([]byte(c.ResponseBody))), } if c.StatusCode >= 400 { return &res, errors.New("Bad Request") } return &res, nil } func GetServiceKey() string { apiServiceKey := `{ "oauth": { "url": "https://demo", "clientid": "demouser", "clientsecret": "******", "tokenurl": "https://demo/oauth/token" } }` return apiServiceKey }