From dc075fc1c0fb57cdf5207e2fec45389fbd04f4af Mon Sep 17 00:00:00 2001 From: Gergely Nagy Date: Tue, 16 Jul 2024 11:09:54 +0200 Subject: [PATCH] Load attachments for `/issues/comments/{id}` The `/repos/{owner}/{repo}/issues/comments/{id}` API endpoint returns an `assets` field, but the route handler did not load attachments, thus, the field was never populated. This patch fixes that, and adds a test to exercise it. The test fails without the fix. This addresses a bug discovered in Codeberg/Community#1607. Signed-off-by: Gergely Nagy (cherry picked from commit fc4f914e71b44bbdf0fee84acf5f540578dc08c7) --- routers/api/v1/repo/issue_comment.go | 5 +++++ tests/integration/api_comment_attachment_test.go | 11 +++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/routers/api/v1/repo/issue_comment.go b/routers/api/v1/repo/issue_comment.go index fbd37e00cb..1ff755c058 100644 --- a/routers/api/v1/repo/issue_comment.go +++ b/routers/api/v1/repo/issue_comment.go @@ -462,6 +462,11 @@ func GetIssueComment(ctx *context.APIContext) { return } + if err := comment.LoadAttachments(ctx); err != nil { + ctx.Error(http.StatusInternalServerError, "LoadAttachments", err) + return + } + ctx.JSON(http.StatusOK, convert.ToAPIComment(ctx, ctx.Repo.Repository, comment)) } diff --git a/tests/integration/api_comment_attachment_test.go b/tests/integration/api_comment_attachment_test.go index 1b3cae91e2..eac9965191 100644 --- a/tests/integration/api_comment_attachment_test.go +++ b/tests/integration/api_comment_attachment_test.go @@ -46,12 +46,19 @@ func TestAPIGetCommentAttachment(t *testing.T) { session := loginUser(t, repoOwner.Name) token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeReadIssue) - req := NewRequestf(t, "GET", "/api/v1/repos/%s/%s/issues/comments/%d/assets/%d", repoOwner.Name, repo.Name, comment.ID, attachment.ID). + req := NewRequestf(t, "GET", "/api/v1/repos/%s/%s/issues/comments/%d", repoOwner.Name, repo.Name, comment.ID). + AddTokenAuth(token) + resp := session.MakeRequest(t, req, http.StatusOK) + var apiComment api.Comment + DecodeJSON(t, resp, &apiComment) + assert.NotEmpty(t, apiComment.Attachments) + + req = NewRequestf(t, "GET", "/api/v1/repos/%s/%s/issues/comments/%d/assets/%d", repoOwner.Name, repo.Name, comment.ID, attachment.ID). AddTokenAuth(token) session.MakeRequest(t, req, http.StatusOK) req = NewRequestf(t, "GET", "/api/v1/repos/%s/%s/issues/comments/%d/assets/%d", repoOwner.Name, repo.Name, comment.ID, attachment.ID). AddTokenAuth(token) - resp := session.MakeRequest(t, req, http.StatusOK) + resp = session.MakeRequest(t, req, http.StatusOK) var apiAttachment api.Attachment DecodeJSON(t, resp, &apiAttachment)