fix: never set Poster or Assignee to nil

When a user is not found for whatever reason, it must be mapped to the
GhostUser.

Fixes: https://codeberg.org/forgejo/forgejo/issues/4718
This commit is contained in:
Earl Warren 2024-07-29 11:56:50 +02:00
parent 5bbc9ef97c
commit e6786db393
No known key found for this signature in database
GPG key ID: 0579CB2928A78A00
6 changed files with 188 additions and 24 deletions

View file

@ -35,6 +35,39 @@ func TestOAuth2Application_LoadUser(t *testing.T) {
assert.NotNil(t, user)
}
func TestIsValidUserID(t *testing.T) {
assert.False(t, user_model.IsValidUserID(-30))
assert.False(t, user_model.IsValidUserID(0))
assert.True(t, user_model.IsValidUserID(user_model.GhostUserID))
assert.True(t, user_model.IsValidUserID(user_model.ActionsUserID))
assert.True(t, user_model.IsValidUserID(200))
}
func TestGetUserFromMap(t *testing.T) {
id := int64(200)
idMap := map[int64]*user_model.User{
id: {ID: id},
}
ghostID := int64(user_model.GhostUserID)
actionsID := int64(user_model.ActionsUserID)
actualID, actualUser := user_model.GetUserFromMap(-20, idMap)
assert.Equal(t, ghostID, actualID)
assert.Equal(t, ghostID, actualUser.ID)
actualID, actualUser = user_model.GetUserFromMap(0, idMap)
assert.Equal(t, ghostID, actualID)
assert.Equal(t, ghostID, actualUser.ID)
actualID, actualUser = user_model.GetUserFromMap(ghostID, idMap)
assert.Equal(t, ghostID, actualID)
assert.Equal(t, ghostID, actualUser.ID)
actualID, actualUser = user_model.GetUserFromMap(actionsID, idMap)
assert.Equal(t, actionsID, actualID)
assert.Equal(t, actionsID, actualUser.ID)
}
func TestGetUserByName(t *testing.T) {
defer tests.AddFixtures("models/user/fixtures/")()
assert.NoError(t, unittest.PrepareTestDatabase())