server_error_test.go 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. package errors
  2. import (
  3. "testing"
  4. "github.com/stretchr/testify/assert"
  5. )
  6. func TestServerError(t *testing.T) {
  7. e := NewServerError(400, "content", "comment")
  8. assert.NotNil(t, e)
  9. serverError, ok := e.(*ServerError)
  10. assert.True(t, ok)
  11. assert.Nil(t, serverError.OriginError())
  12. assert.Equal(t, 400, serverError.HttpStatus())
  13. assert.Equal(t, "", serverError.RequestId())
  14. assert.Equal(t, "", serverError.ErrorCode())
  15. assert.Equal(t, "", serverError.Recommend())
  16. assert.Equal(t, "", serverError.HostId())
  17. assert.Equal(t, "comment", serverError.Comment())
  18. assert.Equal(t, "content", serverError.Message())
  19. assert.Equal(t, "SDK.ServerError\nErrorCode: \nRecommend: comment\nRequestId: \nMessage: content", serverError.Error())
  20. }
  21. func TestServerErrorWithContent(t *testing.T) {
  22. e := NewServerError(400, `{"RequestId":"request id","HostId":"host id","Code":"InvalidAK","Recommend":"recommend","Message":"message"}`, "comment")
  23. assert.NotNil(t, e)
  24. serverError, ok := e.(*ServerError)
  25. assert.True(t, ok)
  26. assert.Nil(t, serverError.OriginError())
  27. assert.Equal(t, 400, serverError.HttpStatus())
  28. assert.Equal(t, "request id", serverError.RequestId())
  29. assert.Equal(t, "host id", serverError.HostId())
  30. assert.Equal(t, "InvalidAK", serverError.ErrorCode())
  31. assert.Equal(t, "recommend", serverError.Recommend())
  32. assert.Equal(t, "comment", serverError.Comment())
  33. assert.Equal(t, "message", serverError.Message())
  34. assert.Equal(t, "SDK.ServerError\nErrorCode: InvalidAK\nRecommend: commentrecommend\nRequestId: request id\nMessage: message", serverError.Error())
  35. }
  36. func TestWrapServerError(t *testing.T) {
  37. err := NewServerError(400, `{"Code":"SignatureDoesNotMatch","Message":"Specified signature is not matched with our calculation. server string to sign is:hehe"}`, "comment")
  38. se, ok := err.(*ServerError)
  39. assert.True(t, ok)
  40. assert.Equal(t, "SignatureDoesNotMatch", se.ErrorCode())
  41. m := make(map[string]string)
  42. m["StringToSign"] = "not match"
  43. WrapServerError(se, m)
  44. assert.Equal(t, "This may be a bug with the SDK and we hope you can submit this question in the github issue(https://github.com/aliyun/alibaba-cloud-sdk-go/issues), thanks very much", se.Recommend())
  45. err = NewServerError(400, `{"Code":"SignatureDoesNotMatch","Message":"Specified signature is not matched with our calculation. server string to sign is:match"}`, "comment")
  46. se, ok = err.(*ServerError)
  47. assert.True(t, ok)
  48. assert.Equal(t, "SignatureDoesNotMatch", se.ErrorCode())
  49. m = make(map[string]string)
  50. m["StringToSign"] = "match"
  51. WrapServerError(se, m)
  52. assert.Equal(t, "InvalidAccessKeySecret: Please check you AccessKeySecret", se.Recommend())
  53. err = NewServerError(400, `{"Code":"Other"}`, "comment")
  54. se, ok = err.(*ServerError)
  55. assert.True(t, ok)
  56. assert.Equal(t, "Other", se.ErrorCode())
  57. m = make(map[string]string)
  58. WrapServerError(se, m)
  59. assert.Equal(t, "", se.Recommend())
  60. }