浏览代码

Add test cases for rpc_signature_composer.go

Jackson Tian 7 年之前
父节点
当前提交
7241397aa7
共有 2 个文件被更改,包括 65 次插入3 次删除
  1. 3 3
      sdk/auth/rpc_signature_composer.go
  2. 62 0
      sdk/auth/rpc_signature_composer_test.go

+ 3 - 3
sdk/auth/rpc_signature_composer.go

@@ -15,11 +15,11 @@
 package auth
 
 import (
-	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
-	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/utils"
 	"net/url"
-	"sort"
 	"strings"
+
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/utils"
 )
 
 func signRpcRequest(request requests.AcsRequest, signer Signer, regionId string) (err error) {

+ 62 - 0
sdk/auth/rpc_signature_composer_test.go

@@ -0,0 +1,62 @@
+package auth
+
+import (
+	"testing"
+
+	"github.com/stretchr/testify/assert"
+
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+)
+
+func mockRpcDate(fn func() string) string {
+	return "mock date"
+}
+
+func TestRpcSignatureComposer_buildRpcStringToSign(t *testing.T) {
+	request := requests.NewCommonRequest()
+	request.TransToAcsRequest()
+	stringToSign := buildRpcStringToSign(request)
+	assert.Equal(t, "GET&%2F&", stringToSign)
+	request.FormParams["key"] = "value"
+	stringToSign = buildRpcStringToSign(request)
+	assert.Equal(t, "GET&%2F&key%3Dvalue", stringToSign)
+	request.QueryParams["q"] = "value"
+	stringToSign = buildRpcStringToSign(request)
+	assert.Equal(t, "GET&%2F&key%3Dvalue%26q%3Dvalue", stringToSign)
+	request.QueryParams["q"] = "http://domain/?q=value&q2=value2"
+	stringToSign = buildRpcStringToSign(request)
+	assert.Equal(t, "GET&%2F&key%3Dvalue%26q%3Dhttp%253A%252F%252Fdomain%252F%253Fq%253Dvalue%2526q2%253Dvalue2", stringToSign)
+}
+
+// func TestRpcSignatureComposer(t *testing.T) {
+// 	request := requests.NewCommonRequest()
+// 	request.TransToAcsRequest()
+// 	c := credentials.NewAccessKeyCredential("accessKeyId", "accessKeySecret")
+// 	signer := signers.NewAccessKeySigner(c)
+
+// 	origTestHookLookupIP := hookGetDate
+// 	defer func() { hookGetDate = origTestHookLookupIP }()
+// 	hookGetDate = mockDate
+// 	signRpcRequest(request, signer, "regionId")
+// 	assert.Equal(t, "mock date", request.GetHeaders()["Date"])
+// 	assert.Equal(t, "acs accessKeyId:degLHXLEN6rMojj+bOlK74U9iic=", request.GetQueryParams()["Signature"])
+// }
+
+// func TestRpcSignatureComposer2(t *testing.T) {
+// 	request := requests.NewCommonRequest()
+// 	request.PathPattern = "/users/:user"
+// 	request.FormParams["key"] = "value"
+// 	request.AcceptFormat = "XML"
+// 	request.TransToAcsRequest()
+// 	c := credentials.NewAccessKeyCredential("accessKeyId", "accessKeySecret")
+// 	signer := signers.NewAccessKeySigner(c)
+
+// 	origTestHookLookupIP := hookGetDate
+// 	defer func() { hookGetDate = origTestHookLookupIP }()
+// 	hookGetDate = mockDate
+// 	signRpcRequest(request, signer, "regionId")
+// 	assert.Equal(t, "application/x-www-form-urlencoded", request.GetHeaders()["Content-Type"])
+// 	assert.Equal(t, "mock date", request.GetHeaders()["Date"])
+// 	assert.Equal(t, "application/xml", request.GetHeaders()["Accept"])
+// 	assert.Equal(t, "acs accessKeyId:U9uA3ftRZKixHPB08Z7Z4GOlpTY=", request.GetQueryParams()["Signature"])
+// }