Skip to content

Commit c0bf5d1

Browse files
committed
feat: Add support for members_can_change_repo_visibility in github_organization_settings
Also added support for the github_organization data source. Signed-off-by: James Alseth <jalseth@google.com>
1 parent 15fff78 commit c0bf5d1

6 files changed

+181
-0
lines changed

github/data_source_github_organization.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,10 @@ func dataSourceGithubOrganization() *schema.Resource {
139139
Type: schema.TypeBool,
140140
Computed: true,
141141
},
142+
"members_can_change_repo_visibility": {
143+
Type: schema.TypeBool,
144+
Computed: true,
145+
},
142146
"summary_only": {
143147
Type: schema.TypeBool,
144148
Optional: true,
@@ -264,6 +268,7 @@ func dataSourceGithubOrganizationRead(d *schema.ResourceData, meta any) error {
264268
_ = d.Set("dependency_graph_enabled_for_new_repositories", organization.GetDependencyGraphEnabledForNewRepos())
265269
_ = d.Set("secret_scanning_enabled_for_new_repositories", organization.GetSecretScanningEnabledForNewRepos())
266270
_ = d.Set("secret_scanning_push_protection_enabled_for_new_repositories", organization.GetSecretScanningPushProtectionEnabledForNewRepos())
271+
_ = d.Set("members_can_change_repo_visibility", organization.GetMembersCanChangeRepoVisibility())
267272
}
268273

269274
d.SetId(strconv.FormatInt(organization.GetID(), 10))

github/data_source_github_organization_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ func TestAccGithubOrganizationDataSource(t *testing.T) {
4141
resource.TestCheckResourceAttrSet("data.github_organization.test", "dependency_graph_enabled_for_new_repositories"),
4242
resource.TestCheckResourceAttrSet("data.github_organization.test", "secret_scanning_enabled_for_new_repositories"),
4343
resource.TestCheckResourceAttrSet("data.github_organization.test", "secret_scanning_push_protection_enabled_for_new_repositories"),
44+
resource.TestCheckResourceAttrSet("data.github_organization.test", "members_can_change_repo_visibility"),
4445
)
4546

4647
resource.Test(t, resource.TestCase{

github/resource_github_organization_settings.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,12 @@ func resourceGithubOrganizationSettings() *schema.Resource {
8181
Default: true,
8282
Description: "Whether or not organization members can create new repositories.",
8383
},
84+
"members_can_change_repo_visibility": {
85+
Type: schema.TypeBool,
86+
Optional: true,
87+
Default: true,
88+
Description: "Whether or not organization members can change the visibility of repositories.",
89+
},
8490
"members_can_create_internal_repositories": {
8591
Type: schema.TypeBool,
8692
Optional: true,
@@ -251,6 +257,9 @@ func buildOrganizationSettings(d *schema.ResourceData, isEnterprise bool) *githu
251257
if shouldInclude("members_can_create_repositories") {
252258
settings.MembersCanCreateRepos = github.Ptr(d.Get("members_can_create_repositories").(bool))
253259
}
260+
if shouldInclude("members_can_change_repo_visibility") {
261+
settings.MembersCanChangeRepoVisibility = github.Ptr(d.Get("members_can_change_repo_visibility").(bool))
262+
}
254263
if shouldInclude("members_can_create_private_repositories") {
255264
settings.MembersCanCreatePrivateRepos = github.Ptr(d.Get("members_can_create_private_repositories").(bool))
256265
}
@@ -357,6 +366,9 @@ func resourceGithubOrganizationSettingsCreateOrUpdate(d *schema.ResourceData, me
357366
if settings.MembersCanCreateRepos != nil {
358367
log.Printf("[DEBUG] MembersCanCreateRepos: %v", *settings.MembersCanCreateRepos)
359368
}
369+
if settings.MembersCanChangeRepoVisibility != nil {
370+
log.Printf("[DEBUG] MembersCanChangeRepoVisibility: %v", *settings.MembersCanChangeRepoVisibility)
371+
}
360372
if settings.MembersCanCreatePrivateRepos != nil {
361373
log.Printf("[DEBUG] MembersCanCreatePrivateRepos: %v", *settings.MembersCanCreatePrivateRepos)
362374
}
@@ -468,6 +480,9 @@ func resourceGithubOrganizationSettingsRead(d *schema.ResourceData, meta any) er
468480
if err = d.Set("members_can_create_repositories", orgSettings.GetMembersCanCreateRepos()); err != nil {
469481
return err
470482
}
483+
if err = d.Set("members_can_change_repo_visibility", orgSettings.GetMembersCanChangeRepoVisibility()); err != nil {
484+
return err
485+
}
471486
if err = d.Set("members_can_create_internal_repositories", orgSettings.GetMembersCanCreateInternalRepos()); err != nil {
472487
return err
473488
}

github/resource_github_organization_settings_test.go

Lines changed: 158 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ func TestAccGithubOrganizationSettings(t *testing.T) {
2525
has_repository_projects = true
2626
default_repository_permission = "read"
2727
members_can_create_repositories = true
28+
members_can_change_repo_visibility = true
2829
members_can_create_public_repositories = true
2930
members_can_create_private_repositories = true
3031
members_can_create_internal_repositories = false
@@ -46,6 +47,150 @@ func TestAccGithubOrganizationSettings(t *testing.T) {
4647
"github_organization_settings.test",
4748
"billing_email", "test@example.com",
4849
),
50+
resource.TestCheckResourceAttr(
51+
"github_organization_settings.test",
52+
"company", "Test Company",
53+
),
54+
resource.TestCheckResourceAttr(
55+
"github_organization_settings.test",
56+
"blog", "https://example.com",
57+
),
58+
resource.TestCheckResourceAttr(
59+
"github_organization_settings.test",
60+
"email", "test@example.com",
61+
),
62+
resource.TestCheckResourceAttr(
63+
"github_organization_settings.test",
64+
"twitter_username", "Test",
65+
),
66+
resource.TestCheckResourceAttr(
67+
"github_organization_settings.test",
68+
"location", "Test Location",
69+
),
70+
resource.TestCheckResourceAttr(
71+
"github_organization_settings.test",
72+
"name", "Test Name",
73+
),
74+
resource.TestCheckResourceAttr(
75+
"github_organization_settings.test",
76+
"description", "Test Description",
77+
),
78+
resource.TestCheckResourceAttr(
79+
"github_organization_settings.test",
80+
"has_organization_projects", "true",
81+
),
82+
resource.TestCheckResourceAttr(
83+
"github_organization_settings.test",
84+
"has_repository_projects", "true",
85+
),
86+
resource.TestCheckResourceAttr(
87+
"github_organization_settings.test",
88+
"default_repository_permission", "read",
89+
),
90+
resource.TestCheckResourceAttr(
91+
"github_organization_settings.test",
92+
"members_can_create_repositories", "true",
93+
),
94+
resource.TestCheckResourceAttr(
95+
"github_organization_settings.test",
96+
"members_can_change_repo_visibility", "true",
97+
),
98+
resource.TestCheckResourceAttr(
99+
"github_organization_settings.test",
100+
"members_can_create_public_repositories", "true",
101+
),
102+
resource.TestCheckResourceAttr(
103+
"github_organization_settings.test",
104+
"members_can_create_private_repositories", "true",
105+
),
106+
resource.TestCheckResourceAttr(
107+
"github_organization_settings.test",
108+
"members_can_create_internal_repositories", "false",
109+
),
110+
resource.TestCheckResourceAttr(
111+
"github_organization_settings.test",
112+
"members_can_create_pages", "true",
113+
),
114+
resource.TestCheckResourceAttr(
115+
"github_organization_settings.test",
116+
"members_can_create_public_pages", "true",
117+
),
118+
resource.TestCheckResourceAttr(
119+
"github_organization_settings.test",
120+
"members_can_create_private_pages", "true",
121+
),
122+
resource.TestCheckResourceAttr(
123+
"github_organization_settings.test",
124+
"members_can_fork_private_repositories", "true",
125+
),
126+
resource.TestCheckResourceAttr(
127+
"github_organization_settings.test",
128+
"web_commit_signoff_required", "true",
129+
),
130+
resource.TestCheckResourceAttr(
131+
"github_organization_settings.test",
132+
"advanced_security_enabled_for_new_repositories", "false",
133+
),
134+
resource.TestCheckResourceAttr(
135+
"github_organization_settings.test",
136+
"dependabot_alerts_enabled_for_new_repositories", "false",
137+
),
138+
resource.TestCheckResourceAttr(
139+
"github_organization_settings.test",
140+
"dependabot_security_updates_enabled_for_new_repositories", "false",
141+
),
142+
resource.TestCheckResourceAttr(
143+
"github_organization_settings.test",
144+
"dependency_graph_enabled_for_new_repositories", "false",
145+
),
146+
resource.TestCheckResourceAttr(
147+
"github_organization_settings.test",
148+
"secret_scanning_enabled_for_new_repositories", "false",
149+
),
150+
resource.TestCheckResourceAttr(
151+
"github_organization_settings.test",
152+
"secret_scanning_push_protection_enabled_for_new_repositories", "false",
153+
),
154+
resource.TestCheckResourceAttr(
155+
"github_organization_settings.test",
156+
"secret_scanning_validity_checks_enabled", "false",
157+
),
158+
resource.TestCheckResourceAttr(
159+
"github_organization_settings.test",
160+
"members_can_delete_repositories", "false",
161+
),
162+
resource.TestCheckResourceAttr(
163+
"github_organization_settings.test",
164+
"members_can_change_repo_visibility", "true",
165+
),
166+
resource.TestCheckResourceAttr(
167+
"github_organization_settings.test",
168+
"members_can_invite_outside_collaborators", "false",
169+
),
170+
resource.TestCheckResourceAttr(
171+
"github_organization_settings.test",
172+
"members_can_delete_issues", "false",
173+
),
174+
resource.TestCheckResourceAttr(
175+
"github_organization_settings.test",
176+
"display_commenter_full_name_setting_enabled", "false",
177+
),
178+
resource.TestCheckResourceAttr(
179+
"github_organization_settings.test",
180+
"readers_can_create_discussions", "false",
181+
),
182+
resource.TestCheckResourceAttr(
183+
"github_organization_settings.test",
184+
"members_can_create_teams", "false",
185+
),
186+
resource.TestCheckResourceAttr(
187+
"github_organization_settings.test",
188+
"members_can_view_dependency_insights", "false",
189+
),
190+
resource.TestCheckResourceAttr(
191+
"github_organization_settings.test",
192+
"default_repository_branch", "main",
193+
),
49194
)
50195

51196
resource.Test(t, resource.TestCase{
@@ -150,6 +295,7 @@ func TestAccGithubOrganizationSettings(t *testing.T) {
150295
resource "github_organization_settings" "test" {
151296
billing_email = "test@example.com"
152297
members_can_create_private_repositories = false
298+
members_can_change_repo_visibility = false
153299
members_can_create_internal_repositories = false
154300
members_can_fork_private_repositories = false
155301
web_commit_signoff_required = false
@@ -170,6 +316,10 @@ func TestAccGithubOrganizationSettings(t *testing.T) {
170316
"github_organization_settings.test",
171317
"members_can_create_private_repositories", "false",
172318
),
319+
resource.TestCheckResourceAttr(
320+
"github_organization_settings.test",
321+
"members_can_change_repo_visibility", "false",
322+
),
173323
resource.TestCheckResourceAttr(
174324
"github_organization_settings.test",
175325
"members_can_create_internal_repositories", "false",
@@ -225,6 +375,7 @@ func TestAccGithubOrganizationSettings(t *testing.T) {
225375
resource "github_organization_settings" "test" {
226376
billing_email = "test@example.com"
227377
members_can_create_private_repositories = false
378+
members_can_change_repo_visibility = true
228379
members_can_create_internal_repositories = true
229380
members_can_fork_private_repositories = false
230381
web_commit_signoff_required = true
@@ -245,6 +396,10 @@ func TestAccGithubOrganizationSettings(t *testing.T) {
245396
"github_organization_settings.test",
246397
"members_can_create_private_repositories", "false",
247398
),
399+
resource.TestCheckResourceAttr(
400+
"github_organization_settings.test",
401+
"members_can_change_repo_visibility", "true",
402+
),
248403
resource.TestCheckResourceAttr(
249404
"github_organization_settings.test",
250405
"members_can_create_internal_repositories", "true",
@@ -520,6 +675,7 @@ func TestAccGithubOrganizationSettings(t *testing.T) {
520675
resource.TestCheckResourceAttr("github_organization_settings.test", "secret_scanning_enabled_for_new_repositories", "true"),
521676
resource.TestCheckResourceAttr("github_organization_settings.test", "secret_scanning_push_protection_enabled_for_new_repositories", "true"),
522677
resource.TestCheckResourceAttr("github_organization_settings.test", "members_can_create_private_repositories", "true"),
678+
resource.TestCheckResourceAttr("github_organization_settings.test", "members_can_change_repo_visibility", "true"),
523679
resource.TestCheckResourceAttr("github_organization_settings.test", "members_can_create_internal_repositories", "true"),
524680
resource.TestCheckResourceAttr("github_organization_settings.test", "members_can_create_pages", "true"),
525681
resource.TestCheckResourceAttr("github_organization_settings.test", "members_can_create_public_pages", "true"),
@@ -551,6 +707,7 @@ func TestAccGithubOrganizationSettings(t *testing.T) {
551707
secret_scanning_enabled_for_new_repositories = false
552708
secret_scanning_push_protection_enabled_for_new_repositories = false
553709
members_can_create_private_repositories = false
710+
members_can_change_repo_visibility = false
554711
members_can_create_internal_repositories = false
555712
members_can_create_pages = false
556713
members_can_create_public_pages = false
@@ -567,6 +724,7 @@ func TestAccGithubOrganizationSettings(t *testing.T) {
567724
resource.TestCheckResourceAttr("github_organization_settings.test", "secret_scanning_enabled_for_new_repositories", "false"),
568725
resource.TestCheckResourceAttr("github_organization_settings.test", "secret_scanning_push_protection_enabled_for_new_repositories", "false"),
569726
resource.TestCheckResourceAttr("github_organization_settings.test", "members_can_create_private_repositories", "false"),
727+
resource.TestCheckResourceAttr("github_organization_settings.test", "members_can_change_repo_visibility", "false"),
570728
resource.TestCheckResourceAttr("github_organization_settings.test", "members_can_create_internal_repositories", "false"),
571729
resource.TestCheckResourceAttr("github_organization_settings.test", "members_can_create_pages", "false"),
572730
resource.TestCheckResourceAttr("github_organization_settings.test", "members_can_create_public_pages", "false"),

website/docs/d/organization.html.markdown

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ data "github_organization" "example" {
4343
* `default_repository_permission` - Default permission level members have for organization repositories.
4444
* `members_allowed_repository_creation_type` - The type of repository allowed to be created by members of the organization. Can be one of `ALL`, `PUBLIC`, `PRIVATE`, `NONE`.
4545
* `members_can_create_repositories` - Whether non-admin organization members can create repositories.
46+
* `members_can_change_repo_visibility` - Whether organization members can change the visibility of repositories.
4647
* `members_can_create_internal_repositories` - Whether organization members can create internal repositories.
4748
* `members_can_create_private_repositories` - Whether organization members can create private repositories.
4849
* `members_can_create_public_repositories` - Whether organization members can create public repositories.

website/docs/r/organization_settings.html.markdown

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ The following arguments are supported:
5858
* `has_repository_projects` - (Optional) Whether or not repository projects are enabled for the organization.
5959
* `default_repository_permission` - (Optional) The default permission for organization members to create new repositories. Can be one of `read`, `write`, `admin`, or `none`. Defaults to `read`.
6060
* `members_can_create_repositories` - (Optional) Whether or not organization members can create new repositories. Defaults to `true`.
61+
* `members_can_change_repo_visibility` - (Optional) Whether or not organization members can change the visibility of repositories. Defaults to `true`.
6162
* `members_can_create_public_repositories` - (Optional) Whether or not organization members can create new public repositories. Defaults to `true`.
6263
* `members_can_create_private_repositories` - (Optional) Whether or not organization members can create new private repositories. Defaults to `true`.
6364
* `members_can_create_internal_repositories` - (Optional) Whether or not organization members can create new internal repositories. For Enterprise Organizations only.

0 commit comments

Comments
 (0)