Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 18 additions & 15 deletions github/enterprise_rules.go
Original file line number Diff line number Diff line change
Expand Up @@ -83,31 +83,34 @@ func (s *EnterpriseService) UpdateRepositoryRuleset(ctx context.Context, enterpr
// GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/enterprise-admin/rules#update-an-enterprise-repository-ruleset
//
//meta:operation PUT /enterprises/{enterprise}/rulesets/{ruleset_id}
func (s *EnterpriseService) UpdateRepositoryRulesetClearBypassActor(ctx context.Context, enterprise string, rulesetID int64) (*Response, error) {
u := fmt.Sprintf("enterprises/%v/rulesets/%v", enterprise, rulesetID)
// func (s *EnterpriseService) UpdateRepositoryRulesetClearBypassActor(ctx context.Context, enterprise string, rulesetID int64) (*Response, error) {
// u := fmt.Sprintf("enterprises/%v/rulesets/%v", enterprise, rulesetID)

rsClearBypassActor := rulesetClearBypassActors{
BypassActors: []*BypassActor{},
}
// rsClearBypassActor := rulesetClearBypassActors{
// BypassActors: []*BypassActor{},
// }

req, err := s.client.NewRequest("PUT", u, rsClearBypassActor)
if err != nil {
return nil, err
}
// req, err := s.client.NewRequest("PUT", u, rsClearBypassActor)
// if err != nil {
// return nil, err
// }

resp, err := s.client.Do(ctx, req, nil)
if err != nil {
return resp, err
}
// resp, err := s.client.Do(ctx, req, nil)
// if err != nil {
// return resp, err
// }

return resp, nil
}
// return resp, nil
// }

// DeleteRepositoryRuleset deletes a repository ruleset from the specified enterprise.
//
// GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/enterprise-admin/rules#delete-an-enterprise-repository-ruleset
//
// GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/enterprise-admin/rules#update-an-enterprise-repository-ruleset
//
//meta:operation DELETE /enterprises/{enterprise}/rulesets/{ruleset_id}
//meta:operation PUT /enterprises/{enterprise}/rulesets/{ruleset_id}
func (s *EnterpriseService) DeleteRepositoryRuleset(ctx context.Context, enterprise string, rulesetID int64) (*Response, error) {
u := fmt.Sprintf("enterprises/%v/rulesets/%v", enterprise, rulesetID)

Expand Down
106 changes: 58 additions & 48 deletions github/enterprise_rules_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1775,64 +1775,74 @@ func TestEnterpriseService_UpdateRepositoryRulesetClearBypassActor(t *testing.T)

mux.HandleFunc("/enterprises/e/rulesets/84", func(w http.ResponseWriter, r *http.Request) {
testMethod(t, r, "PUT")
testBody(t, r, `{"bypass_actors":[]}`+"\n")
testBody(t, r, `{"name":"","source":"","enforcement":"","bypass_actors":[]}`+"\n")
fmt.Fprint(w, `{
"id": 84,
"name": "test ruleset",
"target": "branch",
"source_type": "Enterprise",
"source": "e",
"enforcement": "active",
"bypass_mode": "none",
"conditions": {
"organization_name": {
"include": [
"important_organization",
"another_important_organization"
],
"exclude": [
"unimportant_organization"
]
},
"repository_name": {
"include": [
"important_repository",
"another_important_repository"
],
"exclude": [
"unimportant_repository"
],
"protected": true
},
"ref_name": {
"include": [
"refs/heads/main",
"refs/heads/master"
],
"exclude": [
"refs/heads/dev*"
]
}
},
"rules": [
{
"type": "creation"
}
]
}`)
"id": 84,
"name": "test ruleset",
"target": "branch",
"source_type": "Enterprise",
"source": "e",
"enforcement": "active",
"bypass_mode": "none",
"conditions": {
"organization_name": {
"include": [
"important_organization",
"another_important_organization"
],
"exclude": [
"unimportant_organization"
]
},
"repository_name": {
"include": [
"important_repository",
"another_important_repository"
],
"exclude": [
"unimportant_repository"
],
"protected": true
},
"ref_name": {
"include": [
"refs/heads/main",
"refs/heads/master"
],
"exclude": [
"refs/heads/dev*"
]
}
},
"rules": [
{
"type": "creation"
}
]
}`)
})

// ... inside TestEnterpriseService_UpdateRepositoryRulesetClearBypassActor ...

ctx := t.Context()

_, err := client.Enterprise.UpdateRepositoryRulesetClearBypassActor(ctx, "e", 84)
input := RepositoryRuleset{
BypassActors: []*BypassActor{},
}

// FIX 1: Add an extra underscore (_) to handle the 3 return values
_, _, err := client.Enterprise.UpdateRepositoryRuleset(ctx, "e", 84, input)
if err != nil {
t.Errorf("Enterprise.UpdateRepositoryRulesetClearBypassActor returned error: %v \n", err)
t.Errorf("Enterprise.UpdateRepositoryRuleset returned error: %v \n", err)
}

const methodName = "UpdateRepositoryRulesetClearBypassActor"
const methodName = "UpdateRepositoryRuleset"

// FIX 2: Adapt the return values for the failure test helper
testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
return client.Enterprise.UpdateRepositoryRulesetClearBypassActor(ctx, "e", 84)
// Discard the first return value (ruleset) so the signature matches (*Response, error)
_, resp, err := client.Enterprise.UpdateRepositoryRuleset(ctx, "e", 84, input)
return resp, err
})
}

Expand Down
33 changes: 18 additions & 15 deletions github/orgs_rules.go
Original file line number Diff line number Diff line change
Expand Up @@ -110,31 +110,34 @@ func (s *OrganizationsService) UpdateRepositoryRuleset(ctx context.Context, org
// GitHub API docs: https://docs.github.com/rest/orgs/rules#update-an-organization-repository-ruleset
//
//meta:operation PUT /orgs/{org}/rulesets/{ruleset_id}
func (s *OrganizationsService) UpdateRepositoryRulesetClearBypassActor(ctx context.Context, org string, rulesetID int64) (*Response, error) {
u := fmt.Sprintf("orgs/%v/rulesets/%v", org, rulesetID)
// func (s *OrganizationsService) UpdateRepositoryRulesetClearBypassActor(ctx context.Context, org string, rulesetID int64) (*Response, error) {
// u := fmt.Sprintf("orgs/%v/rulesets/%v", org, rulesetID)

rsClearBypassActor := rulesetClearBypassActors{
BypassActors: []*BypassActor{},
}
// rsClearBypassActor := rulesetClearBypassActors{
// BypassActors: []*BypassActor{},
// }

req, err := s.client.NewRequest("PUT", u, rsClearBypassActor)
if err != nil {
return nil, err
}
// req, err := s.client.NewRequest("PUT", u, rsClearBypassActor)
// if err != nil {
// return nil, err
// }

resp, err := s.client.Do(ctx, req, nil)
if err != nil {
return resp, err
}
// resp, err := s.client.Do(ctx, req, nil)
// if err != nil {
// return resp, err
// }

return resp, nil
}
// return resp, nil
// }

// DeleteRepositoryRuleset deletes a repository ruleset from the specified organization.
//
// GitHub API docs: https://docs.github.com/rest/orgs/rules#delete-an-organization-repository-ruleset
//
// GitHub API docs: https://docs.github.com/rest/orgs/rules#update-an-organization-repository-ruleset
//
//meta:operation DELETE /orgs/{org}/rulesets/{ruleset_id}
//meta:operation PUT /orgs/{org}/rulesets/{ruleset_id}
func (s *OrganizationsService) DeleteRepositoryRuleset(ctx context.Context, org string, rulesetID int64) (*Response, error) {
u := fmt.Sprintf("orgs/%v/rulesets/%v", org, rulesetID)

Expand Down
90 changes: 51 additions & 39 deletions github/orgs_rules_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1593,55 +1593,67 @@ func TestOrganizationsService_UpdateRepositoryRulesetClearBypassActor(t *testing

mux.HandleFunc("/orgs/o/rulesets/21", func(w http.ResponseWriter, r *http.Request) {
testMethod(t, r, "PUT")
testBody(t, r, `{"bypass_actors":[]}`+"\n")

// VERIFICATION: Check that sending an empty slice results in "bypass_actors": []
testBody(t, r, `{"name":"","source":"","enforcement":"","bypass_actors":[]}`+"\n")

fmt.Fprint(w, `{
"id": 21,
"name": "test ruleset",
"target": "branch",
"source_type": "Organization",
"source": "o",
"enforcement": "active",
"bypass_mode": "none",
"conditions": {
"repository_name": {
"include": [
"important_repository",
"another_important_repository"
],
"exclude": [
"unimportant_repository"
],
"protected": true
},
"ref_name": {
"include": [
"refs/heads/main",
"refs/heads/master"
],
"exclude": [
"refs/heads/dev*"
]
}
},
"rules": [
{
"type": "creation"
}
]
}`)
"id": 21,
"name": "test ruleset",
"target": "branch",
"source_type": "Organization",
"source": "o",
"enforcement": "active",
"bypass_mode": "none",
"conditions": {
"repository_name": {
"include": [
"important_repository",
"another_important_repository"
],
"exclude": [
"unimportant_repository"
],
"protected": true
},
"ref_name": {
"include": [
"refs/heads/main",
"refs/heads/master"
],
"exclude": [
"refs/heads/dev*"
]
}
},
"rules": [
{
"type": "creation"
}
]
}`)
})

// ... inside TestOrganizationsService_UpdateRepositoryRulesetClearBypassActor ...

ctx := t.Context()

_, err := client.Organizations.UpdateRepositoryRulesetClearBypassActor(ctx, "o", 21)
input := RepositoryRuleset{
BypassActors: []*BypassActor{},
}

// FIX 1: Add an extra underscore (_)
_, _, err := client.Organizations.UpdateRepositoryRuleset(ctx, "o", 21, input)
if err != nil {
t.Errorf("Organizations.UpdateRepositoryRulesetClearBypassActor returned error: %v \n", err)
t.Errorf("Organizations.UpdateRepositoryRuleset returned error: %v \n", err)
}

const methodName = "UpdateRepositoryRulesetClearBypassActor"
const methodName = "UpdateRepositoryRuleset"

// FIX 2: Adapt the return values
testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
return client.Organizations.UpdateRepositoryRulesetClearBypassActor(ctx, "o", 21)
_, resp, err := client.Organizations.UpdateRepositoryRuleset(ctx, "o", 21, input)
return resp, err
})
}

Expand Down
Loading
Loading