github.com/aliyun/credentials-go@v1.4.7/credentials/response/common_response_test.go (about) 1 package response 2 3 import ( 4 "bytes" 5 "errors" 6 "io" 7 "io/ioutil" 8 "net/http" 9 "strings" 10 "testing" 11 12 "github.com/stretchr/testify/assert" 13 ) 14 15 func Test_ParseFromHTTPResponse(t *testing.T) { 16 r := &CommonResponse{} 17 res := &http.Response{ 18 Body: ioutil.NopCloser(bytes.NewReader([]byte(""))), 19 StatusCode: 200, 20 Header: make(map[string][]string), 21 } 22 res.Header.Add("Server", "GitHub.com") 23 r.ParseFromHTTPResponse(res) 24 assert.Equal(t, []byte{}, r.GetHTTPContentBytes()) 25 assert.Equal(t, "", r.GetHTTPContentString()) 26 assert.Equal(t, "GitHub.com", r.GetHTTPHeaders()["Server"][0]) 27 assert.Equal(t, 200, r.GetHTTPStatus()) 28 } 29 30 func TestHookReadAll(t *testing.T) { 31 fn := func(body io.Reader) (byt []byte, err error) { 32 return nil, errors.New("hookReadAll") 33 } 34 result := hookReadAll(fn) 35 byt, err := result(nil) 36 assert.Nil(t, byt) 37 assert.Equal(t, "hookReadAll", err.Error()) 38 39 originHookReadAll := hookReadAll 40 hookReadAll = func(old func(body io.Reader) (byt []byte, err error)) func(body io.Reader) (byt []byte, err error) { 41 return fn 42 } 43 defer func() { 44 hookReadAll = originHookReadAll 45 }() 46 commonResponse := &CommonResponse{} 47 httpResponse := &http.Response{ 48 Body: ioutil.NopCloser(strings.NewReader("creadential")), 49 } 50 err = commonResponse.ParseFromHTTPResponse(httpResponse) 51 assert.Equal(t, "hookReadAll", err.Error()) 52 }