diff options
author | Lunny Xiao | 2019-05-06 22:03:35 +0800 |
---|---|---|
committer | Lauris BH | 2019-05-06 17:03:35 +0300 |
commit | 96eb99ea558a983dbbc7d2ecbe52dbaeca7e344b (patch) | |
tree | 8b9b00faed9fa90f4c0d555380c585ed93a67364 | |
parent | 83560bf9d0e141b1498e724d0e68d462625e4624 (diff) |
fix 500 when reviewer is deleted with integration tests (#6856) (#6860)
-rw-r--r-- | integrations/pull_review_test.go | 20 | ||||
-rw-r--r-- | models/fixtures/comment.yml | 12 | ||||
-rw-r--r-- | models/fixtures/review.yml | 9 | ||||
-rw-r--r-- | models/issue_comment.go | 1 | ||||
-rw-r--r-- | routers/repo/issue.go | 9 |
5 files changed, 49 insertions, 2 deletions
diff --git a/integrations/pull_review_test.go b/integrations/pull_review_test.go new file mode 100644 index 000000000..b4ddc0e74 --- /dev/null +++ b/integrations/pull_review_test.go @@ -0,0 +1,20 @@ +// Copyright 2019 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. +package integrations + +import ( + "net/http" + "testing" +) + +func TestPullView_ReviewerMissed(t *testing.T) { + prepareTestEnv(t) + session := loginUser(t, "user1") + + req := NewRequest(t, "GET", "/pulls") + session.MakeRequest(t, req, http.StatusOK) + + req = NewRequest(t, "GET", "/user2/repo1/pulls/3") + session.MakeRequest(t, req, http.StatusOK) +} diff --git a/models/fixtures/comment.yml b/models/fixtures/comment.yml index 6abd26973..864313cac 100644 --- a/models/fixtures/comment.yml +++ b/models/fixtures/comment.yml @@ -52,3 +52,15 @@ tree_path: "README.md" created_unix: 946684812 invalidated: true + +- + id: 7 + type: 21 # code comment + poster_id: 100 + issue_id: 3 + content: "a review from a deleted user" + line: -4 + review_id: 10 + tree_path: "README.md" + created_unix: 946684812 + invalidated: true
\ No newline at end of file diff --git a/models/fixtures/review.yml b/models/fixtures/review.yml index 515f0d77f..a0122dea9 100644 --- a/models/fixtures/review.yml +++ b/models/fixtures/review.yml @@ -70,3 +70,12 @@ content: "New review 3 rejected" updated_unix: 946684810 created_unix: 946684810 + +- + id: 10 + type: 3 + reviewer_id: 100 + issue_id: 3 + content: "a deleted user's review" + updated_unix: 946684810 + created_unix: 946684810
\ No newline at end of file diff --git a/models/issue_comment.go b/models/issue_comment.go index c3654460f..e58e2e4bc 100644 --- a/models/issue_comment.go +++ b/models/issue_comment.go @@ -419,6 +419,7 @@ func (c *Comment) loadReview(e Engine) (err error) { return err } } + c.Review.Issue = c.Issue return nil } diff --git a/routers/repo/issue.go b/routers/repo/issue.go index 33d3ec6a7..e1c92b216 100644 --- a/routers/repo/issue.go +++ b/routers/repo/issue.go @@ -753,6 +753,8 @@ func ViewIssue(ctx *context.Context) { // Render comments and and fetch participants. participants[0] = issue.Poster for _, comment = range issue.Comments { + comment.Issue = issue + if err := comment.LoadPoster(); err != nil { ctx.ServerError("LoadPoster", err) return @@ -830,8 +832,11 @@ func ViewIssue(ctx *context.Context) { continue } if err = comment.Review.LoadAttributes(); err != nil { - ctx.ServerError("Review.LoadAttributes", err) - return + if !models.IsErrUserNotExist(err) { + ctx.ServerError("Review.LoadAttributes", err) + return + } + comment.Review.Reviewer = models.NewGhostUser() } if err = comment.Review.LoadCodeComments(); err != nil { ctx.ServerError("Review.LoadCodeComments", err) |