| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- package responses
- import (
- "bytes"
- "io/ioutil"
- "net/http"
- "strconv"
- "testing"
- "github.com/stretchr/testify/assert"
- )
- func makeHTTPResponse(statusCode int, content string) (res *http.Response) {
- header := make(http.Header)
- status := strconv.Itoa(statusCode)
- res = &http.Response{
- Proto: "HTTP/1.1",
- ProtoMajor: 1,
- Header: header,
- StatusCode: statusCode,
- Status: status + " " + http.StatusText(statusCode),
- }
- res.Header = make(http.Header)
- res.Body = ioutil.NopCloser(bytes.NewReader([]byte(content)))
- return
- }
- func Test_CommonResponse(t *testing.T) {
- r := NewCommonResponse()
- assert.NotNil(t, r)
- assert.Equal(t, 0, r.GetHttpStatus())
- // assert.Equal(t, nil, r.GetHttpHeaders())
- assert.Equal(t, "", r.GetHttpContentString())
- assert.Equal(t, 0, len(r.GetHttpContentBytes()))
- assert.Nil(t, r.GetOriginHttpResponse())
- assert.False(t, r.IsSuccess())
- }
- func Test_CommonResponse_parseFromHttpResponse(t *testing.T) {
- r := NewCommonResponse()
- res := makeHTTPResponse(200, "")
- res.Header.Add("Server", "GitHub.com")
- r.parseFromHttpResponse(res)
- expected := `HTTP/1.1 200 OK
- Server: GitHub.com
- `
- assert.True(t, r.IsSuccess())
- assert.Equal(t, "GitHub.com", r.GetHttpHeaders()["Server"][0])
- assert.Equal(t, expected, r.String())
- }
- func Test_CommonResponse_Unmarshal(t *testing.T) {
- r := NewCommonResponse()
- res := makeHTTPResponse(400, "")
- err := Unmarshal(r, res, "JSON")
- assert.NotNil(t, err)
- assert.Equal(t, "SDK.ServerError\nErrorCode: \nRecommend: \nRequestId: \nMessage: ", err.Error())
- }
- func Test_CommonResponse_Unmarshal_CommonResponse(t *testing.T) {
- r := NewCommonResponse()
- res := makeHTTPResponse(200, "")
- err := Unmarshal(r, res, "JSON")
- assert.Nil(t, err)
- }
- func Test_CommonResponse_Unmarshal_XML(t *testing.T) {
- r := &MyResponse{
- BaseResponse: &BaseResponse{},
- }
- res := makeHTTPResponse(200, `{"RequestId": "the request id"}`)
- err := Unmarshal(r, res, "XML")
- assert.NotNil(t, err)
- }
- type MyResponse struct {
- *BaseResponse
- RequestId string
- }
- func Test_CommonResponse_Unmarshal_EmptyContent(t *testing.T) {
- r := &MyResponse{
- BaseResponse: &BaseResponse{},
- }
- res := makeHTTPResponse(200, "")
- err := Unmarshal(r, res, "JSON")
- assert.Nil(t, err)
- assert.Equal(t, "", r.RequestId)
- }
- func Test_CommonResponse_Unmarshal_MyResponse(t *testing.T) {
- r := &MyResponse{
- BaseResponse: &BaseResponse{},
- }
- res := makeHTTPResponse(200, `{"RequestId": "the request id"}`)
- err := Unmarshal(r, res, "JSON")
- assert.Nil(t, err)
- assert.Equal(t, "the request id", r.RequestId)
- }
- func Test_CommonResponse_Unmarshal_Error(t *testing.T) {
- r := &MyResponse{
- BaseResponse: &BaseResponse{},
- }
- res := makeHTTPResponse(200, `{`)
- err := Unmarshal(r, res, "JSON")
- assert.NotNil(t, err)
- assert.Equal(t, "[SDK.JsonUnmarshalError] Failed to unmarshal response, but you can get the data via response.GetHttpStatusCode() and response.GetHttpContentString()\ncaused by:\nresponses.MyResponse.readFieldHash: expect \", but found \x00, error found in #1 byte of ...|{|..., bigger context ...|{|...", err.Error())
- }
|