Sfoglia il codice sorgente

Improve test for rpc_signature_composer.go

Jackson Tian 7 anni fa
parent
commit
f66ad5eb0f
2 ha cambiato i file con 28 aggiunte e 14 eliminazioni
  1. 6 2
      sdk/auth/rpc_signature_composer.go
  2. 22 12
      sdk/auth/rpc_signature_composer_test.go

+ 6 - 2
sdk/auth/rpc_signature_composer.go

@@ -22,6 +22,10 @@ import (
 	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/utils"
 )
 
+var hookGetUUIDV4 = func(fn func() string) string {
+	return fn()
+}
+
 func signRpcRequest(request requests.AcsRequest, signer Signer, regionId string) (err error) {
 	err = completeRpcSignParams(request, signer, regionId)
 	if err != nil {
@@ -44,11 +48,11 @@ func completeRpcSignParams(request requests.AcsRequest, signer Signer, regionId
 	queryParams["Version"] = request.GetVersion()
 	queryParams["Action"] = request.GetActionName()
 	queryParams["Format"] = request.GetAcceptFormat()
-	queryParams["Timestamp"] = utils.GetTimeInFormatISO8601()
+	queryParams["Timestamp"] = hookGetDate(utils.GetTimeInFormatISO8601)
 	queryParams["SignatureMethod"] = signer.GetName()
 	queryParams["SignatureType"] = signer.GetType()
 	queryParams["SignatureVersion"] = signer.GetVersion()
-	queryParams["SignatureNonce"] = utils.GetUUIDV4()
+	queryParams["SignatureNonce"] = hookGetUUIDV4(utils.GetUUIDV4)
 	queryParams["AccessKeyId"], err = signer.GetAccessKeyId()
 
 	if err != nil {

+ 22 - 12
sdk/auth/rpc_signature_composer_test.go

@@ -5,6 +5,8 @@ import (
 
 	"github.com/stretchr/testify/assert"
 
+	"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/requests"
 )
 
@@ -12,6 +14,10 @@ func mockRpcDate(fn func() string) string {
 	return "mock date"
 }
 
+func mockRpcGetUUIDV4(fn func() string) string {
+	return "MOCK_UUID"
+}
+
 func TestRpcSignatureComposer_buildRpcStringToSign(t *testing.T) {
 	request := requests.NewCommonRequest()
 	request.TransToAcsRequest()
@@ -28,19 +34,23 @@ func TestRpcSignatureComposer_buildRpcStringToSign(t *testing.T) {
 	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)
+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"])
-// }
+	origTestHookGetDate := hookGetDate
+	defer func() { hookGetDate = origTestHookGetDate }()
+	hookGetDate = mockRpcDate
+	origTestHookGetUUIDV4 := hookGetUUIDV4
+	defer func() { hookGetUUIDV4 = origTestHookGetUUIDV4 }()
+	hookGetUUIDV4 = mockRpcGetUUIDV4
+	signRpcRequest(request, signer, "regionId")
+	assert.Equal(t, "mock date", request.GetQueryParams()["Timestamp"])
+	assert.Equal(t, "MOCK_UUID", request.GetQueryParams()["SignatureNonce"])
+	assert.Equal(t, "7loPmFjvDnzOVnQeQNj85S6nFGY=", request.GetQueryParams()["Signature"])
+}
 
 // func TestRpcSignatureComposer2(t *testing.T) {
 // 	request := requests.NewCommonRequest()