diff --git a/github/actions_permissions_enterprise.go b/github/actions_permissions_enterprise.go index 7e10444af47..a6a85aa32a5 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 for an enterprise. +// +// 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, permissions DefaultWorkflowPermissionEnterprise) (*DefaultWorkflowPermissionEnterprise, *Response, error) { + u := fmt.Sprintf("enterprises/%v/actions/permissions/workflow", enterprise) + req, err := s.client.NewRequest("PUT", u, permissions) + 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..2f555f24935 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 for an organization. +// +// 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, permissions DefaultWorkflowPermissionOrganization) (*DefaultWorkflowPermissionOrganization, *Response, error) { + u := fmt.Sprintf("orgs/%v/actions/permissions/workflow", org) + req, err := s.client.NewRequest("PUT", u, permissions) + 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..9abd32a7837 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 for a repository. +// +// 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, permissions DefaultWorkflowPermissionRepository) (*DefaultWorkflowPermissionRepository, *Response, error) { + u := fmt.Sprintf("repos/%v/%v/actions/permissions/workflow", owner, repo) + req, err := s.client.NewRequest("PUT", u, permissions) + 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 + }) +}