webhook: match email with real user in database for test delivery (#3652)

master
Unknwon 2017-02-14 03:32:13 -05:00
parent f4aedda13a
commit 279e475b89
No known key found for this signature in database
GPG Key ID: 25B575AE3213B2B3
1 changed files with 29 additions and 4 deletions

View File

@ -347,6 +347,8 @@ func SlackHooksEditPost(ctx *context.Context, form auth.NewSlackHookForm) {
}
func TestWebhook(ctx *context.Context) {
var authorUsername, committerUsername string
// Grab latest commit or fake one if it's empty repository.
commit := ctx.Repo.Commit
if commit == nil {
@ -357,6 +359,27 @@ func TestWebhook(ctx *context.Context) {
Committer: ghost.NewGitSig(),
CommitMessage: "This is a fake commit",
}
authorUsername = ghost.Name
committerUsername = ghost.Name
} else {
// Try to match email with a real user.
author, err := models.GetUserByEmail(commit.Author.Email)
if err == nil {
authorUsername = author.Name
} else if !models.IsErrUserNotExist(err) {
ctx.Flash.Error(fmt.Sprintf("GetUserByEmail.(author) [%s]: %v", commit.Author.Email, err))
ctx.Status(500)
return
}
committer, err := models.GetUserByEmail(commit.Committer.Email)
if err == nil {
committerUsername = committer.Name
} else if !models.IsErrUserNotExist(err) {
ctx.Flash.Error(fmt.Sprintf("GetUserByEmail.(committer) [%s]: %v", commit.Committer.Email, err))
ctx.Status(500)
return
}
}
apiUser := ctx.User.APIFormat()
@ -370,12 +393,14 @@ func TestWebhook(ctx *context.Context) {
Message: commit.Message(),
URL: ctx.Repo.Repository.HTMLURL() + "/commit/" + commit.ID.String(),
Author: &api.PayloadUser{
Name: commit.Author.Name,
Email: commit.Author.Email,
Name: commit.Author.Name,
Email: commit.Author.Email,
UserName: authorUsername,
},
Committer: &api.PayloadUser{
Name: commit.Committer.Name,
Email: commit.Committer.Email,
Name: commit.Committer.Name,
Email: commit.Committer.Email,
UserName: committerUsername,
},
},
},