Skip to content

Commit

Permalink
Fix API Bug (fail on empty assignees) (#8873)
Browse files Browse the repository at this point in the history
* keep sure if assigneeIDs == nil -> do nothing

* fix #8872

* Revert "keep sure if assigneeIDs == nil -> do nothing"

-> go handle it itself preaty well

This reverts commit e72d941.

* clarity comparson

Co-Authored-By: guillep2k <18600385+guillep2k@users.noreply.github.com>

* simplify

* Update models/issue_assignees.go

Co-Authored-By: guillep2k <18600385+guillep2k@users.noreply.github.com>

* Update issue_assignees.go

* simplify more

* add --if oneAssignee != ""-- again

* Update models/issue_assignees.go

Co-Authored-By: guillep2k <18600385+guillep2k@users.noreply.github.com>

* CI.restart()

* Update issue_assignees.go

* add Test for GetUserIDsByNames

* add Test for MakeIDsFromAPIAssigneesToAdd

* fix test
  • Loading branch information
6543 authored and lunny committed Nov 10, 2019
1 parent daab245 commit 31416a5
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 14 deletions.
25 changes: 11 additions & 14 deletions models/issue_assignees.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ package models
import (
"fmt"

"code.gitea.io/gitea/modules/util"

"xorm.io/xorm"
)

Expand Down Expand Up @@ -171,25 +173,20 @@ func toggleUserAssignee(e *xorm.Session, issue *Issue, assigneeID int64) (remove
// MakeIDsFromAPIAssigneesToAdd returns an array with all assignee IDs
func MakeIDsFromAPIAssigneesToAdd(oneAssignee string, multipleAssignees []string) (assigneeIDs []int64, err error) {

var requestAssignees []string

// Keeping the old assigning method for compatibility reasons
if oneAssignee != "" {

// Prevent double adding assignees
var isDouble bool
for _, assignee := range multipleAssignees {
if assignee == oneAssignee {
isDouble = true
break
}
}
if oneAssignee != "" && !util.IsStringInSlice(oneAssignee, multipleAssignees) {
requestAssignees = append(requestAssignees, oneAssignee)
}

if !isDouble {
multipleAssignees = append(multipleAssignees, oneAssignee)
}
//Prevent empty assignees
if len(multipleAssignees) > 0 && multipleAssignees[0] != "" {
requestAssignees = append(requestAssignees, multipleAssignees...)
}

// Get the IDs of all assignees
assigneeIDs, err = GetUserIDsByNames(multipleAssignees, false)
assigneeIDs, err = GetUserIDsByNames(requestAssignees, false)

return
}
21 changes: 21 additions & 0 deletions models/issue_assignees_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,3 +59,24 @@ func TestUpdateAssignee(t *testing.T) {
assert.NoError(t, err)
assert.False(t, isAssigned)
}

func TestMakeIDsFromAPIAssigneesToAdd(t *testing.T) {
IDs, err := MakeIDsFromAPIAssigneesToAdd("", []string{""})
assert.NoError(t, err)
assert.Equal(t, []int64{}, IDs)

IDs, err = MakeIDsFromAPIAssigneesToAdd("", []string{"none_existing_user"})
assert.Error(t, err)

IDs, err = MakeIDsFromAPIAssigneesToAdd("user1", []string{"user1"})
assert.NoError(t, err)
assert.Equal(t, []int64{1}, IDs)

IDs, err = MakeIDsFromAPIAssigneesToAdd("user2", []string{""})
assert.NoError(t, err)
assert.Equal(t, []int64{2}, IDs)

IDs, err = MakeIDsFromAPIAssigneesToAdd("", []string{"user1", "user2"})
assert.NoError(t, err)
assert.Equal(t, []int64{1, 2}, IDs)
}
13 changes: 13 additions & 0 deletions models/user_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -373,3 +373,16 @@ func TestCreateUser_Issue5882(t *testing.T) {
assert.NoError(t, DeleteUser(v.user))
}
}

func TestGetUserIDsByNames(t *testing.T) {

//ignore non existing
IDs, err := GetUserIDsByNames([]string{"user1", "user2", "none_existing_user"}, true)
assert.NoError(t, err)
assert.Equal(t, []int64{1, 2}, IDs)

//ignore non existing
IDs, err = GetUserIDsByNames([]string{"user1", "do_not_exist"}, false)
assert.Error(t, err)
assert.Equal(t, []int64(nil), IDs)
}

0 comments on commit 31416a5

Please sign in to comment.