Quellcode durchsuchen

Add test cases for roa_request.go

Jackson Tian vor 7 Jahren
Ursprung
Commit
7bca73c1d1

+ 3 - 2
sdk/auth/roa_signature_composer.go

@@ -16,10 +16,11 @@ package auth
 
 import (
 	"bytes"
-	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
-	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/utils"
 	"sort"
 	"strings"
+
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/utils"
 )
 
 var debug utils.Debug

+ 2 - 1
sdk/auth/signer.go

@@ -16,12 +16,13 @@ package auth
 
 import (
 	"fmt"
+	"reflect"
+
 	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials"
 	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/signers"
 	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/errors"
 	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
 	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
-	"reflect"
 )
 
 type Signer interface {

+ 9 - 7
sdk/client.go

@@ -16,21 +16,23 @@ package sdk
 
 import (
 	"fmt"
+	"net"
+	"net/http"
+	"strconv"
+	"sync"
+
 	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth"
 	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials"
 	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/endpoints"
 	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/errors"
 	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
 	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
-	"net"
-	"net/http"
-	"strconv"
-	"sync"
 )
 
-// this value will be replaced while build: -ldflags="-X sdk.version=x.x.x"
+// Version this value will be replaced while build: -ldflags="-X sdk.version=x.x.x"
 var Version = "0.0.1"
 
+// Client the type Client
 type Client struct {
 	regionId       string
 	config         *Config
@@ -75,6 +77,7 @@ func (client *Client) InitWithOptions(regionId string, config *Config, credentia
 	return
 }
 
+// EnableAsync enable the async task queue
 func (client *Client) EnableAsync(routinePoolSize, maxTaskQueueSize int) {
 	client.asyncTaskQueue = make(chan func(), maxTaskQueueSize)
 	for i := 0; i < routinePoolSize; i++ {
@@ -404,9 +407,8 @@ func (client *Client) ProcessCommonRequestWithSigner(request *requests.CommonReq
 		response = responses.NewCommonResponse()
 		err = client.DoActionWithSigner(request, response, signer)
 		return
-	} else {
-		panic("should not be here")
 	}
+	panic("should not be here")
 }
 
 func (client *Client) Shutdown() {

+ 5 - 5
sdk/requests/roa_request.go

@@ -59,11 +59,11 @@ func (request *RoaRequest) buildQueries(needParamEncode bool) string {
 
 	queryParams := request.QueryParams
 	// check if path contains params
-	splitArray := strings.Split(path, "?")
-	path = splitArray[0]
-	if len(splitArray) > 1 && len(splitArray[1]) > 0 {
-		queryParams[splitArray[1]] = ""
-	}
+	// splitArray := strings.Split(path, "?")
+	// path = splitArray[0]
+	// if len(splitArray) > 1 && len(splitArray[1]) > 0 {
+	// 	queryParams[splitArray[1]] = ""
+	// }
 	// sort QueryParams by key
 	var queryKeys []string
 	for key := range queryParams {

+ 112 - 0
sdk/requests/roa_request_test.go

@@ -0,0 +1,112 @@
+package requests
+
+import (
+	"io/ioutil"
+	"testing"
+
+	"github.com/stretchr/testify/assert"
+)
+
+func Test_RoaRequest(t *testing.T) {
+	r := &RoaRequest{}
+	r.InitWithApiInfo("product", "version", "action", "/", "serviceCode", "endpointType")
+	assert.NotNil(t, r)
+
+	assert.Equal(t, "GET", r.GetMethod())
+	assert.Equal(t, "ROA", r.GetStyle())
+	// assert.Equal(t, "version", r.GetVersion())
+	// assert.Equal(t, "action", r.GetActionName())
+	assert.Equal(t, "serviceCode", r.GetLocationServiceCode())
+	assert.Equal(t, "endpointType", r.GetLocationEndpointType())
+}
+
+func Test_RoaRequest_initWithCommonRequest(t *testing.T) {
+	r := &RoaRequest{}
+	common := NewCommonRequest()
+	r.initWithCommonRequest(common)
+	assert.NotNil(t, r)
+
+	assert.Equal(t, "GET", r.GetMethod())
+	assert.Equal(t, "ROA", r.GetStyle())
+	assert.Equal(t, "common", r.Headers["x-sdk-invoke-type"])
+	// assert.Equal(t, "version", r.GetVersion())
+	// assert.Equal(t, "action", r.GetActionName())
+}
+
+func Test_RoaRequest_BuildQueries(t *testing.T) {
+	// url
+	r := &RoaRequest{}
+	r.InitWithApiInfo("product", "version", "action", "/", "serviceCode", "endpointType")
+	assert.Equal(t, "/", r.BuildQueries())
+	r.addQueryParam("key", "value")
+	assert.Equal(t, "/?key=value", r.BuildQueries())
+	r.addQueryParam("key2", "value2")
+	assert.Equal(t, "/?key=value&key2=value2", r.BuildQueries())
+	// assert.Equal(t, "/?key=https%3A%2F%2Fdomain%2F%3Fq%3Dv", r.BuildQueries())
+}
+
+func Test_RoaRequest_BuildUrl(t *testing.T) {
+	r := &RoaRequest{}
+	r.InitWithApiInfo("product", "version", "action", "/", "serviceCode", "endpointType")
+	r.Domain = "domain.com"
+	r.Scheme = "http"
+	r.Port = "80"
+	assert.Equal(t, "http://domain.com:80/", r.BuildUrl())
+	r.addQueryParam("key", "value")
+	assert.Equal(t, "http://domain.com:80/?key=value", r.BuildUrl())
+	r.addQueryParam("key", "https://domain/?q=v")
+	assert.Equal(t, "http://domain.com:80/?key=https%3A%2F%2Fdomain%2F%3Fq%3Dv", r.BuildUrl())
+}
+
+func Test_RoaRequest_BuildUrl2(t *testing.T) {
+	r := &RoaRequest{}
+	r.InitWithApiInfo("product", "version", "action", "/", "serviceCode", "endpointType")
+	r.Domain = "domain.com"
+	r.Scheme = "http"
+	r.Port = "80"
+	assert.Equal(t, "http://domain.com:80/", r.BuildUrl())
+	r.addPathParam("key", "value")
+	assert.Equal(t, "http://domain.com:80/", r.BuildUrl())
+
+	r = &RoaRequest{}
+	r.InitWithApiInfo("product", "version", "action", "/users/[user]", "serviceCode", "endpointType")
+	r.Domain = "domain.com"
+	r.Scheme = "http"
+	r.Port = "80"
+	r.addPathParam("user", "name")
+	assert.Equal(t, "http://domain.com:80/users/name", r.BuildUrl())
+}
+
+func Test_RoaRequest_GetBodyReader_Nil(t *testing.T) {
+	r := &RoaRequest{}
+	r.InitWithApiInfo("product", "version", "action", "/", "serviceCode", "endpointType")
+
+	reader := r.GetBodyReader()
+	assert.Nil(t, reader)
+}
+
+func Test_RoaRequest_GetBodyReader_Form(t *testing.T) {
+	r := &RoaRequest{}
+	r.InitWithApiInfo("product", "version", "action", "/", "serviceCode", "endpointType")
+
+	r.addFormParam("key", "value")
+	reader := r.GetBodyReader()
+	b, _ := ioutil.ReadAll(reader)
+	assert.Equal(t, "key=value", string(b))
+}
+
+func Test_RoaRequest_GetBodyReader_Content(t *testing.T) {
+	r := &RoaRequest{}
+	r.InitWithApiInfo("product", "version", "action", "/", "serviceCode", "endpointType")
+
+	r.SetContent([]byte("Hello world"))
+	reader := r.GetBodyReader()
+	b, _ := ioutil.ReadAll(reader)
+	assert.Equal(t, "Hello world", string(b))
+}
+
+// func Test_RoaRequest_addPathParam(t *testing.T) {
+// 	r := &RoaRequest{}
+// 	r.InitWithApiInfo("product", "version", "action", "/", "serviceCode", "endpointType")
+// 	r.addPathParam("key", "value")
+// }