|
|
@@ -20,6 +20,7 @@ import (
|
|
|
"net/http"
|
|
|
"strconv"
|
|
|
"testing"
|
|
|
+ "time"
|
|
|
|
|
|
"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
|
|
|
|
|
|
@@ -29,6 +30,34 @@ import (
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
)
|
|
|
|
|
|
+type signertest struct {
|
|
|
+ name string
|
|
|
+}
|
|
|
+
|
|
|
+func (s *signertest) GetName() string {
|
|
|
+ return ""
|
|
|
+}
|
|
|
+
|
|
|
+func (s *signertest) GetType() string {
|
|
|
+ return ""
|
|
|
+}
|
|
|
+
|
|
|
+func (s *signertest) GetVersion() string {
|
|
|
+ return ""
|
|
|
+}
|
|
|
+
|
|
|
+func (s *signertest) GetAccessKeyId() (string, error) {
|
|
|
+ return "", nil
|
|
|
+}
|
|
|
+
|
|
|
+func (s *signertest) GetExtraParam() map[string]string {
|
|
|
+ return nil
|
|
|
+}
|
|
|
+
|
|
|
+func (s *signertest) Sign(stringToSign, secretSuffix string) string {
|
|
|
+ return ""
|
|
|
+}
|
|
|
+
|
|
|
func Test_Client(t *testing.T) {
|
|
|
defer func() {
|
|
|
err := recover()
|
|
|
@@ -40,6 +69,12 @@ func Test_Client(t *testing.T) {
|
|
|
|
|
|
func Test_NewClientWithOptions(t *testing.T) {
|
|
|
c := NewConfig()
|
|
|
+ c.HttpTransport = &http.Transport{
|
|
|
+ IdleConnTimeout: time.Duration(10 * time.Second),
|
|
|
+ }
|
|
|
+ c.EnableAsync = true
|
|
|
+ c.GoRoutinePoolSize = 1
|
|
|
+ c.MaxTaskQueueSize = 1
|
|
|
credential := credentials.NewAccessKeyCredential("acesskeyid", "accesskeysecret")
|
|
|
client, err := NewClientWithOptions("regionid", c, credential)
|
|
|
assert.Nil(t, err)
|
|
|
@@ -62,6 +97,8 @@ func Test_NewClientWithRamRoleArn(t *testing.T) {
|
|
|
client, err := NewClientWithRamRoleArn("regionid", "acesskeyid", "accesskeysecret", "roleArn", "roleSessionName")
|
|
|
assert.Nil(t, err)
|
|
|
assert.NotNil(t, client)
|
|
|
+ config := client.InitClientConfig()
|
|
|
+ assert.NotNil(t, config)
|
|
|
}
|
|
|
|
|
|
func Test_NewClientWithEcsRamRole(t *testing.T) {
|
|
|
@@ -118,6 +155,35 @@ func Test_DoAction(t *testing.T) {
|
|
|
assert.Equal(t, false, client.isRunning)
|
|
|
}
|
|
|
|
|
|
+func Test_DoAction_Timeout(t *testing.T) {
|
|
|
+ client, err := NewClientWithAccessKey("regionid", "acesskeyid", "accesskeysecret")
|
|
|
+ assert.Nil(t, err)
|
|
|
+ assert.NotNil(t, client)
|
|
|
+ assert.Equal(t, true, client.isRunning)
|
|
|
+ request := requests.NewCommonRequest()
|
|
|
+ request.Domain = "ecs.aliyuncs.com"
|
|
|
+ request.Version = "2014-05-26"
|
|
|
+ request.ApiName = "DescribeInstanceStatus"
|
|
|
+
|
|
|
+ request.QueryParams["PageNumber"] = "1"
|
|
|
+ request.QueryParams["PageSize"] = "30"
|
|
|
+ request.TransToAcsRequest()
|
|
|
+ response := responses.NewCommonResponse()
|
|
|
+ origTestHookDo := hookDo
|
|
|
+ defer func() { hookDo = origTestHookDo }()
|
|
|
+ hookDo = func(fn func(req *http.Request) (*http.Response, error)) func(req *http.Request) (*http.Response, error) {
|
|
|
+ return func(req *http.Request) (*http.Response, error) {
|
|
|
+ return mockResponse(200, "")
|
|
|
+ }
|
|
|
+ }
|
|
|
+ err = client.DoAction(request, response)
|
|
|
+ assert.Nil(t, err)
|
|
|
+ assert.Equal(t, 200, response.GetHttpStatus())
|
|
|
+ assert.Equal(t, "", response.GetHttpContentString())
|
|
|
+ client.Shutdown()
|
|
|
+ assert.Equal(t, false, client.isRunning)
|
|
|
+}
|
|
|
+
|
|
|
func Test_ProcessCommonRequest(t *testing.T) {
|
|
|
client, err := NewClientWithAccessKey("regionid", "acesskeyid", "accesskeysecret")
|
|
|
assert.Nil(t, err)
|
|
|
@@ -172,12 +238,118 @@ func Test_DoAction_With500(t *testing.T) {
|
|
|
assert.Equal(t, "Server Internel Error", response.GetHttpContentString())
|
|
|
}
|
|
|
|
|
|
-// func Test_EnableAsync(t *testing.T) {
|
|
|
-// client, err := NewClientWithAccessKey("regionid", "acesskeyid", "accesskeysecret")
|
|
|
-// assert.Nil(t, err)
|
|
|
-// assert.NotNil(t, client)
|
|
|
-// assert.Equal(t, true, client.isRunning)
|
|
|
-// client.EnableAsync(2, 8)
|
|
|
-// client.Shutdown()
|
|
|
-// assert.Equal(t, false, client.isRunning)
|
|
|
-// }
|
|
|
+func TestClient_BuildRequestWithSigner(t *testing.T) {
|
|
|
+ client, err := NewClientWithAccessKey("regionid", "acesskeyid", "accesskeysecret")
|
|
|
+ assert.Nil(t, err)
|
|
|
+ assert.NotNil(t, client)
|
|
|
+ assert.Equal(t, true, client.isRunning)
|
|
|
+ request := requests.NewCommonRequest()
|
|
|
+ request.Domain = "ecs.aliyuncs.com"
|
|
|
+ request.Version = "2014-05-26"
|
|
|
+ request.ApiName = "DescribeInstanceStatus"
|
|
|
+
|
|
|
+ request.QueryParams["PageNumber"] = "1"
|
|
|
+ request.QueryParams["PageSize"] = "30"
|
|
|
+ request.RegionId = "regionid"
|
|
|
+ request.TransToAcsRequest()
|
|
|
+ client.config.UserAgent = "user_agent"
|
|
|
+ err = client.BuildRequestWithSigner(request, nil)
|
|
|
+ assert.Nil(t, err)
|
|
|
+}
|
|
|
+
|
|
|
+func TestClient_BuildRequestWithSigner1(t *testing.T) {
|
|
|
+ client, err := NewClientWithAccessKey("regionid", "acesskeyid", "accesskeysecret")
|
|
|
+ assert.Nil(t, err)
|
|
|
+ assert.NotNil(t, client)
|
|
|
+ assert.Equal(t, true, client.isRunning)
|
|
|
+ request := requests.NewCommonRequest()
|
|
|
+ request.Domain = "ecs.aliyuncs.com"
|
|
|
+ request.Version = "2014-05-26"
|
|
|
+ request.ApiName = "DescribeInstanceStatus"
|
|
|
+
|
|
|
+ request.QueryParams["PageNumber"] = "1"
|
|
|
+ request.QueryParams["PageSize"] = "30"
|
|
|
+ request.RegionId = "regionid"
|
|
|
+ request.TransToAcsRequest()
|
|
|
+ signer := &signertest{
|
|
|
+ name: "signer",
|
|
|
+ }
|
|
|
+ client.config.UserAgent = "user_agent"
|
|
|
+ err = client.BuildRequestWithSigner(request, signer)
|
|
|
+ assert.Nil(t, err)
|
|
|
+}
|
|
|
+
|
|
|
+func TestClient_ProcessCommonRequestWithSigner(t *testing.T) {
|
|
|
+ client, err := NewClientWithAccessKey("regionid", "acesskeyid", "accesskeysecret")
|
|
|
+ assert.Nil(t, err)
|
|
|
+ assert.NotNil(t, client)
|
|
|
+ assert.Equal(t, true, client.isRunning)
|
|
|
+ request := requests.NewCommonRequest()
|
|
|
+ request.Domain = "ecs.aliyuncs.com"
|
|
|
+ request.Version = "2014-05-26"
|
|
|
+ request.ApiName = "DescribeInstanceStatus"
|
|
|
+
|
|
|
+ request.QueryParams["PageNumber"] = "1"
|
|
|
+ request.QueryParams["PageSize"] = "30"
|
|
|
+ request.RegionId = "regionid"
|
|
|
+ signer := &signertest{
|
|
|
+ name: "signer",
|
|
|
+ }
|
|
|
+ _, err = client.ProcessCommonRequestWithSigner(request, signer)
|
|
|
+ assert.NotNil(t, err)
|
|
|
+}
|
|
|
+
|
|
|
+func TestClient_ProcessCommonRequestWithSigner_Error(t *testing.T) {
|
|
|
+ client, err := NewClientWithAccessKey("regionid", "acesskeyid", "accesskeysecret")
|
|
|
+ assert.Nil(t, err)
|
|
|
+ assert.NotNil(t, client)
|
|
|
+ assert.Equal(t, true, client.isRunning)
|
|
|
+ request := requests.NewCommonRequest()
|
|
|
+ request.Domain = "ecs.aliyuncs.com"
|
|
|
+ request.Version = "2014-05-26"
|
|
|
+ request.ApiName = "DescribeInstanceStatus"
|
|
|
+
|
|
|
+ request.QueryParams["PageNumber"] = "1"
|
|
|
+ request.QueryParams["PageSize"] = "30"
|
|
|
+ request.RegionId = "regionid"
|
|
|
+ defer func() {
|
|
|
+ err := recover()
|
|
|
+ assert.NotNil(t, err)
|
|
|
+ }()
|
|
|
+ _, err = client.ProcessCommonRequestWithSigner(request, nil)
|
|
|
+ assert.NotNil(t, err)
|
|
|
+}
|
|
|
+
|
|
|
+func TestClient_NewClientWithStsRoleNameOnEcs(t *testing.T) {
|
|
|
+ client, err := NewClientWithStsRoleNameOnEcs("regionid", "rolename")
|
|
|
+ assert.Nil(t, err)
|
|
|
+ assert.NotNil(t, client)
|
|
|
+ assert.Equal(t, true, client.isRunning)
|
|
|
+ config := client.GetConfig()
|
|
|
+ assert.NotNil(t, config)
|
|
|
+ err = client.AddAsyncTask(nil)
|
|
|
+ assert.NotNil(t, err)
|
|
|
+}
|
|
|
+
|
|
|
+func TestClient_NewClientWithStsRoleArn(t *testing.T) {
|
|
|
+ client, err := NewClientWithStsRoleArn("regionid", "acesskeyid", "accesskeysecret", "rolearn", "rolesessionname")
|
|
|
+ assert.Nil(t, err)
|
|
|
+ assert.NotNil(t, client)
|
|
|
+ assert.Equal(t, true, client.isRunning)
|
|
|
+ task := func() {}
|
|
|
+ client.asyncTaskQueue = make(chan func(), 1)
|
|
|
+ err = client.AddAsyncTask(task)
|
|
|
+ assert.Nil(t, err)
|
|
|
+ client.Shutdown()
|
|
|
+ assert.Equal(t, false, client.isRunning)
|
|
|
+}
|
|
|
+
|
|
|
+//func Test_EnableAsync(t *testing.T) {
|
|
|
+// client, err := NewClientWithAccessKey("regionid", "acesskeyid", "accesskeysecret")
|
|
|
+// assert.Nil(t, err)
|
|
|
+// assert.NotNil(t, client)
|
|
|
+// assert.Equal(t, true, client.isRunning)
|
|
|
+// client.EnableAsync(2, 8)
|
|
|
+// client.Shutdown()
|
|
|
+// assert.Equal(t, false, client.isRunning)
|
|
|
+//}
|