error_test.go 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  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(os.Getenv("REGION_ID"), 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.aliyun-hangzhou.com")
  33. request.TransToAcsRequest()
  34. client, err := sdk.NewClientWithAccessKey(os.Getenv("REGION_ID"), 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(), "www.aliyun-hangzhou.com"))
  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. request.SetDomain("ecs.aliyuncs.com")
  49. client, err := ecs.NewClientWithOptions(os.Getenv("REGION_ID"), config, credentail)
  50. response, err := client.DescribeRegions(request)
  51. assert.Equal(t, 0, response.GetHttpStatus())
  52. assert.Contains(t, err.Error(), "https://ecs.aliyuncs.com")
  53. assert.Contains(t, err.Error(), "Client.Timeout exceeded while awaiting headers")
  54. }
  55. func Test_DescribeRegionsWithNilbody(t *testing.T) {
  56. request := requests.NewCommonRequest()
  57. request.Version = "2014-05-26"
  58. request.Product = "Ecs"
  59. request.ApiName = "DescribeRegions"
  60. ts := mockServer(400, ``)
  61. defer ts.Close()
  62. domain := strings.Replace(ts.URL, "http://", "", 1)
  63. request.Domain = domain
  64. request.TransToAcsRequest()
  65. client, err := sdk.NewClientWithAccessKey(os.Getenv("REGION_ID"), os.Getenv("ACCESS_KEY_ID"), os.Getenv("ACCESS_KEY_SECRET"))
  66. assert.Nil(t, err)
  67. response, err := client.ProcessCommonRequest(request)
  68. assert.Equal(t, 400, response.GetHttpStatus())
  69. assert.NotNil(t, err)
  70. }
  71. func Test_DescribeRegionsWithFormatError(t *testing.T) {
  72. request := requests.NewCommonRequest()
  73. request.Version = "2014-05-26"
  74. request.Product = "Ecs"
  75. request.ApiName = "DescribeRegions"
  76. ts := mockServer(400, `bad json`)
  77. defer ts.Close()
  78. domain := strings.Replace(ts.URL, "http://", "", 1)
  79. request.Domain = domain
  80. request.TransToAcsRequest()
  81. client, err := sdk.NewClientWithAccessKey(os.Getenv("REGION_ID"), os.Getenv("ACCESS_KEY_ID"), os.Getenv("ACCESS_KEY_SECRET"))
  82. assert.Nil(t, err)
  83. response, err := client.ProcessCommonRequest(request)
  84. assert.Equal(t, 400, response.GetHttpStatus())
  85. assert.Contains(t, err.Error(), "bad json")
  86. }