Skip to content

Commit 4308d7c

Browse files
tongyimingmikatong
andauthored
fix: tencentcloud_user_info result add user name (#1095)
* fix: tencentcloud_user_info result add user name * update doc * add testcase Co-authored-by: mikatong <mikatong@tencent.com>
1 parent e87e799 commit 4308d7c

File tree

4 files changed

+57
-4
lines changed

4 files changed

+57
-4
lines changed

tencentcloud/data_source_tc_user_info.go

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import (
1818
"strconv"
1919

2020
cam "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cam/v20190116"
21+
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper"
2122
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit"
2223

2324
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
@@ -48,6 +49,11 @@ func datasourceTencentCloudUserInfo() *schema.Resource {
4849
Computed: true,
4950
Description: "Current account OwnerUIN.",
5051
},
52+
"name": {
53+
Type: schema.TypeString,
54+
Computed: true,
55+
Description: "Current account Name. NOTE: only support subaccount.",
56+
},
5157
"result_output_file": {
5258
Type: schema.TypeString,
5359
Optional: true,
@@ -94,19 +100,31 @@ func datasourceTencentCloudUserInfoRead(d *schema.ResourceData, meta interface{}
94100
appId := strconv.FormatUint(*result.AppId, 10)
95101
uin := *result.Uin
96102
ownerUin := *result.OwnerUin
97-
103+
accountInfoRequest := cam.NewDescribeSubAccountsRequest()
104+
accountInfoRequest.FilterSubAccountUin = []*uint64{helper.Uint64(helper.StrToUInt64(uin))}
105+
accountInfoResponse, err := client.UseCamClient().DescribeSubAccounts(accountInfoRequest)
106+
if err != nil {
107+
return err
108+
}
109+
subAccounts := accountInfoResponse.Response.SubAccounts
110+
var name string
111+
if len(subAccounts) > 0 {
112+
name = *subAccounts[0].Name
113+
}
98114
d.SetId(fmt.Sprintf("user-%s-%s-%d", uin, appId, rand.Intn(10000)))
99115

100116
_ = d.Set("app_id", appId)
101117
_ = d.Set("uin", uin)
102118
_ = d.Set("owner_uin", ownerUin)
119+
_ = d.Set("name", name)
103120

104121
output, ok := d.GetOk("result_output_file")
105122
if ok && output.(string) != "" {
106123
if e := writeToFile(output.(string), map[string]interface{}{
107124
"app_id": appId,
108125
"uin": uin,
109126
"ownerUin": ownerUin,
127+
"name": name,
110128
}); e != nil {
111129
return e
112130
}

tencentcloud/data_source_tc_user_info_test.go

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@ import (
66
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
77
)
88

9-
func TestAccTencentCloudDataSourceUserInfo(t *testing.T) {
9+
func TestAccTencentCloudDataSourceUserInfoBasic(t *testing.T) {
1010
t.Parallel()
1111
resource.Test(t, resource.TestCase{
12-
PreCheck: func() { testAccPreCheck(t) },
1312
Providers: testAccProviders,
1413
Steps: []resource.TestStep{
1514
{
16-
Config: testAccDataUserInfoBasic,
15+
PreConfig: func() { testAccStepPreConfigSetTempAKSK(t, ACCOUNT_TYPE_COMMON) },
16+
Config: testAccDataUserInfoBasic,
1717
Check: resource.ComposeAggregateTestCheckFunc(
1818
resource.TestCheckResourceAttrSet("data.tencentcloud_user_info.info", "app_id"),
1919
resource.TestCheckResourceAttrSet("data.tencentcloud_user_info.info", "uin"),
@@ -24,6 +24,29 @@ func TestAccTencentCloudDataSourceUserInfo(t *testing.T) {
2424
})
2525
}
2626

27+
func TestAccTencentCloudDataSourceUserInfoSubAccount(t *testing.T) {
28+
t.Parallel()
29+
resource.Test(t, resource.TestCase{
30+
Providers: testAccProviders,
31+
Steps: []resource.TestStep{
32+
{
33+
// Need use subaccount aksk
34+
PreConfig: func() { testAccStepPreConfigSetTempAKSK(t, ACCOUNT_TYPE_SUB_ACCOUNT) },
35+
Config: testAccDataUserInfoSubAccount,
36+
Check: resource.ComposeAggregateTestCheckFunc(
37+
resource.TestCheckResourceAttrSet("data.tencentcloud_user_info.info_sub_account", "app_id"),
38+
resource.TestCheckResourceAttrSet("data.tencentcloud_user_info.info_sub_account", "uin"),
39+
resource.TestCheckResourceAttrSet("data.tencentcloud_user_info.info_sub_account", "owner_uin"),
40+
resource.TestCheckResourceAttrSet("data.tencentcloud_user_info.info_sub_account", "name"),
41+
),
42+
},
43+
},
44+
})
45+
}
46+
2747
const testAccDataUserInfoBasic = `
2848
data "tencentcloud_user_info" "info" {}
2949
`
50+
const testAccDataUserInfoSubAccount = `
51+
data "tencentcloud_user_info" "info_sub_account" {}
52+
`

tencentcloud/provider_test.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ const (
1919
ACCOUNT_TYPE_PREPAY = "PREPAY"
2020
ACCOUNT_TYPE_COMMON = "COMMON"
2121
ACCOUNT_TYPE_PRIVATE = "PRIVATE"
22+
ACCOUNT_TYPE_SUB_ACCOUNT = "SUB_ACCOUNT"
2223
INTERNATION_PROVIDER_SECRET_ID = "TENCENTCLOUD_SECRET_ID_INTERNATION"
2324
INTERNATION_PROVIDER_SECRET_KEY = "TENCENTCLOUD_SECRET_KEY_INTERNATION"
2425
PREPAY_PROVIDER_SECRET_ID = "TENCENTCLOUD_SECRET_ID_PREPAY"
@@ -27,6 +28,8 @@ const (
2728
PRIVATE_PROVIDER_SECRET_KEY = "TENCENTCLOUD_SECRET_KEY_PRIVATE"
2829
COMMON_PROVIDER_SECRET_ID = "TENCENTCLOUD_SECRET_ID_COMMON"
2930
COMMON_PROVIDER_SECRET_KEY = "TENCENTCLOUD_SECRET_KEY_COMMON"
31+
SUB_ACCOUNT_PROVIDER_SECRET_ID = "TENCENTCLOUD_SECRET_ID_SUB_ACCOUNT"
32+
SUB_ACCOUNT_PROVIDER_SECRET_KEY = "TENCENTCLOUD_SECRET_KEY_SUB_ACCOUNT"
3033
)
3134

3235
func init() {
@@ -109,6 +112,14 @@ func testAccPreCheckCommon(t *testing.T, accountType string) {
109112
}
110113
os.Setenv(PROVIDER_SECRET_ID, secretId)
111114
os.Setenv(PROVIDER_SECRET_KEY, secretKey)
115+
case accountType == ACCOUNT_TYPE_SUB_ACCOUNT:
116+
secretId := os.Getenv(SUB_ACCOUNT_PROVIDER_SECRET_ID)
117+
secretKey := os.Getenv(SUB_ACCOUNT_PROVIDER_SECRET_KEY)
118+
if secretId == "" || secretKey == "" {
119+
t.Fatalf("%v and %v must be set for acceptance tests\n", SUB_ACCOUNT_PROVIDER_SECRET_ID, SUB_ACCOUNT_PROVIDER_SECRET_KEY)
120+
}
121+
os.Setenv(PROVIDER_SECRET_ID, secretId)
122+
os.Setenv(PROVIDER_SECRET_KEY, secretKey)
112123
default:
113124
if v := os.Getenv(PROVIDER_SECRET_ID); v == "" {
114125
t.Fatalf("%v must be set for acceptance tests\n", PROVIDER_SECRET_ID)

website/docs/d/user_info.html.markdown

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ The following arguments are supported:
2828
In addition to all arguments above, the following attributes are exported:
2929

3030
* `app_id` - Current account App ID.
31+
* `name` - Current account Name. NOTE: only support subaccount.
3132
* `owner_uin` - Current account OwnerUIN.
3233
* `uin` - Current account UIN.
3334

0 commit comments

Comments
 (0)