From ca052e22e7d80ab519492217bd4b071beec104e7 Mon Sep 17 00:00:00 2001 From: Erik Elkins Date: Mon, 22 Jan 2024 08:26:54 -0600 Subject: [PATCH 1/5] Add default workflow permissions for enterprise/org/repo --- github/actions_permissions_enterprise.go | 51 ++++++++++++ github/actions_permissions_enterprise_test.go | 77 ++++++++++++++++++ github/actions_permissions_orgs.go | 51 ++++++++++++ github/actions_permissions_orgs_test.go | 77 ++++++++++++++++++ github/github-accessors.go | 48 ++++++++++++ github/github-accessors_test.go | 60 ++++++++++++++ github/repos_actions_permissions.go | 52 +++++++++++++ github/repos_actions_permissions_test.go | 78 +++++++++++++++++++ 8 files changed, 494 insertions(+) diff --git a/github/actions_permissions_enterprise.go b/github/actions_permissions_enterprise.go index 7e10444af47..ec0aadb1e70 100644 --- a/github/actions_permissions_enterprise.go +++ b/github/actions_permissions_enterprise.go @@ -29,6 +29,14 @@ func (a ActionsPermissionsEnterprise) String() string { return Stringify(a) } +// DefaultWorkflowPermissionEnterprise represents the default permissions for GitHub Actions workflows +// +// GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/actions/permissions +type DefaultWorkflowPermissionEnterprise struct { + DefaultWorkflowPermissions *string `json:"default_workflow_permissions,omitempty"` + CanApprovePullRequestReviews *bool `json:"can_approve_pull_request_reviews,omitempty"` +} + // GetActionsPermissionsInEnterprise gets the GitHub Actions permissions policy for an enterprise. // // GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/actions/permissions#get-github-actions-permissions-for-an-enterprise @@ -205,3 +213,46 @@ func (s *ActionsService) EditActionsAllowedInEnterprise(ctx context.Context, ent return p, resp, nil } + +// GetDefaultWorkflowPermissionsInEnterprise gets the GitHub Actions default workflow permissions for an enterprise. +// +// GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/actions/permissions#get-default-workflow-permissions-for-an-enterprise +// +//meta:operation GET /enterprises/{enterprise}/actions/permissions/workflow +func (s *ActionsService) GetDefaultWorkflowPermissionsInEnterprise(ctx context.Context, enterprise string) (*DefaultWorkflowPermissionEnterprise, *Response, error) { + u := fmt.Sprintf("enterprises/%v/actions/permissions/workflow", enterprise) + + req, err := s.client.NewRequest("GET", u, nil) + if err != nil { + return nil, nil, err + } + + permissions := new(DefaultWorkflowPermissionEnterprise) + resp, err := s.client.Do(ctx, req, permissions) + if err != nil { + return nil, resp, err + } + + return permissions, resp, nil +} + +// EditDefaultWorkflowPermissionsInEnterprise sets the GitHub Actions default workflow permissions for an enterprise. +// +// GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/actions/permissions#set-default-workflow-permissions-for-an-enterprise +// +//meta:operation PUT /enterprises/{enterprise}/actions/permissions/workflow +func (s *ActionsService) EditDefaultWorkflowPermissionsInEnterprise(ctx context.Context, enterprise string, defaultWorkflowPermissionEnterprise DefaultWorkflowPermissionEnterprise) (*DefaultWorkflowPermissionEnterprise, *Response, error) { + u := fmt.Sprintf("enterprises/%v/actions/permissions/workflow", enterprise) + req, err := s.client.NewRequest("PUT", u, defaultWorkflowPermissionEnterprise) + if err != nil { + return nil, nil, err + } + + p := new(DefaultWorkflowPermissionEnterprise) + resp, err := s.client.Do(ctx, req, p) + if err != nil { + return nil, resp, err + } + + return p, resp, nil +} diff --git a/github/actions_permissions_enterprise_test.go b/github/actions_permissions_enterprise_test.go index 14e8e3a6b33..70f7d2c0979 100644 --- a/github/actions_permissions_enterprise_test.go +++ b/github/actions_permissions_enterprise_test.go @@ -296,3 +296,80 @@ func TestActionsService_EditActionsAllowedInEnterprise(t *testing.T) { return resp, err }) } + +func TestActionsService_GetDefaultWorkflowPermissionsInEnterprise(t *testing.T) { + client, mux, _, teardown := setup() + defer teardown() + + mux.HandleFunc("/enterprises/e/actions/permissions/workflow", func(w http.ResponseWriter, r *http.Request) { + testMethod(t, r, "GET") + fmt.Fprint(w, `{ "default_workflow_permissions": "read", "can_approve_pull_request_reviews": true }`) + }) + + ctx := context.Background() + ent, _, err := client.Actions.GetDefaultWorkflowPermissionsInEnterprise(ctx, "e") + if err != nil { + t.Errorf("Actions.GetDefaultWorkflowPermissionsInEnterprise returned error: %v", err) + } + want := &DefaultWorkflowPermissionEnterprise{DefaultWorkflowPermissions: String("read"), CanApprovePullRequestReviews: Bool(true)} + if !cmp.Equal(ent, want) { + t.Errorf("Actions.GetDefaultWorkflowPermissionsInEnterprise returned %+v, want %+v", ent, want) + } + + const methodName = "GetDefaultWorkflowPermissionsInEnterprise" + testBadOptions(t, methodName, func() (err error) { + _, _, err = client.Actions.GetDefaultWorkflowPermissionsInEnterprise(ctx, "\n") + return err + }) + + testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) { + got, resp, err := client.Actions.GetDefaultWorkflowPermissionsInEnterprise(ctx, "e") + if got != nil { + t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got) + } + return resp, err + }) +} + +func TestActionsService_EditDefaultWorkflowPermissionsInEnterprise(t *testing.T) { + client, mux, _, teardown := setup() + defer teardown() + input := &DefaultWorkflowPermissionEnterprise{DefaultWorkflowPermissions: String("read"), CanApprovePullRequestReviews: Bool(true)} + + mux.HandleFunc("/enterprises/e/actions/permissions/workflow", func(w http.ResponseWriter, r *http.Request) { + v := new(DefaultWorkflowPermissionEnterprise) + assertNilError(t, json.NewDecoder(r.Body).Decode(v)) + + testMethod(t, r, "PUT") + if !cmp.Equal(v, input) { + t.Errorf("Request body = %+v, want %+v", v, input) + } + + fmt.Fprint(w, `{ "default_workflow_permissions": "read", "can_approve_pull_request_reviews": true }`) + }) + + ctx := context.Background() + ent, _, err := client.Actions.EditDefaultWorkflowPermissionsInEnterprise(ctx, "e", *input) + if err != nil { + t.Errorf("Actions.EditDefaultWorkflowPermissionsInEnterprise returned error: %v", err) + } + + want := &DefaultWorkflowPermissionEnterprise{DefaultWorkflowPermissions: String("read"), CanApprovePullRequestReviews: Bool(true)} + if !cmp.Equal(ent, want) { + t.Errorf("Actions.EditDefaultWorkflowPermissionsInEnterprise returned %+v, want %+v", ent, want) + } + + const methodName = "EditDefaultWorkflowPermissionsInEnterprise" + testBadOptions(t, methodName, func() (err error) { + _, _, err = client.Actions.EditDefaultWorkflowPermissionsInEnterprise(ctx, "\n", *input) + return err + }) + + testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) { + got, resp, err := client.Actions.EditDefaultWorkflowPermissionsInEnterprise(ctx, "e", *input) + if got != nil { + t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got) + } + return resp, err + }) +} diff --git a/github/actions_permissions_orgs.go b/github/actions_permissions_orgs.go index 1a31e4c6f1b..0a9c9a3b9dd 100644 --- a/github/actions_permissions_orgs.go +++ b/github/actions_permissions_orgs.go @@ -42,6 +42,14 @@ func (a ActionsAllowed) String() string { return Stringify(a) } +// DefaultWorkflowPermissionOrganization represents the default permissions for GitHub Actions workflows +// +// GitHub API docs: https://docs.github.com/rest/actions/permissions +type DefaultWorkflowPermissionOrganization struct { + DefaultWorkflowPermissions *string `json:"default_workflow_permissions,omitempty"` + CanApprovePullRequestReviews *bool `json:"can_approve_pull_request_reviews,omitempty"` +} + // GetActionsPermissions gets the GitHub Actions permissions policy for repositories and allowed actions in an organization. // // GitHub API docs: https://docs.github.com/rest/actions/permissions#get-github-actions-permissions-for-an-organization @@ -218,3 +226,46 @@ func (s *ActionsService) EditActionsAllowed(ctx context.Context, org string, act return p, resp, nil } + +// GetDefaultWorkflowPermissionsInOrganization gets the GitHub Actions default workflow permissions for an organization. +// +// GitHub API docs: https://docs.github.com/rest/actions/permissions#get-default-workflow-permissions-for-an-organization +// +//meta:operation GET /orgs/{org}/actions/permissions/workflow +func (s *ActionsService) GetDefaultWorkflowPermissionsInOrganization(ctx context.Context, org string) (*DefaultWorkflowPermissionOrganization, *Response, error) { + u := fmt.Sprintf("orgs/%v/actions/permissions/workflow", org) + + req, err := s.client.NewRequest("GET", u, nil) + if err != nil { + return nil, nil, err + } + + permissions := new(DefaultWorkflowPermissionOrganization) + resp, err := s.client.Do(ctx, req, permissions) + if err != nil { + return nil, resp, err + } + + return permissions, resp, nil +} + +// EditDefaultWorkflowPermissionsInOrganization sets the GitHub Actions default workflow permissions for an organization. +// +// GitHub API docs: https://docs.github.com/rest/actions/permissions#set-default-workflow-permissions-for-an-organization +// +//meta:operation PUT /orgs/{org}/actions/permissions/workflow +func (s *ActionsService) EditDefaultWorkflowPermissionsInOrganization(ctx context.Context, org string, defaultWorkflowPermissionOrganization DefaultWorkflowPermissionOrganization) (*DefaultWorkflowPermissionOrganization, *Response, error) { + u := fmt.Sprintf("orgs/%v/actions/permissions/workflow", org) + req, err := s.client.NewRequest("PUT", u, defaultWorkflowPermissionOrganization) + if err != nil { + return nil, nil, err + } + + p := new(DefaultWorkflowPermissionOrganization) + resp, err := s.client.Do(ctx, req, p) + if err != nil { + return nil, resp, err + } + + return p, resp, nil +} diff --git a/github/actions_permissions_orgs_test.go b/github/actions_permissions_orgs_test.go index 36a241f6ea2..fd35c519645 100644 --- a/github/actions_permissions_orgs_test.go +++ b/github/actions_permissions_orgs_test.go @@ -334,3 +334,80 @@ func TestActionsPermissions_Marshal(t *testing.T) { testJSONMarshal(t, u, want) } + +func TestActionsService_GetDefaultWorkflowPermissionsInOrganization(t *testing.T) { + client, mux, _, teardown := setup() + defer teardown() + + mux.HandleFunc("/orgs/o/actions/permissions/workflow", func(w http.ResponseWriter, r *http.Request) { + testMethod(t, r, "GET") + fmt.Fprint(w, `{ "default_workflow_permissions": "read", "can_approve_pull_request_reviews": true }`) + }) + + ctx := context.Background() + org, _, err := client.Actions.GetDefaultWorkflowPermissionsInOrganization(ctx, "o") + if err != nil { + t.Errorf("Actions.GetDefaultWorkflowPermissionsInOrganization returned error: %v", err) + } + want := &DefaultWorkflowPermissionOrganization{DefaultWorkflowPermissions: String("read"), CanApprovePullRequestReviews: Bool(true)} + if !cmp.Equal(org, want) { + t.Errorf("Actions.GetDefaultWorkflowPermissionsInOrganization returned %+v, want %+v", org, want) + } + + const methodName = "GetDefaultWorkflowPermissionsInOrganization" + testBadOptions(t, methodName, func() (err error) { + _, _, err = client.Actions.GetDefaultWorkflowPermissionsInOrganization(ctx, "\n") + return err + }) + + testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) { + got, resp, err := client.Actions.GetDefaultWorkflowPermissionsInOrganization(ctx, "o") + if got != nil { + t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got) + } + return resp, err + }) +} + +func TestActionsService_EditDefaultWorkflowPermissionsInOrganization(t *testing.T) { + client, mux, _, teardown := setup() + defer teardown() + input := &DefaultWorkflowPermissionOrganization{DefaultWorkflowPermissions: String("read"), CanApprovePullRequestReviews: Bool(true)} + + mux.HandleFunc("/orgs/o/actions/permissions/workflow", func(w http.ResponseWriter, r *http.Request) { + v := new(DefaultWorkflowPermissionOrganization) + assertNilError(t, json.NewDecoder(r.Body).Decode(v)) + + testMethod(t, r, "PUT") + if !cmp.Equal(v, input) { + t.Errorf("Request body = %+v, want %+v", v, input) + } + + fmt.Fprint(w, `{ "default_workflow_permissions": "read", "can_approve_pull_request_reviews": true }`) + }) + + ctx := context.Background() + org, _, err := client.Actions.EditDefaultWorkflowPermissionsInOrganization(ctx, "o", *input) + if err != nil { + t.Errorf("Actions.EditDefaultWorkflowPermissionsInOrganization returned error: %v", err) + } + + want := &DefaultWorkflowPermissionOrganization{DefaultWorkflowPermissions: String("read"), CanApprovePullRequestReviews: Bool(true)} + if !cmp.Equal(org, want) { + t.Errorf("Actions.EditDefaultWorkflowPermissionsInOrganization returned %+v, want %+v", org, want) + } + + const methodName = "EditDefaultWorkflowPermissionsInOrganization" + testBadOptions(t, methodName, func() (err error) { + _, _, err = client.Actions.EditDefaultWorkflowPermissionsInOrganization(ctx, "\n", *input) + return err + }) + + testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) { + got, resp, err := client.Actions.EditDefaultWorkflowPermissionsInOrganization(ctx, "o", *input) + if got != nil { + t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got) + } + return resp, err + }) +} diff --git a/github/github-accessors.go b/github/github-accessors.go index 6663fc1ae7d..5a763df1e21 100644 --- a/github/github-accessors.go +++ b/github/github-accessors.go @@ -4686,6 +4686,54 @@ func (d *DefaultSetupConfiguration) GetUpdatedAt() Timestamp { return *d.UpdatedAt } +// GetCanApprovePullRequestReviews returns the CanApprovePullRequestReviews field if it's non-nil, zero value otherwise. +func (d *DefaultWorkflowPermissionEnterprise) GetCanApprovePullRequestReviews() bool { + if d == nil || d.CanApprovePullRequestReviews == nil { + return false + } + return *d.CanApprovePullRequestReviews +} + +// GetDefaultWorkflowPermissions returns the DefaultWorkflowPermissions field if it's non-nil, zero value otherwise. +func (d *DefaultWorkflowPermissionEnterprise) GetDefaultWorkflowPermissions() string { + if d == nil || d.DefaultWorkflowPermissions == nil { + return "" + } + return *d.DefaultWorkflowPermissions +} + +// GetCanApprovePullRequestReviews returns the CanApprovePullRequestReviews field if it's non-nil, zero value otherwise. +func (d *DefaultWorkflowPermissionOrganization) GetCanApprovePullRequestReviews() bool { + if d == nil || d.CanApprovePullRequestReviews == nil { + return false + } + return *d.CanApprovePullRequestReviews +} + +// GetDefaultWorkflowPermissions returns the DefaultWorkflowPermissions field if it's non-nil, zero value otherwise. +func (d *DefaultWorkflowPermissionOrganization) GetDefaultWorkflowPermissions() string { + if d == nil || d.DefaultWorkflowPermissions == nil { + return "" + } + return *d.DefaultWorkflowPermissions +} + +// GetCanApprovePullRequestReviews returns the CanApprovePullRequestReviews field if it's non-nil, zero value otherwise. +func (d *DefaultWorkflowPermissionRepository) GetCanApprovePullRequestReviews() bool { + if d == nil || d.CanApprovePullRequestReviews == nil { + return false + } + return *d.CanApprovePullRequestReviews +} + +// GetDefaultWorkflowPermissions returns the DefaultWorkflowPermissions field if it's non-nil, zero value otherwise. +func (d *DefaultWorkflowPermissionRepository) GetDefaultWorkflowPermissions() string { + if d == nil || d.DefaultWorkflowPermissions == nil { + return "" + } + return *d.DefaultWorkflowPermissions +} + // GetConfirmDeleteURL returns the ConfirmDeleteURL field if it's non-nil, zero value otherwise. func (d *DeleteAnalysis) GetConfirmDeleteURL() string { if d == nil || d.ConfirmDeleteURL == nil { diff --git a/github/github-accessors_test.go b/github/github-accessors_test.go index 86c9140d55b..5c291306ab2 100644 --- a/github/github-accessors_test.go +++ b/github/github-accessors_test.go @@ -5519,6 +5519,66 @@ func TestDefaultSetupConfiguration_GetUpdatedAt(tt *testing.T) { d.GetUpdatedAt() } +func TestDefaultWorkflowPermissionEnterprise_GetCanApprovePullRequestReviews(tt *testing.T) { + var zeroValue bool + d := &DefaultWorkflowPermissionEnterprise{CanApprovePullRequestReviews: &zeroValue} + d.GetCanApprovePullRequestReviews() + d = &DefaultWorkflowPermissionEnterprise{} + d.GetCanApprovePullRequestReviews() + d = nil + d.GetCanApprovePullRequestReviews() +} + +func TestDefaultWorkflowPermissionEnterprise_GetDefaultWorkflowPermissions(tt *testing.T) { + var zeroValue string + d := &DefaultWorkflowPermissionEnterprise{DefaultWorkflowPermissions: &zeroValue} + d.GetDefaultWorkflowPermissions() + d = &DefaultWorkflowPermissionEnterprise{} + d.GetDefaultWorkflowPermissions() + d = nil + d.GetDefaultWorkflowPermissions() +} + +func TestDefaultWorkflowPermissionOrganization_GetCanApprovePullRequestReviews(tt *testing.T) { + var zeroValue bool + d := &DefaultWorkflowPermissionOrganization{CanApprovePullRequestReviews: &zeroValue} + d.GetCanApprovePullRequestReviews() + d = &DefaultWorkflowPermissionOrganization{} + d.GetCanApprovePullRequestReviews() + d = nil + d.GetCanApprovePullRequestReviews() +} + +func TestDefaultWorkflowPermissionOrganization_GetDefaultWorkflowPermissions(tt *testing.T) { + var zeroValue string + d := &DefaultWorkflowPermissionOrganization{DefaultWorkflowPermissions: &zeroValue} + d.GetDefaultWorkflowPermissions() + d = &DefaultWorkflowPermissionOrganization{} + d.GetDefaultWorkflowPermissions() + d = nil + d.GetDefaultWorkflowPermissions() +} + +func TestDefaultWorkflowPermissionRepository_GetCanApprovePullRequestReviews(tt *testing.T) { + var zeroValue bool + d := &DefaultWorkflowPermissionRepository{CanApprovePullRequestReviews: &zeroValue} + d.GetCanApprovePullRequestReviews() + d = &DefaultWorkflowPermissionRepository{} + d.GetCanApprovePullRequestReviews() + d = nil + d.GetCanApprovePullRequestReviews() +} + +func TestDefaultWorkflowPermissionRepository_GetDefaultWorkflowPermissions(tt *testing.T) { + var zeroValue string + d := &DefaultWorkflowPermissionRepository{DefaultWorkflowPermissions: &zeroValue} + d.GetDefaultWorkflowPermissions() + d = &DefaultWorkflowPermissionRepository{} + d.GetDefaultWorkflowPermissions() + d = nil + d.GetDefaultWorkflowPermissions() +} + func TestDeleteAnalysis_GetConfirmDeleteURL(tt *testing.T) { var zeroValue string d := &DeleteAnalysis{ConfirmDeleteURL: &zeroValue} diff --git a/github/repos_actions_permissions.go b/github/repos_actions_permissions.go index 2dcc367de1c..dfa94859f6b 100644 --- a/github/repos_actions_permissions.go +++ b/github/repos_actions_permissions.go @@ -23,6 +23,14 @@ func (a ActionsPermissionsRepository) String() string { return Stringify(a) } +// DefaultWorkflowPermissionRepository represents the default permissions for GitHub Actions workflows +// +// GitHub API docs: https://docs.github.com/rest/actions/permissions +type DefaultWorkflowPermissionRepository struct { + DefaultWorkflowPermissions *string `json:"default_workflow_permissions,omitempty"` + CanApprovePullRequestReviews *bool `json:"can_approve_pull_request_reviews,omitempty"` +} + // GetActionsPermissions gets the GitHub Actions permissions policy for repositories and allowed actions in a repository. // // GitHub API docs: https://docs.github.com/rest/actions/permissions#get-github-actions-permissions-for-a-repository @@ -30,6 +38,7 @@ func (a ActionsPermissionsRepository) String() string { //meta:operation GET /repos/{owner}/{repo}/actions/permissions func (s *RepositoriesService) GetActionsPermissions(ctx context.Context, owner, repo string) (*ActionsPermissionsRepository, *Response, error) { u := fmt.Sprintf("repos/%v/%v/actions/permissions", owner, repo) + req, err := s.client.NewRequest("GET", u, nil) if err != nil { return nil, nil, err @@ -64,3 +73,46 @@ func (s *RepositoriesService) EditActionsPermissions(ctx context.Context, owner, return permissions, resp, nil } + +// GetDefaultWorkflowPermissions gets the GitHub Actions default workflow permissions in a repository. +// +// GitHub API docs: https://docs.github.com/rest/actions/permissions#get-default-workflow-permissions-for-a-repository +// +//meta:operation GET /repos/{owner}/{repo}/actions/permissions/workflow +func (s *RepositoriesService) GetDefaultWorkflowPermissions(ctx context.Context, owner, repo string) (*DefaultWorkflowPermissionRepository, *Response, error) { + u := fmt.Sprintf("repos/%v/%v/actions/permissions/workflow", owner, repo) + + req, err := s.client.NewRequest("GET", u, nil) + if err != nil { + return nil, nil, err + } + + permissions := new(DefaultWorkflowPermissionRepository) + resp, err := s.client.Do(ctx, req, permissions) + if err != nil { + return nil, resp, err + } + + return permissions, resp, nil +} + +// EditDefaultWorkflowPermissions sets the GitHub Actions default workflow permissions in a repository. +// +// GitHub API docs: https://docs.github.com/rest/actions/permissions#set-default-workflow-permissions-for-a-repository +// +//meta:operation PUT /repos/{owner}/{repo}/actions/permissions/workflow +func (s *RepositoriesService) EditDefaultWorkflowPermissions(ctx context.Context, owner, repo string, defaultWorkflowPermissionRepository DefaultWorkflowPermissionRepository) (*DefaultWorkflowPermissionRepository, *Response, error) { + u := fmt.Sprintf("repos/%v/%v/actions/permissions/workflow", owner, repo) + req, err := s.client.NewRequest("PUT", u, defaultWorkflowPermissionRepository) + if err != nil { + return nil, nil, err + } + + p := new(DefaultWorkflowPermissionRepository) + resp, err := s.client.Do(ctx, req, p) + if err != nil { + return nil, resp, err + } + + return p, resp, nil +} diff --git a/github/repos_actions_permissions_test.go b/github/repos_actions_permissions_test.go index ecff0d5fbca..9959a6e7685 100644 --- a/github/repos_actions_permissions_test.go +++ b/github/repos_actions_permissions_test.go @@ -110,3 +110,81 @@ func TestActionsPermissionsRepository_Marshal(t *testing.T) { testJSONMarshal(t, u, want) } + +func TestRepositoriesService_GetDefaultWorkflowPermissions(t *testing.T) { + client, mux, _, teardown := setup() + defer teardown() + + mux.HandleFunc("/repos/o/r/actions/permissions/workflow", func(w http.ResponseWriter, r *http.Request) { + testMethod(t, r, "GET") + fmt.Fprint(w, `{ "default_workflow_permissions": "read", "can_approve_pull_request_reviews": true }`) + }) + + ctx := context.Background() + org, _, err := client.Repositories.GetDefaultWorkflowPermissions(ctx, "o", "r") + if err != nil { + t.Errorf("Repositories.GetDefaultWorkflowPermissions returned error: %v", err) + } + want := &DefaultWorkflowPermissionRepository{DefaultWorkflowPermissions: String("read"), CanApprovePullRequestReviews: Bool(true)} + if !cmp.Equal(org, want) { + t.Errorf("Repositories.GetDefaultWorkflowPermissions returned %+v, want %+v", org, want) + } + + const methodName = "GetDefaultWorkflowPermissions" + testBadOptions(t, methodName, func() (err error) { + _, _, err = client.Repositories.GetDefaultWorkflowPermissions(ctx, "\n", "\n") + return err + }) + + testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) { + got, resp, err := client.Repositories.GetDefaultWorkflowPermissions(ctx, "o", "r") + if got != nil { + t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got) + } + return resp, err + }) +} + +func TestRepositoriesService_EditDefaultWorkflowPermissions(t *testing.T) { + client, mux, _, teardown := setup() + defer teardown() + + input := &DefaultWorkflowPermissionRepository{DefaultWorkflowPermissions: String("read"), CanApprovePullRequestReviews: Bool(true)} + + mux.HandleFunc("/repos/o/r/actions/permissions/workflow", func(w http.ResponseWriter, r *http.Request) { + v := new(DefaultWorkflowPermissionRepository) + assertNilError(t, json.NewDecoder(r.Body).Decode(v)) + + testMethod(t, r, "PUT") + if !cmp.Equal(v, input) { + t.Errorf("Request body = %+v, want %+v", v, input) + } + + fmt.Fprint(w, `{ "default_workflow_permissions": "read", "can_approve_pull_request_reviews": true }`) + }) + + ctx := context.Background() + org, _, err := client.Repositories.EditDefaultWorkflowPermissions(ctx, "o", "r", *input) + if err != nil { + t.Errorf("Repositories.EditDefaultWorkflowPermissions returned error: %v", err) + } + + want := &DefaultWorkflowPermissionRepository{DefaultWorkflowPermissions: String("read"), CanApprovePullRequestReviews: Bool(true)} + if !cmp.Equal(org, want) { + t.Errorf("Repositories.EditDefaultWorkflowPermissions returned %+v, want %+v", org, want) + } + + const methodName = "EditDefaultWorkflowPermissions" + testBadOptions(t, methodName, func() (err error) { + _, _, err = client.Repositories.EditDefaultWorkflowPermissions(ctx, "\n", "\n", *input) + return err + }) + + testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) { + got, resp, err := client.Repositories.EditDefaultWorkflowPermissions(ctx, "o", "r", *input) + if got != nil { + t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got) + } + return resp, err + }) +} From 44698fed0a02be87751aab7373d594b2755f81f9 Mon Sep 17 00:00:00 2001 From: Erik Elkins Date: Mon, 22 Jan 2024 10:19:42 -0600 Subject: [PATCH 2/5] Update github/actions_permissions_enterprise.go Co-authored-by: Glenn Lewis <6598971+gmlewis@users.noreply.github.com> --- github/actions_permissions_enterprise.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/github/actions_permissions_enterprise.go b/github/actions_permissions_enterprise.go index ec0aadb1e70..3bb571874df 100644 --- a/github/actions_permissions_enterprise.go +++ b/github/actions_permissions_enterprise.go @@ -29,7 +29,7 @@ func (a ActionsPermissionsEnterprise) String() string { return Stringify(a) } -// DefaultWorkflowPermissionEnterprise represents the default permissions for GitHub Actions workflows +// DefaultWorkflowPermissionEnterprise represents the default permissions for GitHub Actions workflows for an enterprise. // // GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/actions/permissions type DefaultWorkflowPermissionEnterprise struct { From bffb78e2cc8d8bf987e4b45929283f6dd58e2713 Mon Sep 17 00:00:00 2001 From: Erik Elkins Date: Mon, 22 Jan 2024 10:19:55 -0600 Subject: [PATCH 3/5] Update github/repos_actions_permissions.go Co-authored-by: Glenn Lewis <6598971+gmlewis@users.noreply.github.com> --- github/repos_actions_permissions.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/github/repos_actions_permissions.go b/github/repos_actions_permissions.go index dfa94859f6b..244f7f4e640 100644 --- a/github/repos_actions_permissions.go +++ b/github/repos_actions_permissions.go @@ -23,7 +23,7 @@ func (a ActionsPermissionsRepository) String() string { return Stringify(a) } -// DefaultWorkflowPermissionRepository represents the default permissions for GitHub Actions workflows +// DefaultWorkflowPermissionRepository represents the default permissions for GitHub Actions workflows for a repository. // // GitHub API docs: https://docs.github.com/rest/actions/permissions type DefaultWorkflowPermissionRepository struct { From b698f477a515113030fdc6685c11aa47d2c4b2e2 Mon Sep 17 00:00:00 2001 From: Erik Elkins Date: Mon, 22 Jan 2024 10:20:01 -0600 Subject: [PATCH 4/5] Update github/actions_permissions_orgs.go Co-authored-by: Glenn Lewis <6598971+gmlewis@users.noreply.github.com> --- github/actions_permissions_orgs.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/github/actions_permissions_orgs.go b/github/actions_permissions_orgs.go index 0a9c9a3b9dd..d18988d39ed 100644 --- a/github/actions_permissions_orgs.go +++ b/github/actions_permissions_orgs.go @@ -42,7 +42,7 @@ func (a ActionsAllowed) String() string { return Stringify(a) } -// DefaultWorkflowPermissionOrganization represents the default permissions for GitHub Actions workflows +// DefaultWorkflowPermissionOrganization represents the default permissions for GitHub Actions workflows for an organization. // // GitHub API docs: https://docs.github.com/rest/actions/permissions type DefaultWorkflowPermissionOrganization struct { From c9b36c04166b559420328c8a15b560ea9cd22af4 Mon Sep 17 00:00:00 2001 From: Erik Elkins Date: Mon, 22 Jan 2024 10:22:26 -0600 Subject: [PATCH 5/5] Renaming variable --- github/actions_permissions_enterprise.go | 4 ++-- github/actions_permissions_orgs.go | 4 ++-- github/repos_actions_permissions.go | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/github/actions_permissions_enterprise.go b/github/actions_permissions_enterprise.go index 3bb571874df..a6a85aa32a5 100644 --- a/github/actions_permissions_enterprise.go +++ b/github/actions_permissions_enterprise.go @@ -241,9 +241,9 @@ func (s *ActionsService) GetDefaultWorkflowPermissionsInEnterprise(ctx context.C // GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/actions/permissions#set-default-workflow-permissions-for-an-enterprise // //meta:operation PUT /enterprises/{enterprise}/actions/permissions/workflow -func (s *ActionsService) EditDefaultWorkflowPermissionsInEnterprise(ctx context.Context, enterprise string, defaultWorkflowPermissionEnterprise DefaultWorkflowPermissionEnterprise) (*DefaultWorkflowPermissionEnterprise, *Response, error) { +func (s *ActionsService) EditDefaultWorkflowPermissionsInEnterprise(ctx context.Context, enterprise string, permissions DefaultWorkflowPermissionEnterprise) (*DefaultWorkflowPermissionEnterprise, *Response, error) { u := fmt.Sprintf("enterprises/%v/actions/permissions/workflow", enterprise) - req, err := s.client.NewRequest("PUT", u, defaultWorkflowPermissionEnterprise) + req, err := s.client.NewRequest("PUT", u, permissions) if err != nil { return nil, nil, err } diff --git a/github/actions_permissions_orgs.go b/github/actions_permissions_orgs.go index d18988d39ed..2f555f24935 100644 --- a/github/actions_permissions_orgs.go +++ b/github/actions_permissions_orgs.go @@ -254,9 +254,9 @@ func (s *ActionsService) GetDefaultWorkflowPermissionsInOrganization(ctx context // GitHub API docs: https://docs.github.com/rest/actions/permissions#set-default-workflow-permissions-for-an-organization // //meta:operation PUT /orgs/{org}/actions/permissions/workflow -func (s *ActionsService) EditDefaultWorkflowPermissionsInOrganization(ctx context.Context, org string, defaultWorkflowPermissionOrganization DefaultWorkflowPermissionOrganization) (*DefaultWorkflowPermissionOrganization, *Response, error) { +func (s *ActionsService) EditDefaultWorkflowPermissionsInOrganization(ctx context.Context, org string, permissions DefaultWorkflowPermissionOrganization) (*DefaultWorkflowPermissionOrganization, *Response, error) { u := fmt.Sprintf("orgs/%v/actions/permissions/workflow", org) - req, err := s.client.NewRequest("PUT", u, defaultWorkflowPermissionOrganization) + req, err := s.client.NewRequest("PUT", u, permissions) if err != nil { return nil, nil, err } diff --git a/github/repos_actions_permissions.go b/github/repos_actions_permissions.go index 244f7f4e640..9abd32a7837 100644 --- a/github/repos_actions_permissions.go +++ b/github/repos_actions_permissions.go @@ -101,9 +101,9 @@ func (s *RepositoriesService) GetDefaultWorkflowPermissions(ctx context.Context, // GitHub API docs: https://docs.github.com/rest/actions/permissions#set-default-workflow-permissions-for-a-repository // //meta:operation PUT /repos/{owner}/{repo}/actions/permissions/workflow -func (s *RepositoriesService) EditDefaultWorkflowPermissions(ctx context.Context, owner, repo string, defaultWorkflowPermissionRepository DefaultWorkflowPermissionRepository) (*DefaultWorkflowPermissionRepository, *Response, error) { +func (s *RepositoriesService) EditDefaultWorkflowPermissions(ctx context.Context, owner, repo string, permissions DefaultWorkflowPermissionRepository) (*DefaultWorkflowPermissionRepository, *Response, error) { u := fmt.Sprintf("repos/%v/%v/actions/permissions/workflow", owner, repo) - req, err := s.client.NewRequest("PUT", u, defaultWorkflowPermissionRepository) + req, err := s.client.NewRequest("PUT", u, permissions) if err != nil { return nil, nil, err }