mirror of
https://github.com/go-gitea/gitea
synced 2025-07-16 07:18:37 +00:00
Add tests for all webhooks (#16214)
* Added tests for MS Teams. * Added tests for Dingtalk. * Added tests for Telegram. * Added tests for Feishu. * Added tests for Discord. * Added tests for closed issue and pullrequest comment. * Added tests for Matrix. * Trim all spaces. * Added tests for Slack. * Added JSONPayload tests. * Added general tests. * Replaced duplicated code. Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
This commit is contained in:
@@ -120,22 +120,7 @@ func (d *DiscordPayload) Create(p *api.CreatePayload) (api.Payloader, error) {
|
||||
refName := git.RefEndName(p.Ref)
|
||||
title := fmt.Sprintf("[%s] %s %s created", p.Repo.FullName, p.RefType, refName)
|
||||
|
||||
return &DiscordPayload{
|
||||
Username: d.Username,
|
||||
AvatarURL: d.AvatarURL,
|
||||
Embeds: []DiscordEmbed{
|
||||
{
|
||||
Title: title,
|
||||
URL: p.Repo.HTMLURL + "/src/" + refName,
|
||||
Color: greenColor,
|
||||
Author: DiscordEmbedAuthor{
|
||||
Name: p.Sender.UserName,
|
||||
URL: setting.AppURL + p.Sender.UserName,
|
||||
IconURL: p.Sender.AvatarURL,
|
||||
},
|
||||
},
|
||||
},
|
||||
}, nil
|
||||
return d.createPayload(p.Sender, title, "", p.Repo.HTMLURL+"/src/"+refName, greenColor), nil
|
||||
}
|
||||
|
||||
// Delete implements PayloadConvertor Delete method
|
||||
@@ -144,44 +129,14 @@ func (d *DiscordPayload) Delete(p *api.DeletePayload) (api.Payloader, error) {
|
||||
refName := git.RefEndName(p.Ref)
|
||||
title := fmt.Sprintf("[%s] %s %s deleted", p.Repo.FullName, p.RefType, refName)
|
||||
|
||||
return &DiscordPayload{
|
||||
Username: d.Username,
|
||||
AvatarURL: d.AvatarURL,
|
||||
Embeds: []DiscordEmbed{
|
||||
{
|
||||
Title: title,
|
||||
URL: p.Repo.HTMLURL + "/src/" + refName,
|
||||
Color: redColor,
|
||||
Author: DiscordEmbedAuthor{
|
||||
Name: p.Sender.UserName,
|
||||
URL: setting.AppURL + p.Sender.UserName,
|
||||
IconURL: p.Sender.AvatarURL,
|
||||
},
|
||||
},
|
||||
},
|
||||
}, nil
|
||||
return d.createPayload(p.Sender, title, "", p.Repo.HTMLURL+"/src/"+refName, redColor), nil
|
||||
}
|
||||
|
||||
// Fork implements PayloadConvertor Fork method
|
||||
func (d *DiscordPayload) Fork(p *api.ForkPayload) (api.Payloader, error) {
|
||||
title := fmt.Sprintf("%s is forked to %s", p.Forkee.FullName, p.Repo.FullName)
|
||||
|
||||
return &DiscordPayload{
|
||||
Username: d.Username,
|
||||
AvatarURL: d.AvatarURL,
|
||||
Embeds: []DiscordEmbed{
|
||||
{
|
||||
Title: title,
|
||||
URL: p.Repo.HTMLURL,
|
||||
Color: greenColor,
|
||||
Author: DiscordEmbedAuthor{
|
||||
Name: p.Sender.UserName,
|
||||
URL: setting.AppURL + p.Sender.UserName,
|
||||
IconURL: p.Sender.AvatarURL,
|
||||
},
|
||||
},
|
||||
},
|
||||
}, nil
|
||||
return d.createPayload(p.Sender, title, "", p.Repo.HTMLURL, greenColor), nil
|
||||
}
|
||||
|
||||
// Push implements PayloadConvertor Push method
|
||||
@@ -216,92 +171,28 @@ func (d *DiscordPayload) Push(p *api.PushPayload) (api.Payloader, error) {
|
||||
}
|
||||
}
|
||||
|
||||
return &DiscordPayload{
|
||||
Username: d.Username,
|
||||
AvatarURL: d.AvatarURL,
|
||||
Embeds: []DiscordEmbed{
|
||||
{
|
||||
Title: title,
|
||||
Description: text,
|
||||
URL: titleLink,
|
||||
Color: greenColor,
|
||||
Author: DiscordEmbedAuthor{
|
||||
Name: p.Sender.UserName,
|
||||
URL: setting.AppURL + p.Sender.UserName,
|
||||
IconURL: p.Sender.AvatarURL,
|
||||
},
|
||||
},
|
||||
},
|
||||
}, nil
|
||||
return d.createPayload(p.Sender, title, text, titleLink, greenColor), nil
|
||||
}
|
||||
|
||||
// Issue implements PayloadConvertor Issue method
|
||||
func (d *DiscordPayload) Issue(p *api.IssuePayload) (api.Payloader, error) {
|
||||
text, _, attachmentText, color := getIssuesPayloadInfo(p, noneLinkFormatter, false)
|
||||
title, _, text, color := getIssuesPayloadInfo(p, noneLinkFormatter, false)
|
||||
|
||||
return &DiscordPayload{
|
||||
Username: d.Username,
|
||||
AvatarURL: d.AvatarURL,
|
||||
Embeds: []DiscordEmbed{
|
||||
{
|
||||
Title: text,
|
||||
Description: attachmentText,
|
||||
URL: p.Issue.HTMLURL,
|
||||
Color: color,
|
||||
Author: DiscordEmbedAuthor{
|
||||
Name: p.Sender.UserName,
|
||||
URL: setting.AppURL + p.Sender.UserName,
|
||||
IconURL: p.Sender.AvatarURL,
|
||||
},
|
||||
},
|
||||
},
|
||||
}, nil
|
||||
return d.createPayload(p.Sender, title, text, p.Issue.HTMLURL, color), nil
|
||||
}
|
||||
|
||||
// IssueComment implements PayloadConvertor IssueComment method
|
||||
func (d *DiscordPayload) IssueComment(p *api.IssueCommentPayload) (api.Payloader, error) {
|
||||
text, _, color := getIssueCommentPayloadInfo(p, noneLinkFormatter, false)
|
||||
title, _, color := getIssueCommentPayloadInfo(p, noneLinkFormatter, false)
|
||||
|
||||
return &DiscordPayload{
|
||||
Username: d.Username,
|
||||
AvatarURL: d.AvatarURL,
|
||||
Embeds: []DiscordEmbed{
|
||||
{
|
||||
Title: text,
|
||||
Description: p.Comment.Body,
|
||||
URL: p.Comment.HTMLURL,
|
||||
Color: color,
|
||||
Author: DiscordEmbedAuthor{
|
||||
Name: p.Sender.UserName,
|
||||
URL: setting.AppURL + p.Sender.UserName,
|
||||
IconURL: p.Sender.AvatarURL,
|
||||
},
|
||||
},
|
||||
},
|
||||
}, nil
|
||||
return d.createPayload(p.Sender, title, p.Comment.Body, p.Comment.HTMLURL, color), nil
|
||||
}
|
||||
|
||||
// PullRequest implements PayloadConvertor PullRequest method
|
||||
func (d *DiscordPayload) PullRequest(p *api.PullRequestPayload) (api.Payloader, error) {
|
||||
text, _, attachmentText, color := getPullRequestPayloadInfo(p, noneLinkFormatter, false)
|
||||
title, _, text, color := getPullRequestPayloadInfo(p, noneLinkFormatter, false)
|
||||
|
||||
return &DiscordPayload{
|
||||
Username: d.Username,
|
||||
AvatarURL: d.AvatarURL,
|
||||
Embeds: []DiscordEmbed{
|
||||
{
|
||||
Title: text,
|
||||
Description: attachmentText,
|
||||
URL: p.PullRequest.HTMLURL,
|
||||
Color: color,
|
||||
Author: DiscordEmbedAuthor{
|
||||
Name: p.Sender.UserName,
|
||||
URL: setting.AppURL + p.Sender.UserName,
|
||||
IconURL: p.Sender.AvatarURL,
|
||||
},
|
||||
},
|
||||
},
|
||||
}, nil
|
||||
return d.createPayload(p.Sender, title, text, p.PullRequest.HTMLURL, color), nil
|
||||
}
|
||||
|
||||
// Review implements PayloadConvertor Review method
|
||||
@@ -330,23 +221,7 @@ func (d *DiscordPayload) Review(p *api.PullRequestPayload, event models.HookEven
|
||||
}
|
||||
}
|
||||
|
||||
return &DiscordPayload{
|
||||
Username: d.Username,
|
||||
AvatarURL: d.AvatarURL,
|
||||
Embeds: []DiscordEmbed{
|
||||
{
|
||||
Title: title,
|
||||
Description: text,
|
||||
URL: p.PullRequest.HTMLURL,
|
||||
Color: color,
|
||||
Author: DiscordEmbedAuthor{
|
||||
Name: p.Sender.UserName,
|
||||
URL: setting.AppURL + p.Sender.UserName,
|
||||
IconURL: p.Sender.AvatarURL,
|
||||
},
|
||||
},
|
||||
},
|
||||
}, nil
|
||||
return d.createPayload(p.Sender, title, text, p.PullRequest.HTMLURL, color), nil
|
||||
}
|
||||
|
||||
// Repository implements PayloadConvertor Repository method
|
||||
@@ -363,45 +238,14 @@ func (d *DiscordPayload) Repository(p *api.RepositoryPayload) (api.Payloader, er
|
||||
color = redColor
|
||||
}
|
||||
|
||||
return &DiscordPayload{
|
||||
Username: d.Username,
|
||||
AvatarURL: d.AvatarURL,
|
||||
Embeds: []DiscordEmbed{
|
||||
{
|
||||
Title: title,
|
||||
URL: url,
|
||||
Color: color,
|
||||
Author: DiscordEmbedAuthor{
|
||||
Name: p.Sender.UserName,
|
||||
URL: setting.AppURL + p.Sender.UserName,
|
||||
IconURL: p.Sender.AvatarURL,
|
||||
},
|
||||
},
|
||||
},
|
||||
}, nil
|
||||
return d.createPayload(p.Sender, title, "", url, color), nil
|
||||
}
|
||||
|
||||
// Release implements PayloadConvertor Release method
|
||||
func (d *DiscordPayload) Release(p *api.ReleasePayload) (api.Payloader, error) {
|
||||
text, color := getReleasePayloadInfo(p, noneLinkFormatter, false)
|
||||
|
||||
return &DiscordPayload{
|
||||
Username: d.Username,
|
||||
AvatarURL: d.AvatarURL,
|
||||
Embeds: []DiscordEmbed{
|
||||
{
|
||||
Title: text,
|
||||
Description: p.Release.Note,
|
||||
URL: p.Release.URL,
|
||||
Color: color,
|
||||
Author: DiscordEmbedAuthor{
|
||||
Name: p.Sender.UserName,
|
||||
URL: setting.AppURL + p.Sender.UserName,
|
||||
IconURL: p.Sender.AvatarURL,
|
||||
},
|
||||
},
|
||||
},
|
||||
}, nil
|
||||
return d.createPayload(p.Sender, text, p.Release.Note, p.Release.URL, color), nil
|
||||
}
|
||||
|
||||
// GetDiscordPayload converts a discord webhook into a DiscordPayload
|
||||
@@ -433,3 +277,23 @@ func parseHookPullRequestEventType(event models.HookEventType) (string, error) {
|
||||
return "", errors.New("unknown event type")
|
||||
}
|
||||
}
|
||||
|
||||
func (d *DiscordPayload) createPayload(s *api.User, title, text, url string, color int) *DiscordPayload {
|
||||
return &DiscordPayload{
|
||||
Username: d.Username,
|
||||
AvatarURL: d.AvatarURL,
|
||||
Embeds: []DiscordEmbed{
|
||||
{
|
||||
Title: title,
|
||||
Description: text,
|
||||
URL: url,
|
||||
Color: color,
|
||||
Author: DiscordEmbedAuthor{
|
||||
Name: s.UserName,
|
||||
URL: setting.AppURL + s.UserName,
|
||||
IconURL: s.AvatarURL,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user