From 31e7aa61b18024a8462f7d045d2698ee7ba34399 Mon Sep 17 00:00:00 2001 From: patka Date: Wed, 19 Feb 2025 07:08:45 +0000 Subject: [PATCH] Reduce links in chat notifications to avoid multiple previews (#6908) Some messages had multiple links resulting in multiple previews per message. The superfluous links have been removed leaving only the most important link. All info the other links provided can be immediately accessed through the main link that is left over. The fork and push messages still have multiple links because from the former you want to see where the fork originates from, the latter has a link per commit. Resolves #162 ## Checklist The [contributor guide](https://forgejo.org/docs/next/contributor/) contains information that will be helpful to first time contributors. There also are a few [conditions for merging Pull Requests in Forgejo repositories](https://codeberg.org/forgejo/governance/src/branch/main/PullRequestsAgreement.md). You are also welcome to join the [Forgejo development chatroom](https://matrix.to/#/#forgejo-development:matrix.org). ### Tests - I added test coverage for Go changes... - [x] in their respective `*_test.go` for unit tests. - [ ] in the `tests/integration` directory if it involves interactions with a live Forgejo server. - I added test coverage for JavaScript changes... - [ ] in `web_src/js/*.test.js` if it can be unit tested. - [ ] in `tests/e2e/*.test.e2e.js` if it requires interactions with a live Forgejo server (see also the [developer guide for JavaScript testing](https://codeberg.org/forgejo/forgejo/src/branch/forgejo/tests/e2e/README.md#end-to-end-tests)). ### Documentation - [ ] I created a pull request [to the documentation](https://codeberg.org/forgejo/docs) to explain to Forgejo users how to use this change. - [x] I did not document these changes and I do not expect someone else to do it. ### Release notes - [ ] I do not want this change to show in the release notes. - [x] I want the title to show in the release notes with a link to this pull request. - [ ] I want the content of the `release-notes/.md` to be be used for the release notes instead of the title. Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6908 Reviewed-by: Gusted Co-authored-by: patka Co-committed-by: patka --- services/webhook/deliver_test.go | 4 +- services/webhook/general.go | 91 ++++++++++++++----------------- services/webhook/matrix.go | 24 +++----- services/webhook/matrix_test.go | 60 ++++++++++---------- services/webhook/slack.go | 16 ++---- services/webhook/slack_test.go | 30 +++++----- services/webhook/telegram.go | 14 ++--- services/webhook/telegram_test.go | 28 +++++----- 8 files changed, 120 insertions(+), 147 deletions(-) diff --git a/services/webhook/deliver_test.go b/services/webhook/deliver_test.go index 21af3c7116..17b7bf7f3e 100644 --- a/services/webhook/deliver_test.go +++ b/services/webhook/deliver_test.go @@ -150,12 +150,12 @@ func TestWebhookDeliverHookTask(t *testing.T) { require.NoError(t, err) assert.Equal(t, `{"data": 42}`, string(body)) - case "/webhook/6db5dc1e282529a8c162c7fe93dd2667494eeb51": + case "/webhook/86aaa4d69df5aa487cb0148af4ae7e546933057b": // Version 2 assert.Equal(t, "application/json", r.Header.Get("Content-Type")) body, err := io.ReadAll(r.Body) require.NoError(t, err) - assert.Len(t, body, 2147) + assert.Len(t, body, 1909) default: w.WriteHeader(404) diff --git a/services/webhook/general.go b/services/webhook/general.go index c41f58fe8d..ef68f2885b 100644 --- a/services/webhook/general.go +++ b/services/webhook/general.go @@ -92,7 +92,6 @@ func getIssuesCommentInfo(p *api.IssueCommentPayload) (title, link, by, operator } func getIssuesPayloadInfo(p *api.IssuePayload, linkFormatter linkFormatter, withSender bool) (string, string, string, int) { - repoLink := linkFormatter(p.Repository.HTMLURL, p.Repository.FullName) issueTitle := fmt.Sprintf("#%d %s", p.Index, p.Issue.Title) titleLink := linkFormatter(fmt.Sprintf("%s/issues/%d", p.Repository.HTMLURL, p.Index), issueTitle) var text string @@ -100,39 +99,37 @@ func getIssuesPayloadInfo(p *api.IssuePayload, linkFormatter linkFormatter, with switch p.Action { case api.HookIssueOpened: - text = fmt.Sprintf("[%s] Issue opened: %s", repoLink, titleLink) + text = fmt.Sprintf("[%s] Issue opened: %s", p.Repository.FullName, titleLink) color = orangeColor case api.HookIssueClosed: - text = fmt.Sprintf("[%s] Issue closed: %s", repoLink, titleLink) + text = fmt.Sprintf("[%s] Issue closed: %s", p.Repository.FullName, titleLink) color = redColor case api.HookIssueReOpened: - text = fmt.Sprintf("[%s] Issue re-opened: %s", repoLink, titleLink) + text = fmt.Sprintf("[%s] Issue re-opened: %s", p.Repository.FullName, titleLink) case api.HookIssueEdited: - text = fmt.Sprintf("[%s] Issue edited: %s", repoLink, titleLink) + text = fmt.Sprintf("[%s] Issue edited: %s", p.Repository.FullName, titleLink) case api.HookIssueAssigned: list := make([]string, len(p.Issue.Assignees)) for i, user := range p.Issue.Assignees { list[i] = linkFormatter(setting.AppURL+url.PathEscape(user.UserName), user.UserName) } - text = fmt.Sprintf("[%s] Issue assigned to %s: %s", repoLink, strings.Join(list, ", "), titleLink) + text = fmt.Sprintf("[%s] Issue assigned to %s: %s", p.Repository.FullName, strings.Join(list, ", "), titleLink) color = greenColor case api.HookIssueUnassigned: - text = fmt.Sprintf("[%s] Issue unassigned: %s", repoLink, titleLink) + text = fmt.Sprintf("[%s] Issue unassigned: %s", p.Repository.FullName, titleLink) case api.HookIssueLabelUpdated: - text = fmt.Sprintf("[%s] Issue labels updated: %s", repoLink, titleLink) + text = fmt.Sprintf("[%s] Issue labels updated: %s", p.Repository.FullName, titleLink) case api.HookIssueLabelCleared: - text = fmt.Sprintf("[%s] Issue labels cleared: %s", repoLink, titleLink) + text = fmt.Sprintf("[%s] Issue labels cleared: %s", p.Repository.FullName, titleLink) case api.HookIssueSynchronized: - text = fmt.Sprintf("[%s] Issue synchronized: %s", repoLink, titleLink) + text = fmt.Sprintf("[%s] Issue synchronized: %s", p.Repository.FullName, titleLink) case api.HookIssueMilestoned: - mileStoneLink := fmt.Sprintf("%s/milestone/%d", p.Repository.HTMLURL, p.Issue.Milestone.ID) - text = fmt.Sprintf("[%s] Issue milestoned to %s: %s", repoLink, - linkFormatter(mileStoneLink, p.Issue.Milestone.Title), titleLink) + text = fmt.Sprintf("[%s] Issue milestoned to %s: %s", p.Repository.FullName, p.Issue.Milestone.Title, titleLink) case api.HookIssueDemilestoned: - text = fmt.Sprintf("[%s] Issue milestone cleared: %s", repoLink, titleLink) + text = fmt.Sprintf("[%s] Issue milestone cleared: %s", p.Repository.FullName, titleLink) } if withSender { - text += fmt.Sprintf(" by %s", linkFormatter(setting.AppURL+url.PathEscape(p.Sender.UserName), p.Sender.UserName)) + text += fmt.Sprintf(" by %s", p.Sender.UserName) } var attachmentText string @@ -144,7 +141,6 @@ func getIssuesPayloadInfo(p *api.IssuePayload, linkFormatter linkFormatter, with } func getPullRequestPayloadInfo(p *api.PullRequestPayload, linkFormatter linkFormatter, withSender bool) (string, string, string, int) { - repoLink := linkFormatter(p.Repository.HTMLURL, p.Repository.FullName) issueTitle := fmt.Sprintf("#%d %s", p.Index, p.PullRequest.Title) titleLink := linkFormatter(p.PullRequest.URL, issueTitle) var text string @@ -153,83 +149,79 @@ func getPullRequestPayloadInfo(p *api.PullRequestPayload, linkFormatter linkForm switch p.Action { case api.HookIssueOpened: - text = fmt.Sprintf("[%s] Pull request opened: %s", repoLink, titleLink) + text = fmt.Sprintf("[%s] Pull request opened: %s", p.Repository.FullName, titleLink) attachmentText = p.PullRequest.Body color = greenColor case api.HookIssueClosed: if p.PullRequest.HasMerged { - text = fmt.Sprintf("[%s] Pull request merged: %s", repoLink, titleLink) + text = fmt.Sprintf("[%s] Pull request merged: %s", p.Repository.FullName, titleLink) color = purpleColor } else { - text = fmt.Sprintf("[%s] Pull request closed: %s", repoLink, titleLink) + text = fmt.Sprintf("[%s] Pull request closed: %s", p.Repository.FullName, titleLink) color = redColor } case api.HookIssueReOpened: - text = fmt.Sprintf("[%s] Pull request re-opened: %s", repoLink, titleLink) + text = fmt.Sprintf("[%s] Pull request re-opened: %s", p.Repository.FullName, titleLink) case api.HookIssueEdited: - text = fmt.Sprintf("[%s] Pull request edited: %s", repoLink, titleLink) + text = fmt.Sprintf("[%s] Pull request edited: %s", p.Repository.FullName, titleLink) attachmentText = p.PullRequest.Body case api.HookIssueAssigned: list := make([]string, len(p.PullRequest.Assignees)) for i, user := range p.PullRequest.Assignees { list[i] = linkFormatter(setting.AppURL+user.UserName, user.UserName) } - text = fmt.Sprintf("[%s] Pull request assigned to %s: %s", repoLink, + text = fmt.Sprintf("[%s] Pull request assigned to %s: %s", p.Repository.FullName, strings.Join(list, ", "), titleLink) color = greenColor case api.HookIssueUnassigned: - text = fmt.Sprintf("[%s] Pull request unassigned: %s", repoLink, titleLink) + text = fmt.Sprintf("[%s] Pull request unassigned: %s", p.Repository.FullName, titleLink) case api.HookIssueLabelUpdated: - text = fmt.Sprintf("[%s] Pull request labels updated: %s", repoLink, titleLink) + text = fmt.Sprintf("[%s] Pull request labels updated: %s", p.Repository.FullName, titleLink) case api.HookIssueLabelCleared: - text = fmt.Sprintf("[%s] Pull request labels cleared: %s", repoLink, titleLink) + text = fmt.Sprintf("[%s] Pull request labels cleared: %s", p.Repository.FullName, titleLink) case api.HookIssueSynchronized: - text = fmt.Sprintf("[%s] Pull request synchronized: %s", repoLink, titleLink) + text = fmt.Sprintf("[%s] Pull request synchronized: %s", p.Repository.FullName, titleLink) case api.HookIssueMilestoned: - mileStoneLink := fmt.Sprintf("%s/milestone/%d", p.Repository.HTMLURL, p.PullRequest.Milestone.ID) - text = fmt.Sprintf("[%s] Pull request milestoned to %s: %s", repoLink, - linkFormatter(mileStoneLink, p.PullRequest.Milestone.Title), titleLink) + text = fmt.Sprintf("[%s] Pull request milestoned to %s: %s", p.Repository.FullName, p.PullRequest.Milestone.Title, titleLink) case api.HookIssueDemilestoned: - text = fmt.Sprintf("[%s] Pull request milestone cleared: %s", repoLink, titleLink) + text = fmt.Sprintf("[%s] Pull request milestone cleared: %s", p.Repository.FullName, titleLink) case api.HookIssueReviewed: - text = fmt.Sprintf("[%s] Pull request reviewed: %s", repoLink, titleLink) + text = fmt.Sprintf("[%s] Pull request reviewed: %s", p.Repository.FullName, titleLink) attachmentText = p.Review.Content case api.HookIssueReviewRequested: - text = fmt.Sprintf("[%s] Pull request review requested: %s", repoLink, titleLink) + text = fmt.Sprintf("[%s] Pull request review requested: %s", p.Repository.FullName, titleLink) case api.HookIssueReviewRequestRemoved: - text = fmt.Sprintf("[%s] Pull request review request removed: %s", repoLink, titleLink) + text = fmt.Sprintf("[%s] Pull request review request removed: %s", p.Repository.FullName, titleLink) } if withSender { - text += fmt.Sprintf(" by %s", linkFormatter(setting.AppURL+p.Sender.UserName, p.Sender.UserName)) + text += fmt.Sprintf(" by %s", p.Sender.UserName) } return text, issueTitle, attachmentText, color } func getReleasePayloadInfo(p *api.ReleasePayload, linkFormatter linkFormatter, withSender bool) (text string, color int) { - repoLink := linkFormatter(p.Repository.HTMLURL, p.Repository.FullName) refLink := linkFormatter(p.Repository.HTMLURL+"/releases/tag/"+util.PathEscapeSegments(p.Release.TagName), p.Release.TagName) switch p.Action { case api.HookReleasePublished: - text = fmt.Sprintf("[%s] Release created: %s", repoLink, refLink) + text = fmt.Sprintf("[%s] Release created: %s", p.Repository.FullName, refLink) color = greenColor case api.HookReleaseUpdated: - text = fmt.Sprintf("[%s] Release updated: %s", repoLink, refLink) + text = fmt.Sprintf("[%s] Release updated: %s", p.Repository.FullName, refLink) color = yellowColor case api.HookReleaseDeleted: - text = fmt.Sprintf("[%s] Release deleted: %s", repoLink, refLink) + text = fmt.Sprintf("[%s] Release deleted: %s", p.Repository.FullName, refLink) color = redColor } if withSender { - text += fmt.Sprintf(" by %s", linkFormatter(setting.AppURL+url.PathEscape(p.Sender.UserName), p.Sender.UserName)) + text += fmt.Sprintf(" by %s", p.Sender.UserName) } return text, color } func getWikiPayloadInfo(p *api.WikiPayload, linkFormatter linkFormatter, withSender bool) (string, int, string) { - repoLink := linkFormatter(p.Repository.HTMLURL, p.Repository.FullName) pageLink := linkFormatter(p.Repository.HTMLURL+"/wiki/"+url.PathEscape(p.Page), p.Page) var text string @@ -237,12 +229,12 @@ func getWikiPayloadInfo(p *api.WikiPayload, linkFormatter linkFormatter, withSen switch p.Action { case api.HookWikiCreated: - text = fmt.Sprintf("[%s] New wiki page '%s'", repoLink, pageLink) + text = fmt.Sprintf("[%s] New wiki page '%s'", p.Repository.FullName, pageLink) case api.HookWikiEdited: - text = fmt.Sprintf("[%s] Wiki page '%s' edited", repoLink, pageLink) + text = fmt.Sprintf("[%s] Wiki page '%s' edited", p.Repository.FullName, pageLink) color = yellowColor case api.HookWikiDeleted: - text = fmt.Sprintf("[%s] Wiki page '%s' deleted", repoLink, pageLink) + text = fmt.Sprintf("[%s] Wiki page '%s' deleted", p.Repository.FullName, pageLink) color = redColor } @@ -251,14 +243,13 @@ func getWikiPayloadInfo(p *api.WikiPayload, linkFormatter linkFormatter, withSen } if withSender { - text += fmt.Sprintf(" by %s", linkFormatter(setting.AppURL+url.PathEscape(p.Sender.UserName), p.Sender.UserName)) + text += fmt.Sprintf(" by %s", p.Sender.UserName) } return text, color, pageLink } func getIssueCommentPayloadInfo(p *api.IssueCommentPayload, linkFormatter linkFormatter, withSender bool) (string, string, int) { - repoLink := linkFormatter(p.Repository.HTMLURL, p.Repository.FullName) issueTitle := fmt.Sprintf("#%d %s", p.Issue.Index, p.Issue.Title) var text, typ, titleLink string @@ -274,20 +265,20 @@ func getIssueCommentPayloadInfo(p *api.IssueCommentPayload, linkFormatter linkFo switch p.Action { case api.HookIssueCommentCreated: - text = fmt.Sprintf("[%s] New comment on %s %s", repoLink, typ, titleLink) + text = fmt.Sprintf("[%s] New comment on %s %s", p.Repository.FullName, typ, titleLink) if p.IsPull { color = greenColorLight } else { color = orangeColorLight } case api.HookIssueCommentEdited: - text = fmt.Sprintf("[%s] Comment edited on %s %s", repoLink, typ, titleLink) + text = fmt.Sprintf("[%s] Comment edited on %s %s", p.Repository.FullName, typ, titleLink) case api.HookIssueCommentDeleted: - text = fmt.Sprintf("[%s] Comment deleted on %s %s", repoLink, typ, titleLink) + text = fmt.Sprintf("[%s] Comment deleted on %s %s", p.Repository.FullName, typ, titleLink) color = redColor } if withSender { - text += fmt.Sprintf(" by %s", linkFormatter(setting.AppURL+url.PathEscape(p.Sender.UserName), p.Sender.UserName)) + text += fmt.Sprintf(" by %s", p.Sender.UserName) } return text, issueTitle, color @@ -305,7 +296,7 @@ func getPackagePayloadInfo(p *api.PackagePayload, linkFormatter linkFormatter, w color = redColor } if withSender { - text += fmt.Sprintf(" by %s", linkFormatter(setting.AppURL+url.PathEscape(p.Sender.UserName), p.Sender.UserName)) + text += fmt.Sprintf(" by %s", p.Sender.UserName) } return text, color diff --git a/services/webhook/matrix.go b/services/webhook/matrix.go index e70e7a2f8e..4b33bfb1d3 100644 --- a/services/webhook/matrix.go +++ b/services/webhook/matrix.go @@ -9,6 +9,7 @@ import ( "crypto/sha1" "encoding/hex" "fmt" + "html" "html/template" "net/http" "net/url" @@ -19,7 +20,6 @@ import ( "code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/json" "code.gitea.io/gitea/modules/log" - "code.gitea.io/gitea/modules/setting" api "code.gitea.io/gitea/modules/structs" "code.gitea.io/gitea/modules/svg" "code.gitea.io/gitea/modules/util" @@ -143,9 +143,8 @@ func (m matrixConvertor) newPayload(text string, commits ...*api.PayloadCommit) // Create implements payloadConvertor Create method func (m matrixConvertor) Create(p *api.CreatePayload) (MatrixPayload, error) { - repoLink := htmlLinkFormatter(p.Repo.HTMLURL, p.Repo.FullName) refLink := MatrixLinkToRef(p.Repo.HTMLURL, p.Ref) - text := fmt.Sprintf("[%s:%s] %s created by %s", repoLink, refLink, p.RefType, p.Sender.UserName) + text := fmt.Sprintf("[%s:%s] %s created by %s", p.Repo.FullName, refLink, p.RefType, p.Sender.UserName) return m.newPayload(text) } @@ -206,9 +205,8 @@ func (m matrixConvertor) Push(p *api.PushPayload) (MatrixPayload, error) { commitDesc = fmt.Sprintf("%d commits", p.TotalCommits) } - repoLink := htmlLinkFormatter(p.Repo.HTMLURL, p.Repo.FullName) - branchLink := MatrixLinkToRef(p.Repo.HTMLURL, p.Ref) - text := fmt.Sprintf("[%s] %s pushed %s to %s:
", repoLink, p.Pusher.UserName, commitDesc, branchLink) + refName := html.EscapeString(git.RefName(p.Ref).ShortName()) + text := fmt.Sprintf("[%s] %s pushed %s to %s:
", p.Repo.FullName, p.Pusher.UserName, commitDesc, refName) // for each commit, generate a new line text for i, commit := range p.Commits { @@ -231,10 +229,8 @@ func (m matrixConvertor) PullRequest(p *api.PullRequestPayload) (MatrixPayload, // Review implements payloadConvertor Review method func (m matrixConvertor) Review(p *api.PullRequestPayload, event webhook_module.HookEventType) (MatrixPayload, error) { - senderLink := htmlLinkFormatter(setting.AppURL+url.PathEscape(p.Sender.UserName), p.Sender.UserName) title := fmt.Sprintf("#%d %s", p.Index, p.PullRequest.Title) titleLink := htmlLinkFormatter(p.PullRequest.HTMLURL, title) - repoLink := htmlLinkFormatter(p.Repository.HTMLURL, p.Repository.FullName) var text string if p.Action == api.HookIssueReviewed { @@ -243,7 +239,7 @@ func (m matrixConvertor) Review(p *api.PullRequestPayload, event webhook_module. return MatrixPayload{}, err } - text = fmt.Sprintf("[%s] Pull request review %s: %s by %s", repoLink, action, titleLink, senderLink) + text = fmt.Sprintf("[%s] Pull request review %s: %s by %s", p.Repository.FullName, action, titleLink, p.Sender.UserName) } return m.newPayload(text) @@ -251,29 +247,27 @@ func (m matrixConvertor) Review(p *api.PullRequestPayload, event webhook_module. // Repository implements payloadConvertor Repository method func (m matrixConvertor) Repository(p *api.RepositoryPayload) (MatrixPayload, error) { - senderLink := htmlLinkFormatter(setting.AppURL+p.Sender.UserName, p.Sender.UserName) repoLink := htmlLinkFormatter(p.Repository.HTMLURL, p.Repository.FullName) var text string switch p.Action { case api.HookRepoCreated: - text = fmt.Sprintf("[%s] Repository created by %s", repoLink, senderLink) + text = fmt.Sprintf("[%s] Repository created by %s", repoLink, p.Sender.UserName) case api.HookRepoDeleted: - text = fmt.Sprintf("[%s] Repository deleted by %s", repoLink, senderLink) + text = fmt.Sprintf("[%s] Repository deleted by %s", repoLink, p.Sender.UserName) } return m.newPayload(text) } func (m matrixConvertor) Package(p *api.PackagePayload) (MatrixPayload, error) { - senderLink := htmlLinkFormatter(setting.AppURL+p.Sender.UserName, p.Sender.UserName) packageLink := htmlLinkFormatter(p.Package.HTMLURL, p.Package.Name) var text string switch p.Action { case api.HookPackageCreated: - text = fmt.Sprintf("[%s] Package published by %s", packageLink, senderLink) + text = fmt.Sprintf("[%s] Package published by %s", packageLink, p.Sender.UserName) case api.HookPackageDeleted: - text = fmt.Sprintf("[%s] Package deleted by %s", packageLink, senderLink) + text = fmt.Sprintf("[%s] Package deleted by %s", packageLink, p.Sender.UserName) } return m.newPayload(text) diff --git a/services/webhook/matrix_test.go b/services/webhook/matrix_test.go index 6cedb15ef3..a941486f9f 100644 --- a/services/webhook/matrix_test.go +++ b/services/webhook/matrix_test.go @@ -28,8 +28,8 @@ func TestMatrixPayload(t *testing.T) { require.NoError(t, err) require.NotNil(t, pl) - assert.Equal(t, "[[test/repo](http://localhost:3000/test/repo):[test](http://localhost:3000/test/repo/src/branch/test)] branch created by user1", pl.Body) - assert.Equal(t, `[test/repo:test] branch created by user1`, pl.FormattedBody) + assert.Equal(t, "[test/repo:[test](http://localhost:3000/test/repo/src/branch/test)] branch created by user1", pl.Body) + assert.Equal(t, `[test/repo:test] branch created by user1`, pl.FormattedBody) }) t.Run("Delete", func(t *testing.T) { @@ -61,8 +61,8 @@ func TestMatrixPayload(t *testing.T) { require.NoError(t, err) require.NotNil(t, pl) - assert.Equal(t, "[[test/repo](http://localhost:3000/test/repo)] user1 pushed 2 commits to [test](http://localhost:3000/test/repo/src/branch/test):\n[2020558](http://localhost:3000/test/repo/commit/2020558fe2e34debb818a514715839cabd25e778): commit message - user1\n[2020558](http://localhost:3000/test/repo/commit/2020558fe2e34debb818a514715839cabd25e778): commit message - user1", pl.Body) - assert.Equal(t, `[test/repo] user1 pushed 2 commits to test:
2020558: commit message - user1
2020558: commit message - user1`, pl.FormattedBody) + assert.Equal(t, "[test/repo] user1 pushed 2 commits to test:\n[2020558](http://localhost:3000/test/repo/commit/2020558fe2e34debb818a514715839cabd25e778): commit message - user1\n[2020558](http://localhost:3000/test/repo/commit/2020558fe2e34debb818a514715839cabd25e778): commit message - user1", pl.Body) + assert.Equal(t, `[test/repo] user1 pushed 2 commits to test:
2020558: commit message - user1
2020558: commit message - user1`, pl.FormattedBody) }) t.Run("Issue", func(t *testing.T) { @@ -73,16 +73,16 @@ func TestMatrixPayload(t *testing.T) { require.NoError(t, err) require.NotNil(t, pl) - assert.Equal(t, "[[test/repo](http://localhost:3000/test/repo)] Issue opened: [#2 crash](http://localhost:3000/test/repo/issues/2) by [user1](https://try.gitea.io/user1)", pl.Body) - assert.Equal(t, `[test/repo] Issue opened: #2 crash by user1`, pl.FormattedBody) + assert.Equal(t, "[test/repo] Issue opened: [#2 crash](http://localhost:3000/test/repo/issues/2) by user1", pl.Body) + assert.Equal(t, `[test/repo] Issue opened: #2 crash by user1`, pl.FormattedBody) p.Action = api.HookIssueClosed pl, err = mc.Issue(p) require.NoError(t, err) require.NotNil(t, pl) - assert.Equal(t, "[[test/repo](http://localhost:3000/test/repo)] Issue closed: [#2 crash](http://localhost:3000/test/repo/issues/2) by [user1](https://try.gitea.io/user1)", pl.Body) - assert.Equal(t, `[test/repo] Issue closed: #2 crash by user1`, pl.FormattedBody) + assert.Equal(t, "[test/repo] Issue closed: [#2 crash](http://localhost:3000/test/repo/issues/2) by user1", pl.Body) + assert.Equal(t, `[test/repo] Issue closed: #2 crash by user1`, pl.FormattedBody) }) t.Run("IssueComment", func(t *testing.T) { @@ -92,8 +92,8 @@ func TestMatrixPayload(t *testing.T) { require.NoError(t, err) require.NotNil(t, pl) - assert.Equal(t, "[[test/repo](http://localhost:3000/test/repo)] New comment on issue [#2 crash](http://localhost:3000/test/repo/issues/2) by [user1](https://try.gitea.io/user1)", pl.Body) - assert.Equal(t, `[test/repo] New comment on issue #2 crash by user1`, pl.FormattedBody) + assert.Equal(t, "[test/repo] New comment on issue [#2 crash](http://localhost:3000/test/repo/issues/2) by user1", pl.Body) + assert.Equal(t, `[test/repo] New comment on issue #2 crash by user1`, pl.FormattedBody) }) t.Run("PullRequest", func(t *testing.T) { @@ -103,8 +103,8 @@ func TestMatrixPayload(t *testing.T) { require.NoError(t, err) require.NotNil(t, pl) - assert.Equal(t, "[[test/repo](http://localhost:3000/test/repo)] Pull request opened: [#12 Fix bug](http://localhost:3000/test/repo/pulls/12) by [user1](https://try.gitea.io/user1)", pl.Body) - assert.Equal(t, `[test/repo] Pull request opened: #12 Fix bug by user1`, pl.FormattedBody) + assert.Equal(t, "[test/repo] Pull request opened: [#12 Fix bug](http://localhost:3000/test/repo/pulls/12) by user1", pl.Body) + assert.Equal(t, `[test/repo] Pull request opened: #12 Fix bug by user1`, pl.FormattedBody) }) t.Run("PullRequestComment", func(t *testing.T) { @@ -114,8 +114,8 @@ func TestMatrixPayload(t *testing.T) { require.NoError(t, err) require.NotNil(t, pl) - assert.Equal(t, "[[test/repo](http://localhost:3000/test/repo)] New comment on pull request [#12 Fix bug](http://localhost:3000/test/repo/pulls/12) by [user1](https://try.gitea.io/user1)", pl.Body) - assert.Equal(t, `[test/repo] New comment on pull request #12 Fix bug by user1`, pl.FormattedBody) + assert.Equal(t, "[test/repo] New comment on pull request [#12 Fix bug](http://localhost:3000/test/repo/pulls/12) by user1", pl.Body) + assert.Equal(t, `[test/repo] New comment on pull request #12 Fix bug by user1`, pl.FormattedBody) }) t.Run("Review", func(t *testing.T) { @@ -126,8 +126,8 @@ func TestMatrixPayload(t *testing.T) { require.NoError(t, err) require.NotNil(t, pl) - assert.Equal(t, "[[test/repo](http://localhost:3000/test/repo)] Pull request review approved: [#12 Fix bug](http://localhost:3000/test/repo/pulls/12) by [user1](https://try.gitea.io/user1)", pl.Body) - assert.Equal(t, `[test/repo] Pull request review approved: #12 Fix bug by user1`, pl.FormattedBody) + assert.Equal(t, "[test/repo] Pull request review approved: [#12 Fix bug](http://localhost:3000/test/repo/pulls/12) by user1", pl.Body) + assert.Equal(t, `[test/repo] Pull request review approved: #12 Fix bug by user1`, pl.FormattedBody) }) t.Run("Repository", func(t *testing.T) { @@ -137,8 +137,8 @@ func TestMatrixPayload(t *testing.T) { require.NoError(t, err) require.NotNil(t, pl) - assert.Equal(t, `[[test/repo](http://localhost:3000/test/repo)] Repository created by [user1](https://try.gitea.io/user1)`, pl.Body) - assert.Equal(t, `[test/repo] Repository created by user1`, pl.FormattedBody) + assert.Equal(t, `[[test/repo](http://localhost:3000/test/repo)] Repository created by user1`, pl.Body) + assert.Equal(t, `[test/repo] Repository created by user1`, pl.FormattedBody) }) t.Run("Package", func(t *testing.T) { @@ -148,8 +148,8 @@ func TestMatrixPayload(t *testing.T) { require.NoError(t, err) require.NotNil(t, pl) - assert.Equal(t, `[[GiteaContainer](http://localhost:3000/user1/-/packages/container/GiteaContainer/latest)] Package published by [user1](https://try.gitea.io/user1)`, pl.Body) - assert.Equal(t, `[GiteaContainer] Package published by user1`, pl.FormattedBody) + assert.Equal(t, `[[GiteaContainer](http://localhost:3000/user1/-/packages/container/GiteaContainer/latest)] Package published by user1`, pl.Body) + assert.Equal(t, `[GiteaContainer] Package published by user1`, pl.FormattedBody) }) t.Run("Wiki", func(t *testing.T) { @@ -160,24 +160,24 @@ func TestMatrixPayload(t *testing.T) { require.NoError(t, err) require.NotNil(t, pl) - assert.Equal(t, "[[test/repo](http://localhost:3000/test/repo)] New wiki page '[index](http://localhost:3000/test/repo/wiki/index)' (Wiki change comment) by [user1](https://try.gitea.io/user1)", pl.Body) - assert.Equal(t, `[test/repo] New wiki page 'index' (Wiki change comment) by user1`, pl.FormattedBody) + assert.Equal(t, "[test/repo] New wiki page '[index](http://localhost:3000/test/repo/wiki/index)' (Wiki change comment) by user1", pl.Body) + assert.Equal(t, `[test/repo] New wiki page 'index' (Wiki change comment) by user1`, pl.FormattedBody) p.Action = api.HookWikiEdited pl, err = mc.Wiki(p) require.NoError(t, err) require.NotNil(t, pl) - assert.Equal(t, "[[test/repo](http://localhost:3000/test/repo)] Wiki page '[index](http://localhost:3000/test/repo/wiki/index)' edited (Wiki change comment) by [user1](https://try.gitea.io/user1)", pl.Body) - assert.Equal(t, `[test/repo] Wiki page 'index' edited (Wiki change comment) by user1`, pl.FormattedBody) + assert.Equal(t, "[test/repo] Wiki page '[index](http://localhost:3000/test/repo/wiki/index)' edited (Wiki change comment) by user1", pl.Body) + assert.Equal(t, `[test/repo] Wiki page 'index' edited (Wiki change comment) by user1`, pl.FormattedBody) p.Action = api.HookWikiDeleted pl, err = mc.Wiki(p) require.NoError(t, err) require.NotNil(t, pl) - assert.Equal(t, "[[test/repo](http://localhost:3000/test/repo)] Wiki page '[index](http://localhost:3000/test/repo/wiki/index)' deleted by [user1](https://try.gitea.io/user1)", pl.Body) - assert.Equal(t, `[test/repo] Wiki page 'index' deleted by user1`, pl.FormattedBody) + assert.Equal(t, "[test/repo] Wiki page '[index](http://localhost:3000/test/repo/wiki/index)' deleted by user1", pl.Body) + assert.Equal(t, `[test/repo] Wiki page 'index' deleted by user1`, pl.FormattedBody) }) t.Run("Release", func(t *testing.T) { @@ -187,8 +187,8 @@ func TestMatrixPayload(t *testing.T) { require.NoError(t, err) require.NotNil(t, pl) - assert.Equal(t, "[[test/repo](http://localhost:3000/test/repo)] Release created: [v1.0](http://localhost:3000/test/repo/releases/tag/v1.0) by [user1](https://try.gitea.io/user1)", pl.Body) - assert.Equal(t, `[test/repo] Release created: v1.0 by user1`, pl.FormattedBody) + assert.Equal(t, "[test/repo] Release created: [v1.0](http://localhost:3000/test/repo/releases/tag/v1.0) by user1", pl.Body) + assert.Equal(t, `[test/repo] Release created: v1.0 by user1`, pl.FormattedBody) }) } @@ -217,12 +217,12 @@ func TestMatrixJSONPayload(t *testing.T) { require.NoError(t, err) assert.Equal(t, "PUT", req.Method) - assert.Equal(t, "/_matrix/client/v3/rooms/ROOM_ID/send/m.room.message/6db5dc1e282529a8c162c7fe93dd2667494eeb51", req.URL.Path) + assert.Equal(t, "/_matrix/client/v3/rooms/ROOM_ID/send/m.room.message/86aaa4d69df5aa487cb0148af4ae7e546933057b", req.URL.Path) assert.Equal(t, "application/json", req.Header.Get("Content-Type")) var body MatrixPayload err = json.NewDecoder(req.Body).Decode(&body) require.NoError(t, err) - assert.Equal(t, "[[test/repo](http://localhost:3000/test/repo)] user1 pushed 2 commits to [test](http://localhost:3000/test/repo/src/branch/test):\n[2020558](http://localhost:3000/test/repo/commit/2020558fe2e34debb818a514715839cabd25e778): commit message - user1\n[2020558](http://localhost:3000/test/repo/commit/2020558fe2e34debb818a514715839cabd25e778): commit message - user1", body.Body) + assert.Equal(t, "[test/repo] user1 pushed 2 commits to test:\n[2020558](http://localhost:3000/test/repo/commit/2020558fe2e34debb818a514715839cabd25e778): commit message - user1\n[2020558](http://localhost:3000/test/repo/commit/2020558fe2e34debb818a514715839cabd25e778): commit message - user1", body.Body) } func Test_getTxnID(t *testing.T) { diff --git a/services/webhook/slack.go b/services/webhook/slack.go index 1fa33444f3..5ef3e4e06f 100644 --- a/services/webhook/slack.go +++ b/services/webhook/slack.go @@ -15,7 +15,6 @@ import ( "code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/json" "code.gitea.io/gitea/modules/log" - "code.gitea.io/gitea/modules/setting" api "code.gitea.io/gitea/modules/structs" webhook_module "code.gitea.io/gitea/modules/webhook" gitea_context "code.gitea.io/gitea/services/context" @@ -145,9 +144,8 @@ func SlackLinkToRef(repoURL, ref string) string { // Create implements payloadConvertor Create method func (s slackConvertor) Create(p *api.CreatePayload) (SlackPayload, error) { - repoLink := SlackLinkFormatter(p.Repo.HTMLURL, p.Repo.FullName) refLink := SlackLinkToRef(p.Repo.HTMLURL, p.Ref) - text := fmt.Sprintf("[%s:%s] %s created by %s", repoLink, refLink, p.RefType, p.Sender.UserName) + text := fmt.Sprintf("[%s:%s] %s created by %s", p.Repo.FullName, refLink, p.RefType, p.Sender.UserName) return s.createPayload(text, nil), nil } @@ -240,9 +238,8 @@ func (s slackConvertor) Push(p *api.PushPayload) (SlackPayload, error) { commitString = commitDesc } - repoLink := SlackLinkFormatter(p.Repo.HTMLURL, p.Repo.FullName) branchLink := SlackLinkToRef(p.Repo.HTMLURL, p.Ref) - text := fmt.Sprintf("[%s:%s] %s pushed by %s", repoLink, branchLink, commitString, p.Pusher.UserName) + text := fmt.Sprintf("[%s:%s] %s pushed by %s", p.Repo.FullName, branchLink, commitString, p.Pusher.UserName) var attachmentText string // for each commit, generate attachment text @@ -283,10 +280,8 @@ func (s slackConvertor) PullRequest(p *api.PullRequestPayload) (SlackPayload, er // Review implements payloadConvertor Review method func (s slackConvertor) Review(p *api.PullRequestPayload, event webhook_module.HookEventType) (SlackPayload, error) { - senderLink := SlackLinkFormatter(setting.AppURL+p.Sender.UserName, p.Sender.UserName) title := fmt.Sprintf("#%d %s", p.Index, p.PullRequest.Title) titleLink := fmt.Sprintf("%s/pulls/%d", p.Repository.HTMLURL, p.Index) - repoLink := SlackLinkFormatter(p.Repository.HTMLURL, p.Repository.FullName) var text string if p.Action == api.HookIssueReviewed { @@ -295,7 +290,7 @@ func (s slackConvertor) Review(p *api.PullRequestPayload, event webhook_module.H return SlackPayload{}, err } - text = fmt.Sprintf("[%s] Pull request review %s: [%s](%s) by %s", repoLink, action, title, titleLink, senderLink) + text = fmt.Sprintf("[%s] Pull request review %s: [%s](%s) by %s", p.Repository.FullName, action, title, titleLink, p.Sender.UserName) } return s.createPayload(text, nil), nil @@ -303,15 +298,14 @@ func (s slackConvertor) Review(p *api.PullRequestPayload, event webhook_module.H // Repository implements payloadConvertor Repository method func (s slackConvertor) Repository(p *api.RepositoryPayload) (SlackPayload, error) { - senderLink := SlackLinkFormatter(setting.AppURL+p.Sender.UserName, p.Sender.UserName) repoLink := SlackLinkFormatter(p.Repository.HTMLURL, p.Repository.FullName) var text string switch p.Action { case api.HookRepoCreated: - text = fmt.Sprintf("[%s] Repository created by %s", repoLink, senderLink) + text = fmt.Sprintf("[%s] Repository created by %s", repoLink, p.Sender.UserName) case api.HookRepoDeleted: - text = fmt.Sprintf("[%s] Repository deleted by %s", repoLink, senderLink) + text = fmt.Sprintf("[%s] Repository deleted by %s", repoLink, p.Sender.UserName) } return s.createPayload(text, nil), nil diff --git a/services/webhook/slack_test.go b/services/webhook/slack_test.go index 3d801843ae..155b091f9e 100644 --- a/services/webhook/slack_test.go +++ b/services/webhook/slack_test.go @@ -25,7 +25,7 @@ func TestSlackPayload(t *testing.T) { pl, err := sc.Create(p) require.NoError(t, err) - assert.Equal(t, "[:] branch created by user1", pl.Text) + assert.Equal(t, "[test/repo:] branch created by user1", pl.Text) }) t.Run("Delete", func(t *testing.T) { @@ -52,7 +52,7 @@ func TestSlackPayload(t *testing.T) { pl, err := sc.Push(p) require.NoError(t, err) - assert.Equal(t, "[:] 2 new commits pushed by user1", pl.Text) + assert.Equal(t, "[test/repo:] 2 new commits pushed by user1", pl.Text) }) t.Run("Issue", func(t *testing.T) { @@ -62,13 +62,13 @@ func TestSlackPayload(t *testing.T) { pl, err := sc.Issue(p) require.NoError(t, err) - assert.Equal(t, "[] Issue opened: by ", pl.Text) + assert.Equal(t, "[test/repo] Issue opened: by user1", pl.Text) p.Action = api.HookIssueClosed pl, err = sc.Issue(p) require.NoError(t, err) - assert.Equal(t, "[] Issue closed: by ", pl.Text) + assert.Equal(t, "[test/repo] Issue closed: by user1", pl.Text) }) t.Run("IssueComment", func(t *testing.T) { @@ -77,7 +77,7 @@ func TestSlackPayload(t *testing.T) { pl, err := sc.IssueComment(p) require.NoError(t, err) - assert.Equal(t, "[] New comment on issue by ", pl.Text) + assert.Equal(t, "[test/repo] New comment on issue by user1", pl.Text) }) t.Run("PullRequest", func(t *testing.T) { @@ -86,7 +86,7 @@ func TestSlackPayload(t *testing.T) { pl, err := sc.PullRequest(p) require.NoError(t, err) - assert.Equal(t, "[] Pull request opened: by ", pl.Text) + assert.Equal(t, "[test/repo] Pull request opened: by user1", pl.Text) }) t.Run("PullRequestComment", func(t *testing.T) { @@ -95,7 +95,7 @@ func TestSlackPayload(t *testing.T) { pl, err := sc.IssueComment(p) require.NoError(t, err) - assert.Equal(t, "[] New comment on pull request by ", pl.Text) + assert.Equal(t, "[test/repo] New comment on pull request by user1", pl.Text) }) t.Run("Review", func(t *testing.T) { @@ -105,7 +105,7 @@ func TestSlackPayload(t *testing.T) { pl, err := sc.Review(p, webhook_module.HookEventPullRequestReviewApproved) require.NoError(t, err) - assert.Equal(t, "[] Pull request review approved: [#12 Fix bug](http://localhost:3000/test/repo/pulls/12) by ", pl.Text) + assert.Equal(t, "[test/repo] Pull request review approved: [#12 Fix bug](http://localhost:3000/test/repo/pulls/12) by user1", pl.Text) }) t.Run("Repository", func(t *testing.T) { @@ -114,7 +114,7 @@ func TestSlackPayload(t *testing.T) { pl, err := sc.Repository(p) require.NoError(t, err) - assert.Equal(t, "[] Repository created by ", pl.Text) + assert.Equal(t, "[] Repository created by user1", pl.Text) }) t.Run("Package", func(t *testing.T) { @@ -123,7 +123,7 @@ func TestSlackPayload(t *testing.T) { pl, err := sc.Package(p) require.NoError(t, err) - assert.Equal(t, "Package created: by ", pl.Text) + assert.Equal(t, "Package created: by user1", pl.Text) }) t.Run("Wiki", func(t *testing.T) { @@ -133,19 +133,19 @@ func TestSlackPayload(t *testing.T) { pl, err := sc.Wiki(p) require.NoError(t, err) - assert.Equal(t, "[] New wiki page '' (Wiki change comment) by ", pl.Text) + assert.Equal(t, "[test/repo] New wiki page '' (Wiki change comment) by user1", pl.Text) p.Action = api.HookWikiEdited pl, err = sc.Wiki(p) require.NoError(t, err) - assert.Equal(t, "[] Wiki page '' edited (Wiki change comment) by ", pl.Text) + assert.Equal(t, "[test/repo] Wiki page '' edited (Wiki change comment) by user1", pl.Text) p.Action = api.HookWikiDeleted pl, err = sc.Wiki(p) require.NoError(t, err) - assert.Equal(t, "[] Wiki page '' deleted by ", pl.Text) + assert.Equal(t, "[test/repo] Wiki page '' deleted by user1", pl.Text) }) t.Run("Release", func(t *testing.T) { @@ -154,7 +154,7 @@ func TestSlackPayload(t *testing.T) { pl, err := sc.Release(p) require.NoError(t, err) - assert.Equal(t, "[] Release created: by ", pl.Text) + assert.Equal(t, "[test/repo] Release created: by user1", pl.Text) }) } @@ -190,7 +190,7 @@ func TestSlackJSONPayload(t *testing.T) { var body SlackPayload err = json.NewDecoder(req.Body).Decode(&body) require.NoError(t, err) - assert.Equal(t, "[:] 2 new commits pushed by user1", body.Text) + assert.Equal(t, "[test/repo:] 2 new commits pushed by user1", body.Text) } func TestIsValidSlackChannel(t *testing.T) { diff --git a/services/webhook/telegram.go b/services/webhook/telegram.go index bacfa64db5..a02a7691e9 100644 --- a/services/webhook/telegram.go +++ b/services/webhook/telegram.go @@ -79,7 +79,7 @@ func (telegramHandler) Metadata(w *webhook_model.Webhook) any { func (t telegramConvertor) Create(p *api.CreatePayload) (TelegramPayload, error) { // created tag/branch refName := git.RefName(p.Ref).ShortName() - title := fmt.Sprintf(`[%s] %s %s created`, p.Repo.HTMLURL, p.Repo.FullName, p.RefType, + title := fmt.Sprintf(`[%s] %s %s created`, p.Repo.FullName, p.RefType, p.Repo.HTMLURL+"/src/"+refName, refName) return createTelegramPayload(title), nil @@ -89,7 +89,7 @@ func (t telegramConvertor) Create(p *api.CreatePayload) (TelegramPayload, error) func (t telegramConvertor) Delete(p *api.DeletePayload) (TelegramPayload, error) { // created tag/branch refName := git.RefName(p.Ref).ShortName() - title := fmt.Sprintf(`[%s] %s %s deleted`, p.Repo.HTMLURL, p.Repo.FullName, p.RefType, + title := fmt.Sprintf(`[%s] %s %s deleted`, p.Repo.FullName, p.RefType, p.Repo.HTMLURL+"/src/"+refName, refName) return createTelegramPayload(title), nil @@ -108,19 +108,13 @@ func (t telegramConvertor) Push(p *api.PushPayload) (TelegramPayload, error) { branchName = git.RefName(p.Ref).ShortName() commitDesc string ) - - var titleLink string if p.TotalCommits == 1 { commitDesc = "1 new commit" - titleLink = p.Commits[0].URL } else { commitDesc = fmt.Sprintf("%d new commits", p.TotalCommits) - titleLink = p.CompareURL } - if titleLink == "" { - titleLink = p.Repo.HTMLURL + "/src/" + branchName - } - title := fmt.Sprintf(`[%s:%s] %s`, p.Repo.HTMLURL, p.Repo.FullName, titleLink, branchName, commitDesc) + + title := fmt.Sprintf(`[%s:%s] %s`, p.Repo.FullName, branchName, commitDesc) var text string // for each commit, generate attachment text diff --git a/services/webhook/telegram_test.go b/services/webhook/telegram_test.go index 0e27535a03..4f5663da41 100644 --- a/services/webhook/telegram_test.go +++ b/services/webhook/telegram_test.go @@ -33,7 +33,7 @@ func TestTelegramPayload(t *testing.T) { pl, err := tc.Create(p) require.NoError(t, err) - assert.Equal(t, `[test/repo] branch test created`, pl.Message) + assert.Equal(t, `[test/repo] branch test created`, pl.Message) }) t.Run("Delete", func(t *testing.T) { @@ -42,7 +42,7 @@ func TestTelegramPayload(t *testing.T) { pl, err := tc.Delete(p) require.NoError(t, err) - assert.Equal(t, `[test/repo] branch test deleted`, pl.Message) + assert.Equal(t, `[test/repo] branch test deleted`, pl.Message) }) t.Run("Fork", func(t *testing.T) { @@ -60,7 +60,7 @@ func TestTelegramPayload(t *testing.T) { pl, err := tc.Push(p) require.NoError(t, err) - assert.Equal(t, `[test/repo:test] 2 new commits + assert.Equal(t, `[test/repo:test] 2 new commits [2020558] commit message - user1 [2020558] commit message - user1`, pl.Message) }) @@ -72,7 +72,7 @@ func TestTelegramPayload(t *testing.T) { pl, err := tc.Issue(p) require.NoError(t, err) - assert.Equal(t, `[test/repo] Issue opened: #2 crash by user1 + assert.Equal(t, `[test/repo] Issue opened: #2 crash by user1 issue body`, pl.Message) @@ -80,7 +80,7 @@ issue body`, pl.Message) pl, err = tc.Issue(p) require.NoError(t, err) - assert.Equal(t, `[test/repo] Issue closed: #2 crash by user1`, pl.Message) + assert.Equal(t, `[test/repo] Issue closed: #2 crash by user1`, pl.Message) }) t.Run("IssueComment", func(t *testing.T) { @@ -89,7 +89,7 @@ issue body`, pl.Message) pl, err := tc.IssueComment(p) require.NoError(t, err) - assert.Equal(t, `[test/repo] New comment on issue #2 crash by user1 + assert.Equal(t, `[test/repo] New comment on issue #2 crash by user1 more info needed`, pl.Message) }) @@ -99,7 +99,7 @@ more info needed`, pl.Message) pl, err := tc.PullRequest(p) require.NoError(t, err) - assert.Equal(t, `[test/repo] Pull request opened: #12 Fix bug by user1 + assert.Equal(t, `[test/repo] Pull request opened: #12 Fix bug by user1 fixes bug #2`, pl.Message) }) @@ -109,7 +109,7 @@ fixes bug #2`, pl.Message) pl, err := tc.IssueComment(p) require.NoError(t, err) - assert.Equal(t, `[test/repo] New comment on pull request #12 Fix bug by user1 + assert.Equal(t, `[test/repo] New comment on pull request #12 Fix bug by user1 changes requested`, pl.Message) }) @@ -139,7 +139,7 @@ good job`, pl.Message) pl, err := tc.Package(p) require.NoError(t, err) - assert.Equal(t, `Package created: GiteaContainer:latest by user1`, pl.Message) + assert.Equal(t, `Package created: GiteaContainer:latest by user1`, pl.Message) }) t.Run("Wiki", func(t *testing.T) { @@ -149,19 +149,19 @@ good job`, pl.Message) pl, err := tc.Wiki(p) require.NoError(t, err) - assert.Equal(t, `[test/repo] New wiki page 'index' (Wiki change comment) by user1`, pl.Message) + assert.Equal(t, `[test/repo] New wiki page 'index' (Wiki change comment) by user1`, pl.Message) p.Action = api.HookWikiEdited pl, err = tc.Wiki(p) require.NoError(t, err) - assert.Equal(t, `[test/repo] Wiki page 'index' edited (Wiki change comment) by user1`, pl.Message) + assert.Equal(t, `[test/repo] Wiki page 'index' edited (Wiki change comment) by user1`, pl.Message) p.Action = api.HookWikiDeleted pl, err = tc.Wiki(p) require.NoError(t, err) - assert.Equal(t, `[test/repo] Wiki page 'index' deleted by user1`, pl.Message) + assert.Equal(t, `[test/repo] Wiki page 'index' deleted by user1`, pl.Message) }) t.Run("Release", func(t *testing.T) { @@ -170,7 +170,7 @@ good job`, pl.Message) pl, err := tc.Release(p) require.NoError(t, err) - assert.Equal(t, `[test/repo] Release created: v1.0 by user1`, pl.Message) + assert.Equal(t, `[test/repo] Release created: v1.0 by user1`, pl.Message) }) } @@ -206,7 +206,7 @@ func TestTelegramJSONPayload(t *testing.T) { var body TelegramPayload err = json.NewDecoder(req.Body).Decode(&body) require.NoError(t, err) - assert.Equal(t, `[test/repo:test] 2 new commits + assert.Equal(t, `[test/repo:test] 2 new commits [2020558] commit message - user1 [2020558] commit message - user1`, body.Message) }