error_test.go 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. package integration
  2. import (
  3. "github.com/aliyun/alibaba-cloud-sdk-go/sdk"
  4. "github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials"
  5. "github.com/aliyun/alibaba-cloud-sdk-go/sdk/errors"
  6. "github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
  7. "github.com/aliyun/alibaba-cloud-sdk-go/services/ecs"
  8. "github.com/stretchr/testify/assert"
  9. "os"
  10. "strings"
  11. "testing"
  12. )
  13. func Test_DescribeRegionsWithParameterError(t *testing.T) {
  14. request := requests.NewCommonRequest()
  15. request.Version = "2014-05-26"
  16. request.Product = "Ecs"
  17. request.ApiName = "Describe"
  18. request.SetDomain("ecs.aliyuncs.com")
  19. request.TransToAcsRequest()
  20. client, err := sdk.NewClientWithAccessKey("cn-hangzhou", os.Getenv("ACCESS_KEY_ID"), os.Getenv("ACCESS_KEY_SECRET"))
  21. assert.Nil(t, err)
  22. _, err = client.ProcessCommonRequest(request)
  23. realerr := err.(errors.Error)
  24. assert.Equal(t, "InvalidParameter", realerr.ErrorCode())
  25. assert.Equal(t, "The specified parameter \"Action or Version\" is not valid.", realerr.Message())
  26. }
  27. func Test_DescribeRegionsWithUnreachableError(t *testing.T) {
  28. request := requests.NewCommonRequest()
  29. request.Version = "2014-05-26"
  30. request.Product = "Ecs"
  31. request.ApiName = "DescribeRegions"
  32. request.SetDomain("www.ecs.ali.com")
  33. request.TransToAcsRequest()
  34. client, err := sdk.NewClientWithAccessKey("cn-hangzhou", os.Getenv("ACCESS_KEY_ID"), os.Getenv("ACCESS_KEY_SECRET"))
  35. assert.Nil(t, err)
  36. response, err := client.ProcessCommonRequest(request)
  37. assert.Equal(t, 0, response.GetHttpStatus())
  38. realerr := err.(errors.Error)
  39. assert.True(t, strings.Contains(realerr.OriginError().Error(), "dial tcp: lookup www.ecs.ali.com: no such host"))
  40. }
  41. func Test_DescribeRegionsWithTimeout(t *testing.T) {
  42. credentail := credentials.NewAccessKeyCredential(os.Getenv("ACCESS_KEY_ID"), os.Getenv("ACCESS_KEY_SECRET"))
  43. config := &sdk.Config{
  44. Timeout: 100,
  45. }
  46. request := ecs.CreateDescribeRegionsRequest()
  47. request.Scheme = "https"
  48. client, err := ecs.NewClientWithOptions("cn-hangzhou", config, credentail)
  49. response, err := client.DescribeRegions(request)
  50. assert.Equal(t, 0, response.GetHttpStatus())
  51. assert.Contains(t, err.Error(), "https://ecs-cn-hangzhou.aliyuncs.com")
  52. assert.Contains(t, err.Error(), "Client.Timeout exceeded while awaiting headers")
  53. }
  54. func Test_DescribeRegionsWithNilbody(t *testing.T) {
  55. request := requests.NewCommonRequest()
  56. request.Version = "2014-05-26"
  57. request.Product = "Ecs"
  58. request.ApiName = "DescribeRegions"
  59. ts := mockServer(400, ``)
  60. defer ts.Close()
  61. domain := strings.Replace(ts.URL, "http://", "", 1)
  62. request.Domain = domain
  63. request.TransToAcsRequest()
  64. client, err := sdk.NewClientWithAccessKey("cn-hangzhou", os.Getenv("ACCESS_KEY_ID"), os.Getenv("ACCESS_KEY_SECRET"))
  65. assert.Nil(t, err)
  66. response, err := client.ProcessCommonRequest(request)
  67. assert.Equal(t, 400, response.GetHttpStatus())
  68. assert.NotNil(t, err)
  69. }
  70. func Test_DescribeRegionsWithFormatError(t *testing.T) {
  71. request := requests.NewCommonRequest()
  72. request.Version = "2014-05-26"
  73. request.Product = "Ecs"
  74. request.ApiName = "DescribeRegions"
  75. ts := mockServer(400, `bad json`)
  76. defer ts.Close()
  77. domain := strings.Replace(ts.URL, "http://", "", 1)
  78. request.Domain = domain
  79. request.TransToAcsRequest()
  80. client, err := sdk.NewClientWithAccessKey("cn-hangzhou", os.Getenv("ACCESS_KEY_ID"), os.Getenv("ACCESS_KEY_SECRET"))
  81. assert.Nil(t, err)
  82. response, err := client.ProcessCommonRequest(request)
  83. assert.Equal(t, 400, response.GetHttpStatus())
  84. assert.Contains(t, err.Error(), "bad json")
  85. }