Skip to content

Commit 9fac0c4

Browse files
authored
fix: Handle missing reviewer type in RequiredReviewer unmarshal (#4270)
1 parent 3215e03 commit 9fac0c4

2 files changed

Lines changed: 15 additions & 0 deletions

File tree

github/repos_environments.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ package github
88
import (
99
"context"
1010
"encoding/json"
11+
"errors"
1112
"fmt"
1213
"net/http"
1314
)
@@ -82,6 +83,10 @@ func (r *RequiredReviewer) UnmarshalJSON(data []byte) error {
8283
}
8384

8485
r.Type = reviewer.Type
86+
if reviewer.Type == nil {
87+
r.Reviewer = nil
88+
return errors.New("reviewer.Type is nil, not a string of 'User' or 'Team', unable to unmarshal")
89+
}
8590

8691
switch *reviewer.Type {
8792
case "User":

github/repos_environments_test.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,16 @@ func TestRequiredReviewer_UnmarshalJSON(t *testing.T) {
5151
wantRule: []*RequiredReviewer{{Type: nil, Reviewer: nil}},
5252
wantError: true,
5353
},
54+
"Missing Type in Reviewer Object": {
55+
data: []byte(`[{"reviewer": {"id": 1}}]`),
56+
wantRule: []*RequiredReviewer{{Type: nil, Reviewer: nil}},
57+
wantError: true,
58+
},
59+
"Null Type in Reviewer Object": {
60+
data: []byte(`[{"type": null, "reviewer": {"id": 1}}]`),
61+
wantRule: []*RequiredReviewer{{Type: nil, Reviewer: nil}},
62+
wantError: true,
63+
},
5464
"Wrong ID Type in User Object": {
5565
data: []byte(`[{"type": "User", "reviewer": {"id": "string"}}]`),
5666
wantRule: []*RequiredReviewer{{Type: Ptr("User"), Reviewer: nil}},

0 commit comments

Comments
 (0)