ソースを参照

fix roa request panic when signRoaRequest

wenzuochao 6 年 前
コミット
b661b1b813
2 ファイル変更18 行追加2 行削除
  1. 16 0
      integration/core_test.go
  2. 2 2
      sdk/auth/roa_signature_composer.go

+ 16 - 0
integration/core_test.go

@@ -328,3 +328,19 @@ func Test_DdoscooWithServiceCode(t *testing.T) {
 	assert.NotNil(t, err)
 	assert.Contains(t, err.Error(), "InstanceIds is mandatory for this action.")
 }
+
+func Test_RoaRequestWithEcsRole(t *testing.T) {
+	client, err := sdk.NewClientWithEcsRamRole("cn-shenzhen", "test-go-role")
+	assert.Nil(t, err)
+	request := requests.NewCommonRequest()
+	request.Method = "POST"
+	request.Scheme = "https" // https | http
+	request.Domain = "edas.cn-hangzhou.aliyuncs.com"
+	request.Version = "2017-08-01"
+	request.PathPattern = "/pop/v5/resource/region_list"
+
+	request.QueryParams["RegionId"] = "cn-shenzhen"
+	_, err = client.ProcessCommonRequest(request)
+	assert.NotNil(t, err)
+	assert.Contains(t, err.Error(), "refresh Ecs sts token err")
+}

+ 2 - 2
sdk/auth/roa_signature_composer.go

@@ -37,12 +37,12 @@ func signRoaRequest(request requests.AcsRequest, signer Signer, regionId string)
 	completeROASignParams(request, signer, regionId)
 	stringToSign := buildRoaStringToSign(request)
 	request.SetStringToSign(stringToSign)
-	signature := signer.Sign(stringToSign, "")
 	accessKeyId, err := signer.GetAccessKeyId()
 	if err != nil {
-		return nil
+		return err
 	}
 
+	signature := signer.Sign(stringToSign, "")
 	request.GetHeaders()["Authorization"] = "acs " + accessKeyId + ":" + signature
 
 	return