From 07f6a18f152a1ce4aa3e35e4933de21f693478a1 Mon Sep 17 00:00:00 2001 From: JamBalaya56562 Date: Sat, 17 Oct 2026 04:30:22 +0900 Subject: [PATCH 1/2] fix: Treat `BusinessTeam` as a regular `Team` for Environment reviewers --- github/repos_environments.go | 9 ++++++++- github/repos_environments_test.go | 10 ++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/github/repos_environments.go b/github/repos_environments.go index 9ed3aa2f054..aaa8ee6193a 100644 --- a/github/repos_environments.go +++ b/github/repos_environments.go @@ -102,10 +102,17 @@ func (r *RequiredReviewer) UnmarshalJSON(data []byte) error { return err } r.Reviewer = reviewer.Reviewer + case "BusinessTeam": // BusinessTeam is the type returned for Enterprise Teams, but we will treat it as a Team type + reviewer.Reviewer = &Team{} + if err := json.Unmarshal(data, &reviewer); err != nil { + return err + } + r.Type = new("Team") // Change the type to "Team" for compatibility + r.Reviewer = reviewer.Reviewer default: r.Type = nil r.Reviewer = nil - return fmt.Errorf("reviewer.Type is %T, not a string of 'User' or 'Team', unable to unmarshal", reviewer.Type) + return fmt.Errorf("reviewer.Type is %T, not a string of 'User', 'Team' or 'BusinessTeam', unable to unmarshal", reviewer.Type) } return nil diff --git a/github/repos_environments_test.go b/github/repos_environments_test.go index 8ee98ab6193..39e4d4b96e5 100644 --- a/github/repos_environments_test.go +++ b/github/repos_environments_test.go @@ -31,6 +31,11 @@ func TestRequiredReviewer_UnmarshalJSON(t *testing.T) { wantRule: []*RequiredReviewer{{Type: new("Team"), Reviewer: &Team{ID: new(int64(1)), Name: new("Justice League")}}}, wantError: false, }, + "Enterprise Team Reviewer": { + data: []byte(`[{"type": "BusinessTeam", "reviewer": {"id": 1, "name": "Justice League"}}]`), + wantRule: []*RequiredReviewer{{Type: new("Team"), Reviewer: &Team{ID: new(int64(1)), Name: new("Justice League")}}}, + wantError: false, + }, "Both Types Reviewer": { data: []byte(`[{"type": "User", "reviewer": {"id": 1,"login": "octocat"}},{"type": "Team", "reviewer": {"id": 1, "name": "Justice League"}}]`), wantRule: []*RequiredReviewer{{Type: new("User"), Reviewer: &User{ID: new(int64(1)), Login: new("octocat")}}, {Type: new("Team"), Reviewer: &Team{ID: new(int64(1)), Name: new("Justice League")}}}, @@ -71,6 +76,11 @@ func TestRequiredReviewer_UnmarshalJSON(t *testing.T) { wantRule: []*RequiredReviewer{{Type: new("Team"), Reviewer: nil}}, wantError: true, }, + "Wrong ID Type in Enterprise Team Object": { + data: []byte(`[{"type": "BusinessTeam", "reviewer": {"id": "string"}}]`), + wantRule: []*RequiredReviewer{{Type: new("BusinessTeam"), Reviewer: nil}}, + wantError: true, + }, "Wrong Type of Reviewer": { data: []byte(`[{"type": "Cat", "reviewer": {"id": 1,"login": "octocat"}}]`), wantRule: []*RequiredReviewer{{Type: nil, Reviewer: nil}}, From 09d05a2d8f952c44a99f0e2074edae1ab4e5b223 Mon Sep 17 00:00:00 2001 From: JamBalaya56562 Date: Sat, 17 Oct 2026 04:56:44 +0900 Subject: [PATCH 2/2] fix: Report the unknown reviewer type in the `RequiredReviewer` unmarshal error --- github/repos_environments.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/github/repos_environments.go b/github/repos_environments.go index aaa8ee6193a..e1dee798dd7 100644 --- a/github/repos_environments.go +++ b/github/repos_environments.go @@ -112,7 +112,7 @@ func (r *RequiredReviewer) UnmarshalJSON(data []byte) error { default: r.Type = nil r.Reviewer = nil - return fmt.Errorf("reviewer.Type is %T, not a string of 'User', 'Team' or 'BusinessTeam', unable to unmarshal", reviewer.Type) + return fmt.Errorf("reviewer.Type is %q, not a string of 'User', 'Team' or 'BusinessTeam', unable to unmarshal", *reviewer.Type) } return nil