소스 검색

perfect integration

wenzuochao 7 년 전
부모
커밋
c84b6d6e4f
5개의 변경된 파일400개의 추가작업 그리고 45개의 파일을 삭제
  1. 106 0
      integration/api_test.go
  2. 171 0
      integration/base.go
  3. 123 0
      integration/core_test.go
  4. 0 21
      integration/ecs_test.go
  5. 0 24
      integration/rds_test.go

+ 106 - 0
integration/api_test.go

@@ -0,0 +1,106 @@
+package integration
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/services/cdn"
+	"github.com/aliyun/alibaba-cloud-sdk-go/services/ecs"
+	"github.com/aliyun/alibaba-cloud-sdk-go/services/ram"
+	"github.com/aliyun/alibaba-cloud-sdk-go/services/rds"
+	"github.com/aliyun/alibaba-cloud-sdk-go/services/slb"
+	"github.com/aliyun/alibaba-cloud-sdk-go/services/vpc"
+
+	"github.com/stretchr/testify/assert"
+
+	"os"
+	"testing"
+)
+
+func Test_ECS_DescribeRegionsWithRPCrequest(t *testing.T) {
+	request := ecs.CreateDescribeRegionsRequest()
+	client, err := ecs.NewClientWithAccessKey("cn-hangzhou", os.Getenv("ACCESS_KEY_ID"), os.Getenv("ACCESS_KEY_SECRET"))
+	assert.Nil(t, err)
+	response, err := client.DescribeRegions(request)
+	assert.Nil(t, err)
+	assert.True(t, response.IsSuccess())
+	assert.Equal(t, 36, len(response.RequestId))
+	assert.True(t, len(response.Regions.Region) > 0)
+}
+
+func Test_RDS_DescribeDBInstancesWithRPCrequest(t *testing.T) {
+	client, err := rds.NewClientWithAccessKey("cn-hangzhou", os.Getenv("ACCESS_KEY_ID"), os.Getenv("ACCESS_KEY_SECRET"), )
+	assert.Nil(t, err)
+	assert.NotNil(t, client)
+	request := rds.CreateDescribeDBInstancesRequest()
+	response, err := client.DescribeDBInstances(request)
+	assert.Nil(t, err)
+	assert.NotNil(t, response)
+	assert.Equal(t, 36, len(response.RequestId))
+}
+
+func Test_CDN_DescribeCdnDomainDetailWithRPCrequest(t *testing.T) {
+	client, err := cdn.NewClientWithAccessKey("cn-hangzhou", os.Getenv("ACCESS_KEY_ID"), os.Getenv("ACCESS_KEY_SECRET"), )
+	assert.Nil(t, err)
+	assert.NotNil(t, client)
+	request := cdn.CreateDescribeCdnCertificateDetailRequest()
+	request.CertName = "sdk-test"
+	response, err := client.DescribeCdnCertificateDetail(request)
+	assert.Nil(t, err)
+	assert.NotNil(t, response)
+	assert.Equal(t, 36, len(response.RequestId))
+}
+
+func Test_RAM_ListRolesWithRPCrequest(t *testing.T) {
+	client, err := ram.NewClientWithAccessKey("cn-hangzhou", os.Getenv("ACCESS_KEY_ID"), os.Getenv("ACCESS_KEY_SECRET"))
+	assert.Nil(t, err)
+	request := ram.CreateListRolesRequest()
+	request.Scheme = "HTTPS"
+	response, err := client.ListRoles(request)
+	assert.Nil(t, err)
+	assert.True(t, response.IsSuccess())
+	assert.Equal(t, 36, len(response.RequestId))
+}
+
+func Test_SLB_DescribeRegionsWithRPCrequest(t *testing.T) {
+	client, err := slb.NewClientWithAccessKey("cn-hangzhou", os.Getenv("ACCESS_KEY_ID"), os.Getenv("ACCESS_KEY_SECRET"))
+	assert.Nil(t, err)
+	request := slb.CreateDescribeRegionsRequest()
+	response, err := client.DescribeRegions(request)
+	assert.Nil(t, err)
+	assert.True(t, response.IsSuccess())
+	assert.Equal(t, 36, len(response.RequestId))
+	assert.True(t, len(response.Regions.Region) > 0)
+}
+
+func Test_VPC_DescribeRegionsWithUnicodeSpecificParams(t *testing.T) {
+	client, err := vpc.NewClientWithAccessKey("cn-hangzhou", os.Getenv("ACCESS_KEY_ID"), os.Getenv("ACCESS_KEY_SECRET"))
+	assert.Nil(t, err)
+	request := vpc.CreateDescribeRegionsRequest()
+	response, err := client.DescribeRegions(request)
+	assert.Nil(t, err)
+	assert.True(t, response.IsSuccess())
+	assert.Equal(t, 36, len(response.RequestId))
+	assert.True(t, len(response.Regions.Region) > 0)
+}
+
+//func Test_DescribeRegionsWithHTTPS(t *testing.T) {
+//	request := ecs.CreateDescribeRegionsRequest()
+//	client, err := ecs.NewClientWithAccessKey("cn-hangzhou", os.Getenv("ACCESS_KEY_ID"), os.Getenv("ACCESS_KEY_SECRET"))
+//	assert.Nil(t, err)
+//	response, err := client.DescribeRegions(request)
+//	assert.Nil(t, err)
+//	assert.True(t, response.IsSuccess())
+//	assert.Equal(t, 36, len(response.RequestId))
+//	assert.True(t, len(response.Regions.Region) > 0)
+//}
+//
+//func Test_DescribeRegionsWithSTStoken(t *testing.T) {
+//	assumeresponse, err := createAssumeRole()
+//	assert.Nil(t, err)
+//	credential := assumeresponse.Credentials
+//	request := ecs.CreateDescribeRegionsRequest()
+//	client, err := ecs.NewClientWithStsToken("cn-hangzhou", credential.AccessKeyId, credential.AccessKeySecret, credential.SecurityToken)
+//	response, err := client.DescribeRegions(request)
+//	assert.Nil(t, err)
+//	assert.True(t, response.IsSuccess())
+//	assert.Equal(t, 36, len(response.RequestId))
+//	assert.True(t, len(response.Regions.Region) > 0)
+//}

+ 171 - 0
integration/base.go

@@ -0,0 +1,171 @@
+package integration
+
+import (
+	"fmt"
+	"github.com/aliyun/alibaba-cloud-sdk-go/services/ram"
+	"github.com/aliyun/alibaba-cloud-sdk-go/services/sts"
+	"strings"
+
+	"os"
+)
+var role_doc = `{
+		"Statement": [{
+		    "Action": "sts:AssumeRole",
+		    "Effect": "Allow",
+		    "Principal": {
+		     	"RAM": [
+				      "acs:ram::%s:root"
+		        ]
+            }
+	    }],
+	   "Version": "1"
+	}`
+
+func createRole(userid string) error{
+	listRequest :=ram.CreateListRolesRequest()
+	listRequest.Scheme = "HTTPS"
+	client, err := ram.NewClientWithAccessKey("cn-hangzhou", os.Getenv("ACCESS_KEY_ID"), os.Getenv("ACCESS_KEY_SECRET"))
+	if err != nil {
+		return err
+	}
+	listResponse, err :=client.ListRoles(listRequest)
+	if err != nil {
+		return err
+	}
+	for _, role := range listResponse.Roles.Role {
+		if strings.ToLower(role.RoleName) == "testrole" {
+			return nil
+		}
+	}
+	createRequest := ram.CreateCreateRoleRequest()
+	createRequest.Scheme = "HTTPS"
+	createRequest.RoleName = "testrole"
+	createRequest.AssumeRolePolicyDocument = fmt.Sprintf(role_doc, userid)
+	_, err = client.CreateRole(createRequest)
+	if err != nil {
+		return err
+	}
+	return nil
+}
+
+func createUser()(error){
+	listRequest := ram.CreateListUsersRequest()
+	listRequest.Scheme = "HTTPS"
+	client, err := ram.NewClientWithAccessKey("cn-hangzhou", os.Getenv("ACCESS_KEY_ID"), os.Getenv("ACCESS_KEY_SECRET"))
+	if err != nil {
+		return err
+	}
+	listResponse, err := client.ListUsers(listRequest)
+	if err != nil {
+		return err
+	}
+	for _, user := range listResponse.Users.User {
+		if user.UserName == "alice" {
+			return nil
+		}
+	}
+	createRequest := ram.CreateCreateUserRequest()
+	createRequest.Scheme = "HTTPS"
+	createRequest.UserName = "alice"
+	_, err = client.CreateUser(createRequest)
+	if err != nil {
+		return err
+	}
+	return nil
+}
+
+func createAttachPolicyToUser()error{
+	listRequest := ram.CreateListPoliciesForUserRequest()
+	listRequest.UserName ="alice"
+	listRequest.Scheme = "HTTPS"
+	client, err := ram.NewClientWithAccessKey("cn-hangzhou", os.Getenv("ACCESS_KEY_ID"), os.Getenv("ACCESS_KEY_SECRET"))
+	if err != nil {
+		return err
+	}
+	listResponse, err := client.ListPoliciesForUser(listRequest)
+	if err != nil {
+		return err
+	}
+	for _, policy := range listResponse.Policies.Policy {
+		if policy.PolicyName == "AliyunSTSAssumeRoleAccess" {
+			return nil
+		}
+	}
+	createRequest := ram.CreateAttachPolicyToUserRequest()
+	createRequest.Scheme = "HTTPS"
+	createRequest.PolicyName = "AliyunSTSAssumeRoleAccess"
+	createRequest.UserName = "alice"
+	createRequest.PolicyType = "System"
+	_, err = client.AttachPolicyToUser(createRequest)
+	if err != nil {
+		return err
+	}
+	return nil
+}
+
+//func createAccessKey()(string, string, error){
+//	client, err := ram.NewClientWithAccessKey("cn-hangzhou", os.Getenv("ACCESS_KEY_ID"), os.Getenv("ACCESS_KEY_SECRET"))
+//	if err != nil {
+//		return "", "", err
+//	}
+//	listrequest := ram.CreateListAccessKeysRequest()
+//	listrequest.UserName = "alice"
+//	listrequest.Scheme = "HTTPS"
+//	listresponse, err := client.ListAccessKeys(listrequest)
+//	if err != nil {
+//		return "", "", err
+//	}
+//	if listresponse.AccessKeys.AccessKey != nil {
+//		accesskey := listresponse.AccessKeys.AccessKey[0]
+//		if accesskey.AccessKeySecret != "" && accesskey.AccessKeySecret != "---" {
+//			return accesskey.AccessKeyId, accesskey.AccessKeySecret, err
+//		} else {
+//			deleterequest := ram.CreateDeleteAccessKeyRequest()
+//			deleterequest.UserAccessKeyId = accesskey.AccessKeyId
+//			deleterequest.UserName = "alice"
+//			_, err := client.DeleteAccessKey(deleterequest)
+//			if err != nil {
+//				return "", "", err
+//			}
+//		}
+//	}
+//	request := ram.CreateCreateAccessKeyRequest()
+//	request.Scheme = "HTTPS"
+//	request.UserName = "alice"
+//	response, err := client.CreateAccessKey(request)
+//	if err != nil {
+//		return "", "",err
+//	}
+//
+//	return response.AccessKey.AccessKeyId, response.AccessKey.AccessKeySecret, nil
+//}
+
+func createAssumeRole()(*sts.AssumeRoleResponse, error){
+	err := createUser()
+	if err != nil {
+		return nil,err
+	}
+	err = createRole(os.Getenv("USER_ID"))
+	if err != nil {
+		return nil,err
+	}
+	err = createAttachPolicyToUser()
+	if err != nil {
+		return nil,err
+	}
+	//subaccesskeyid, subaccesskeysecret, err := createAccessKey()
+	//if err != nil {
+	//	return "","","",err
+	//}
+	request := sts.CreateAssumeRoleRequest()
+	request.RoleArn = fmt.Sprintf("acs:ram::%s:role/testrole", os.Getenv("USER_ID"))
+	request.RoleSessionName = "alice_test"
+	request.Scheme = "HTTPS"
+	client, err := sts.NewClientWithAccessKey("cn-hangzhou", os.Getenv("ACCESS_KEY_ID"), os.Getenv("ACCESS_KEY_SECRET"))
+	response, err := client.AssumeRole(request)
+	if err != nil {
+		return nil,err
+	}
+	return response, nil
+}
+

+ 123 - 0
integration/core_test.go

@@ -0,0 +1,123 @@
+package integration
+
+import (
+	"os"
+	"testing"
+
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk"
+
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/errors"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+
+	"github.com/stretchr/testify/assert"
+)
+
+func Test_DescribeRegionsWithCommonRequestWithRPCrequest(t *testing.T) {
+	request := requests.NewCommonRequest()
+	request.Version =  "2014-05-26"
+	request.Product = "Ecs"
+	request.ApiName = "DescribeRegions"
+	request.SetDomain("ecs.aliyuncs.com")
+	request.TransToAcsRequest()
+	client, err := sdk.NewClientWithAccessKey("cn-hangzhou", os.Getenv("ACCESS_KEY_ID"), os.Getenv("ACCESS_KEY_SECRET"))
+	assert.Nil(t, err)
+	response, err := client.ProcessCommonRequest(request)
+	assert.Nil(t, err)
+	assert.True(t, response.IsSuccess())
+}
+
+func Test_DescribeRegionsWithCommonRequestWithSTStoken(t *testing.T) {
+	assumeresponse, err := createAssumeRole()
+	assert.Nil(t, err)
+	credential := assumeresponse.Credentials
+	request := requests.NewCommonRequest()
+	request.Version =  "2014-05-26"
+	request.Product = "Ecs"
+	request.ApiName = "DescribeRegions"
+	request.SetDomain("ecs.aliyuncs.com")
+	request.TransToAcsRequest()
+	client, err := sdk.NewClientWithStsToken("cn-hangzhou", credential.AccessKeyId, credential.AccessKeySecret, credential.SecurityToken)
+	assert.Nil(t, err)
+	response, err := client.ProcessCommonRequest(request)
+	assert.Nil(t, err)
+	assert.True(t, response.IsSuccess())
+}
+
+func Test_DescribeRegionsWithCommonRequestWithHTTPS(t *testing.T) {
+	request := requests.NewCommonRequest()
+	request.Version =  "2014-05-26"
+	request.Product = "Ecs"
+	request.ApiName = "DescribeRegions"
+	request.SetDomain("ecs.aliyuncs.com")
+	request.TransToAcsRequest()
+	request.SetScheme("HTTPS")
+	client, err := sdk.NewClientWithAccessKey("cn-hangzhou", os.Getenv("ACCESS_KEY_ID"), os.Getenv("ACCESS_KEY_SECRET"))
+	assert.Nil(t, err)
+	response, err := client.ProcessCommonRequest(request)
+	assert.Nil(t, err)
+	assert.True(t, response.IsSuccess())
+}
+
+func Test_DescribeRegionsWithCommonRequestWithUnicodeSpecificParams(t *testing.T) {
+	request := requests.NewCommonRequest()
+	request.Version =  "2014-05-26"
+	request.Product = "Ecs"
+	request.ApiName = "DescribeRegions"
+	request.SetDomain("ecs.aliyuncs.com")
+	request.TransToAcsRequest()
+	request.SetContent([]byte("sdk&-杭&&&州-test"))
+	client, err := sdk.NewClientWithAccessKey("cn-hangzhou", os.Getenv("ACCESS_KEY_ID"), os.Getenv("ACCESS_KEY_SECRET"))
+	assert.Nil(t, err)
+	response, err := client.ProcessCommonRequest(request)
+	assert.Nil(t, err)
+	assert.True(t, response.IsSuccess())
+}
+
+func Test_DescribeRegionsWithCommonRequestWithError(t *testing.T) {
+	request := requests.NewCommonRequest()
+	request.Version =  "2014-05-26"
+	request.Product = "Ecs"
+	request.ApiName = "Describe"
+	request.SetDomain("ecs.aliyuncs.com")
+	request.TransToAcsRequest()
+	request.SetContent([]byte("sdk&-杭&&&州-test"))
+	client, err := sdk.NewClientWithAccessKey("cn-hangzhou", os.Getenv("ACCESS_KEY_ID"), os.Getenv("ACCESS_KEY_SECRET"))
+	assert.Nil(t, err)
+	_, err = client.ProcessCommonRequest(request)
+	realerr := err.(errors.Error)
+	assert.Equal(t, "InvalidParameter", realerr.ErrorCode())
+	assert.Equal(t, "The specified parameter \"Action or Version\" is not valid.", realerr.Message())
+}
+
+//func Test_DescribeClusterDetailWithCommonRequestWithROArequest(t *testing.T) {
+//	request := requests.NewCommonRequest()
+//	request.Version =  "2015-12-15"
+//	request.Product = "CS"
+//	request.ApiName = "DescribeClusterDetail"
+//	request.PathPattern = "/resource_types"
+//	request.SetDomain("cs.aliyuncs.com")
+//	request.Scheme = "HTTPS"
+//	request.TransToAcsRequest()
+//	client, err := sdk.NewClientWithAccessKey("cn-hangzhou", os.Getenv("ACCESS_KEY_ID"), os.Getenv("ACCESS_KEY_SECRET"))
+//	assert.Nil(t, err)
+//	response, err := client.ProcessCommonRequest(request)
+//	assert.Nil(t, err)
+//	assert.True(t, response.IsSuccess())
+//}
+
+//func Test_DescribeClusterDetailWithCommonRequestWithROArequestWithHTTPS(t *testing.T) {
+//	request := requests.NewCommonRequest()
+//	request.Version =  "2015-12-15"
+//	request.Product = "CS"
+//	request.ApiName = "DescribeClusterDetail"
+//	request.PathPattern = "/resource_types"
+//	request.SetDomain(""cs.aliyuncs.com"")
+//	request.Scheme = "HTTPS"
+//	request.TransToAcsRequest()
+//	request.Method = requests.GET
+//	client, err := sdk.NewClientWithAccessKey("cn-hangzhou", os.Getenv("ACCESS_KEY_ID"), os.Getenv("ACCESS_KEY_SECRET"))
+//	assert.Nil(t, err)
+//	response, err := client.ProcessCommonRequest(request)
+//	assert.Nil(t, err)
+//	assert.True(t, response.IsSuccess())
+//}

+ 0 - 21
integration/ecs_test.go

@@ -1,21 +0,0 @@
-package integration
-
-import (
-	"os"
-	"testing"
-
-	"github.com/stretchr/testify/assert"
-
-	"github.com/aliyun/alibaba-cloud-sdk-go/services/ecs"
-)
-
-func Test_DescribeRegions(t *testing.T) {
-	request := ecs.CreateDescribeRegionsRequest()
-	client, err := ecs.NewClientWithAccessKey("cn-hangzhou", os.Getenv("ACCESS_KEY_ID"), os.Getenv("ACCESS_KEY_SECRET"))
-	assert.Nil(t, err)
-	response, err := client.DescribeRegions(request)
-	assert.Nil(t, err)
-	assert.True(t, response.IsSuccess())
-	assert.Equal(t, 36, len(response.RequestId))
-	assert.True(t, len(response.Regions.Region) > 0)
-}

+ 0 - 24
integration/rds_test.go

@@ -1,24 +0,0 @@
-package integration
-
-import (
-	"os"
-	"testing"
-
-	"github.com/aliyun/alibaba-cloud-sdk-go/services/rds"
-	"github.com/stretchr/testify/assert"
-)
-
-func Test_DescribeDBInstances(t *testing.T) {
-	client, err := rds.NewClientWithAccessKey(
-		"cn-hangzhou", os.Getenv("ACCESS_KEY_ID"), os.Getenv("ACCESS_KEY_SECRET"),
-	)
-	assert.Nil(t, err)
-	assert.NotNil(t, client)
-
-	request := rds.CreateDescribeDBInstancesRequest()
-	response, err := client.DescribeDBInstances(request)
-	assert.Nil(t, err)
-	assert.NotNil(t, response)
-	assert.NotNil(t, response.RequestId)
-	// {"Items":{"DBInstance":[]},"TotalRecordCount":0,"PageNumber":1,"RequestId":"AB26A264-72DA-4924-A8BC-93891B35D8D0","PageRecordCount":0}
-}