Skip to content

Commit d4c4649

Browse files
committed
API doesn't accept base_role = none
Signed-off-by: Timo Sand <[email protected]>
1 parent cdd8675 commit d4c4649

2 files changed

Lines changed: 26 additions & 13 deletions

File tree

github/resource_github_organization_role.go

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -73,12 +73,18 @@ func resourceGithubOrganizationRoleCreate(ctx context.Context, d *schema.Resourc
7373
permissionsStr[i] = v.(string)
7474
}
7575

76-
role, _, err := client.Organizations.CreateCustomOrgRole(ctx, orgName, &github.CreateOrUpdateOrgRoleOptions{
76+
createOrUpdateOrgRoleOptions := &github.CreateOrUpdateOrgRoleOptions{
7777
Name: github.String(d.Get("name").(string)),
7878
Description: github.String(d.Get("description").(string)),
79-
BaseRole: github.String(d.Get("base_role").(string)),
8079
Permissions: permissionsStr,
81-
})
80+
}
81+
82+
baseRole := d.Get("base_role").(string)
83+
if baseRole != "none" {
84+
createOrUpdateOrgRoleOptions.BaseRole = github.String(baseRole)
85+
}
86+
87+
role, _, err := client.Organizations.CreateCustomOrgRole(ctx, orgName, createOrUpdateOrgRoleOptions)
8288
if err != nil {
8389
return diag.FromErr(fmt.Errorf("error creating organization role (%s/%s): %w", orgName, d.Get("name").(string), err))
8490
}
@@ -126,8 +132,14 @@ func resourceGithubOrganizationRoleRead(ctx context.Context, d *schema.ResourceD
126132
if err = d.Set("description", role.Description); err != nil {
127133
return diag.FromErr(err)
128134
}
129-
if err = d.Set("base_role", role.BaseRole); err != nil {
130-
return diag.FromErr(err)
135+
if role.BaseRole != nil {
136+
if err = d.Set("base_role", role.BaseRole); err != nil {
137+
return diag.FromErr(err)
138+
}
139+
} else {
140+
if err = d.Set("base_role", "none"); err != nil {
141+
return diag.FromErr(err)
142+
}
131143
}
132144
if err = d.Set("permissions", role.Permissions); err != nil {
133145
return diag.FromErr(err)

github/resource_github_organization_role_test.go

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ func TestAccGithubOrganizationRole(t *testing.T) {
1212
t.Run("can create an empty organization role", func(t *testing.T) {
1313
randomID := acctest.RandStringFromCharSet(5, acctest.CharSetAlphaNum)
1414
name := fmt.Sprintf("tf-acc-org-role-%s", randomID)
15+
baseRole := "none"
1516
config := fmt.Sprintf(`
1617
resource "github_organization_role" "test" {
1718
name = "%s"
@@ -25,12 +26,12 @@ func TestAccGithubOrganizationRole(t *testing.T) {
2526
Steps: []resource.TestStep{
2627
{
2728
Config: config,
28-
Check: resource.ComposeTestCheckFunc(
29+
Check: resource.ComposeAggregateTestCheckFunc(
2930
resource.TestCheckResourceAttrSet("github_organization_role.test", "id"),
3031
resource.TestCheckResourceAttrSet("github_organization_role.test", "role_id"),
3132
resource.TestCheckResourceAttr("github_organization_role.test", "name", name),
32-
resource.TestCheckResourceAttr("github_organization_role.test", "base_role", "none"),
33-
resource.TestCheckResourceAttrSet("github_organization_role.test", "permissions.#"),
33+
resource.TestCheckResourceAttr("github_organization_role.test", "base_role", baseRole),
34+
resource.TestCheckNoResourceAttr("github_organization_role.test", "permissions"),
3435
resource.TestCheckResourceAttr("github_organization_role.test", "permissions.#", "0"),
3536
),
3637
},
@@ -57,11 +58,11 @@ func TestAccGithubOrganizationRole(t *testing.T) {
5758
Steps: []resource.TestStep{
5859
{
5960
Config: config,
60-
Check: resource.ComposeTestCheckFunc(
61+
Check: resource.ComposeAggregateTestCheckFunc(
6162
resource.TestCheckResourceAttrSet("github_organization_role.test", "id"),
6263
resource.TestCheckResourceAttr("github_organization_role.test", "name", name),
6364
resource.TestCheckResourceAttr("github_organization_role.test", "base_role", baseRole),
64-
resource.TestCheckResourceAttrSet("github_organization_role.test", "permissions.#"),
65+
resource.TestCheckNoResourceAttr("github_organization_role.test", "permissions"),
6566
resource.TestCheckResourceAttr("github_organization_role.test", "permissions.#", "0"),
6667
),
6768
},
@@ -167,16 +168,16 @@ func TestAccGithubOrganizationRole(t *testing.T) {
167168
Steps: []resource.TestStep{
168169
{
169170
Config: config,
170-
Check: resource.ComposeTestCheckFunc(
171+
Check: resource.ComposeAggregateTestCheckFunc(
171172
resource.TestCheckResourceAttrSet("github_organization_role.test", "id"),
172173
resource.TestCheckResourceAttrSet("github_organization_role.test", "role_id"),
173174
resource.TestCheckResourceAttr("github_organization_role.test", "name", name),
174175
resource.TestCheckResourceAttr("github_organization_role.test", "description", description),
175176
resource.TestCheckResourceAttr("github_organization_role.test", "base_role", baseRole),
176177
resource.TestCheckResourceAttrSet("github_organization_role.test", "permissions.#"),
177178
resource.TestCheckResourceAttr("github_organization_role.test", "permissions.#", "2"),
178-
resource.TestCheckResourceAttr("github_organization_role.test", "permissions.0", permission0),
179-
resource.TestCheckResourceAttr("github_organization_role.test", "permissions.1", permission1),
179+
resource.TestCheckTypeSetElemAttr("github_organization_role.test", "permissions.*", permission0),
180+
resource.TestCheckTypeSetElemAttr("github_organization_role.test", "permissions.*", permission1),
180181
),
181182
},
182183
},

0 commit comments

Comments
 (0)