]> source.dussan.org Git - gitea.git/commitdiff
Fix incorrect message id for release email (#30825) (#30833)
authorGiteabot <teabot@gitea.io>
Thu, 2 May 2024 16:00:29 +0000 (00:00 +0800)
committerGitHub <noreply@github.com>
Thu, 2 May 2024 16:00:29 +0000 (00:00 +0800)
Backport #30825 by wxiaoguang

Make generateMessageIDForRelease outputs the same format as
generateMessageIDForIssue (old `createReference`)

Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
services/mailer/mail.go
services/mailer/mail_release.go
services/mailer/mail_test.go

index a63ba7a52af08f6d65bffad478b5c322b58580ec..04194dcf269ee9d742e88b3840984dffe6f17d8a 100644 (file)
@@ -289,8 +289,8 @@ func composeIssueCommentMessages(ctx *mailCommentContext, lang string, recipient
        }
 
        // Make sure to compose independent messages to avoid leaking user emails
-       msgID := createReference(ctx.Issue, ctx.Comment, ctx.ActionType)
-       reference := createReference(ctx.Issue, nil, activities_model.ActionType(0))
+       msgID := generateMessageIDForIssue(ctx.Issue, ctx.Comment, ctx.ActionType)
+       reference := generateMessageIDForIssue(ctx.Issue, nil, activities_model.ActionType(0))
 
        var replyPayload []byte
        if ctx.Comment != nil {
@@ -362,7 +362,7 @@ func composeIssueCommentMessages(ctx *mailCommentContext, lang string, recipient
        return msgs, nil
 }
 
-func createReference(issue *issues_model.Issue, comment *issues_model.Comment, actionType activities_model.ActionType) string {
+func generateMessageIDForIssue(issue *issues_model.Issue, comment *issues_model.Comment, actionType activities_model.ActionType) string {
        var path string
        if issue.IsPull {
                path = "pulls"
@@ -389,6 +389,10 @@ func createReference(issue *issues_model.Issue, comment *issues_model.Comment, a
        return fmt.Sprintf("<%s/%s/%d%s@%s>", issue.Repo.FullName(), path, issue.Index, extra, setting.Domain)
 }
 
+func generateMessageIDForRelease(release *repo_model.Release) string {
+       return fmt.Sprintf("<%s/releases/%d@%s>", release.Repo.FullName(), release.ID, setting.Domain)
+}
+
 func generateAdditionalHeaders(ctx *mailCommentContext, reason string, recipient *user_model.User) map[string]string {
        repo := ctx.Issue.Repo
 
index 6682774a04b7a55030256ed314a555a3cefb7df1..2aac21e552c55ada80573e50bd53d5505ae1b2b1 100644 (file)
@@ -86,11 +86,11 @@ func mailNewRelease(ctx context.Context, lang string, tos []string, rel *repo_mo
 
        msgs := make([]*Message, 0, len(tos))
        publisherName := rel.Publisher.DisplayName()
-       relURL := "<" + rel.HTMLURL() + ">"
+       msgID := generateMessageIDForRelease(rel)
        for _, to := range tos {
                msg := NewMessageFrom(to, publisherName, setting.MailService.FromEmail, subject, mailBody.String())
                msg.Info = subject
-               msg.SetHeader("Message-ID", relURL)
+               msg.SetHeader("Message-ID", msgID)
                msgs = append(msgs, msg)
        }
 
index d87c57ffe750b5cfec5c081af06f40c7f8a3beab..0739f4233fc89ca7f7dc9e54df55efbf018752cb 100644 (file)
@@ -288,7 +288,7 @@ func TestGenerateAdditionalHeaders(t *testing.T) {
        }
 }
 
-func Test_createReference(t *testing.T) {
+func TestGenerateMessageIDForIssue(t *testing.T) {
        _, _, issue, comment := prepareMailerTest(t)
        _, _, pullIssue, _ := prepareMailerTest(t)
        pullIssue.IsPull = true
@@ -388,10 +388,18 @@ func Test_createReference(t *testing.T) {
        }
        for _, tt := range tests {
                t.Run(tt.name, func(t *testing.T) {
-                       got := createReference(tt.args.issue, tt.args.comment, tt.args.actionType)
+                       got := generateMessageIDForIssue(tt.args.issue, tt.args.comment, tt.args.actionType)
                        if !strings.HasPrefix(got, tt.prefix) {
-                               t.Errorf("createReference() = %v, want %v", got, tt.prefix)
+                               t.Errorf("generateMessageIDForIssue() = %v, want %v", got, tt.prefix)
                        }
                })
        }
 }
+
+func TestGenerateMessageIDForRelease(t *testing.T) {
+       msgID := generateMessageIDForRelease(&repo_model.Release{
+               ID:   1,
+               Repo: &repo_model.Repository{OwnerName: "owner", Name: "repo"},
+       })
+       assert.Equal(t, "<owner/repo/releases/1@localhost>", msgID)
+}