[GITEA] Fix NPE in ToPullReviewList
				
					
				
			- Add condition to ensure doer isn't nil when using it. - Added unit test. - Resolves #2055 (cherry picked from commit8f1a74fb29) (cherry picked from commit60ac881776) (cherry picked from commit5fdc461ac5) (cherry picked from commit70623e8da1)
This commit is contained in:
		
							parent
							
								
									1388e7c7be
								
							
						
					
					
						commit
						1d5153aaf6
					
				
					 2 changed files with 29 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -66,7 +66,7 @@ func ToPullReviewList(ctx context.Context, rl []*issues_model.Review, doer *user
 | 
			
		|||
	result := make([]*api.PullReview, 0, len(rl))
 | 
			
		||||
	for i := range rl {
 | 
			
		||||
		// show pending reviews only for the user who created them
 | 
			
		||||
		if rl[i].Type == issues_model.ReviewTypePending && !(doer.IsAdmin || doer.ID == rl[i].ReviewerID) {
 | 
			
		||||
		if rl[i].Type == issues_model.ReviewTypePending && (doer == nil || !(doer.IsAdmin || doer.ID == rl[i].ReviewerID)) {
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
		r, err := ToPullReview(ctx, rl[i], doer)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -12,6 +12,7 @@ import (
 | 
			
		|||
	access_model "code.gitea.io/gitea/models/perm/access"
 | 
			
		||||
	repo_model "code.gitea.io/gitea/models/repo"
 | 
			
		||||
	"code.gitea.io/gitea/models/unittest"
 | 
			
		||||
	user_model "code.gitea.io/gitea/models/user"
 | 
			
		||||
	"code.gitea.io/gitea/modules/git"
 | 
			
		||||
	"code.gitea.io/gitea/modules/structs"
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -47,3 +48,30 @@ func TestPullRequest_APIFormat(t *testing.T) {
 | 
			
		|||
	assert.Nil(t, apiPullRequest.Head.Repository)
 | 
			
		||||
	assert.EqualValues(t, -1, apiPullRequest.Head.RepoID)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestPullReviewList(t *testing.T) {
 | 
			
		||||
	assert.NoError(t, unittest.PrepareTestDatabase())
 | 
			
		||||
 | 
			
		||||
	t.Run("Pending review", func(t *testing.T) {
 | 
			
		||||
		reviewer := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2})
 | 
			
		||||
		review := unittest.AssertExistsAndLoadBean(t, &issues_model.Review{ID: 6, ReviewerID: reviewer.ID})
 | 
			
		||||
		rl := []*issues_model.Review{review}
 | 
			
		||||
 | 
			
		||||
		t.Run("Anonymous", func(t *testing.T) {
 | 
			
		||||
			prList, err := ToPullReviewList(db.DefaultContext, rl, nil)
 | 
			
		||||
			assert.NoError(t, err)
 | 
			
		||||
			assert.Empty(t, prList)
 | 
			
		||||
		})
 | 
			
		||||
		t.Run("Reviewer", func(t *testing.T) {
 | 
			
		||||
			prList, err := ToPullReviewList(db.DefaultContext, rl, reviewer)
 | 
			
		||||
			assert.NoError(t, err)
 | 
			
		||||
			assert.Len(t, prList, 1)
 | 
			
		||||
		})
 | 
			
		||||
		t.Run("Admin", func(t *testing.T) {
 | 
			
		||||
			adminUser := unittest.AssertExistsAndLoadBean(t, &user_model.User{IsAdmin: true}, unittest.Cond("id != ?", reviewer.ID))
 | 
			
		||||
			prList, err := ToPullReviewList(db.DefaultContext, rl, adminUser)
 | 
			
		||||
			assert.NoError(t, err)
 | 
			
		||||
			assert.Len(t, prList, 1)
 | 
			
		||||
		})
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue