@@ -104,7 +104,7 @@ func TestAPIAddIssueLabels(t *testing.T) {
104
104
urlStr := fmt .Sprintf ("/api/v1/repos/%s/%s/issues/%d/labels" ,
105
105
repo .OwnerName , repo .Name , issue .Index )
106
106
req := NewRequestWithJSON (t , "POST" , urlStr , & api.IssueLabelsOption {
107
- Labels : []int64 {1 , 2 },
107
+ Labels : []any {1 , 2 },
108
108
}).AddTokenAuth (token )
109
109
resp := MakeRequest (t , req , http .StatusOK )
110
110
var apiLabels []* api.Label
@@ -114,6 +114,32 @@ func TestAPIAddIssueLabels(t *testing.T) {
114
114
unittest .AssertExistsAndLoadBean (t , & issues_model.IssueLabel {IssueID : issue .ID , LabelID : 2 })
115
115
}
116
116
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
+
117
143
func TestAPIReplaceIssueLabels (t * testing.T ) {
118
144
assert .NoError (t , unittest .LoadFixtures ())
119
145
@@ -127,7 +153,7 @@ func TestAPIReplaceIssueLabels(t *testing.T) {
127
153
urlStr := fmt .Sprintf ("/api/v1/repos/%s/%s/issues/%d/labels" ,
128
154
owner .Name , repo .Name , issue .Index )
129
155
req := NewRequestWithJSON (t , "PUT" , urlStr , & api.IssueLabelsOption {
130
- Labels : []int64 {label .ID },
156
+ Labels : []any {label .ID },
131
157
}).AddTokenAuth (token )
132
158
resp := MakeRequest (t , req , http .StatusOK )
133
159
var apiLabels []* api.Label
@@ -140,6 +166,29 @@ func TestAPIReplaceIssueLabels(t *testing.T) {
140
166
unittest .AssertExistsAndLoadBean (t , & issues_model.IssueLabel {IssueID : issue .ID , LabelID : label .ID })
141
167
}
142
168
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
+
143
192
func TestAPIModifyOrgLabels (t * testing.T ) {
144
193
assert .NoError (t , unittest .LoadFixtures ())
145
194
0 commit comments