@@ -104,7 +104,7 @@ func TestAPIAddIssueLabels(t *testing.T) {
104104 urlStr := fmt .Sprintf ("/api/v1/repos/%s/%s/issues/%d/labels" ,
105105 repo .OwnerName , repo .Name , issue .Index )
106106 req := NewRequestWithJSON (t , "POST" , urlStr , & api.IssueLabelsOption {
107- Labels : []int64 {1 , 2 },
107+ Labels : []any {1 , 2 },
108108 }).AddTokenAuth (token )
109109 resp := MakeRequest (t , req , http .StatusOK )
110110 var apiLabels []* api.Label
@@ -114,6 +114,32 @@ func TestAPIAddIssueLabels(t *testing.T) {
114114 unittest .AssertExistsAndLoadBean (t , & issues_model.IssueLabel {IssueID : issue .ID , LabelID : 2 })
115115}
116116
117+ func TestAPIAddIssueLabelsWithLabelNames (t * testing.T ) {
118+ assert .NoError (t , unittest .LoadFixtures ())
119+
120+ repo := unittest .AssertExistsAndLoadBean (t , & repo_model.Repository {ID : 1 })
121+ issue := unittest .AssertExistsAndLoadBean (t , & issues_model.Issue {RepoID : repo .ID })
122+ owner := unittest .AssertExistsAndLoadBean (t , & user_model.User {ID : repo .OwnerID })
123+
124+ session := loginUser (t , owner .Name )
125+ token := getTokenForLoggedInUser (t , session , auth_model .AccessTokenScopeWriteIssue )
126+ urlStr := fmt .Sprintf ("/api/v1/repos/%s/%s/issues/%d/labels" ,
127+ repo .OwnerName , repo .Name , issue .Index )
128+ req := NewRequestWithJSON (t , "POST" , urlStr , & api.IssueLabelsOption {
129+ Labels : []any {"label1" , "label2" },
130+ }).AddTokenAuth (token )
131+ resp := MakeRequest (t , req , http .StatusOK )
132+ var apiLabels []* api.Label
133+ DecodeJSON (t , resp , & apiLabels )
134+ assert .Len (t , apiLabels , unittest .GetCount (t , & issues_model.IssueLabel {IssueID : issue .ID }))
135+
136+ var apiLabelNames []string
137+ for _ , label := range apiLabels {
138+ apiLabelNames = append (apiLabelNames , label .Name )
139+ }
140+ assert .ElementsMatch (t , apiLabelNames , []string {"label1" , "label2" })
141+ }
142+
117143func TestAPIReplaceIssueLabels (t * testing.T ) {
118144 assert .NoError (t , unittest .LoadFixtures ())
119145
@@ -127,7 +153,7 @@ func TestAPIReplaceIssueLabels(t *testing.T) {
127153 urlStr := fmt .Sprintf ("/api/v1/repos/%s/%s/issues/%d/labels" ,
128154 owner .Name , repo .Name , issue .Index )
129155 req := NewRequestWithJSON (t , "PUT" , urlStr , & api.IssueLabelsOption {
130- Labels : []int64 {label .ID },
156+ Labels : []any {label .ID },
131157 }).AddTokenAuth (token )
132158 resp := MakeRequest (t , req , http .StatusOK )
133159 var apiLabels []* api.Label
@@ -140,6 +166,29 @@ func TestAPIReplaceIssueLabels(t *testing.T) {
140166 unittest .AssertExistsAndLoadBean (t , & issues_model.IssueLabel {IssueID : issue .ID , LabelID : label .ID })
141167}
142168
169+ func TestAPIReplaceIssueLabelsWithLabelNames (t * testing.T ) {
170+ assert .NoError (t , unittest .LoadFixtures ())
171+
172+ repo := unittest .AssertExistsAndLoadBean (t , & repo_model.Repository {ID : 1 })
173+ issue := unittest .AssertExistsAndLoadBean (t , & issues_model.Issue {RepoID : repo .ID })
174+ label := unittest .AssertExistsAndLoadBean (t , & issues_model.Label {RepoID : repo .ID })
175+ owner := unittest .AssertExistsAndLoadBean (t , & user_model.User {ID : repo .OwnerID })
176+
177+ session := loginUser (t , owner .Name )
178+ token := getTokenForLoggedInUser (t , session , auth_model .AccessTokenScopeWriteIssue )
179+ urlStr := fmt .Sprintf ("/api/v1/repos/%s/%s/issues/%d/labels" ,
180+ owner .Name , repo .Name , issue .Index )
181+ req := NewRequestWithJSON (t , "PUT" , urlStr , & api.IssueLabelsOption {
182+ Labels : []any {label .Name },
183+ }).AddTokenAuth (token )
184+ resp := MakeRequest (t , req , http .StatusOK )
185+ var apiLabels []* api.Label
186+ DecodeJSON (t , resp , & apiLabels )
187+ if assert .Len (t , apiLabels , 1 ) {
188+ assert .EqualValues (t , label .Name , apiLabels [0 ].Name )
189+ }
190+ }
191+
143192func TestAPIModifyOrgLabels (t * testing.T ) {
144193 assert .NoError (t , unittest .LoadFixtures ())
145194
0 commit comments