Fill the specified ref in webhook test payload (#20961) (#21055)

Backport #20961

The webhook payload should use the right ref when it‘s specified in the testing request.

The compare URL should not be empty, a URL like `compare/A...A` seems useless in most cases but is helpful when testing.
tokarchuk/v1.17
Jason Song 2 years ago committed by GitHub
parent 8fc80b34a0
commit ea38455e1f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 16
      routers/api/v1/repo/hook.go
  2. 6
      routers/web/repo/webhook.go
  3. 2
      templates/swagger/v1_json.tmpl

@ -13,6 +13,7 @@ import (
"code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/context"
"code.gitea.io/gitea/modules/convert" "code.gitea.io/gitea/modules/convert"
"code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/git"
"code.gitea.io/gitea/modules/setting"
api "code.gitea.io/gitea/modules/structs" api "code.gitea.io/gitea/modules/structs"
"code.gitea.io/gitea/modules/web" "code.gitea.io/gitea/modules/web"
"code.gitea.io/gitea/routers/api/v1/utils" "code.gitea.io/gitea/routers/api/v1/utils"
@ -140,7 +141,7 @@ func TestHook(ctx *context.APIContext) {
// required: true // required: true
// - name: ref // - name: ref
// in: query // in: query
// description: "The name of the commit/branch/tag. Default the repository’s default branch (usually master)" // description: "The name of the commit/branch/tag, indicates which commit will be loaded to the webhook payload."
// type: string // type: string
// required: false // required: false
// responses: // responses:
@ -153,6 +154,11 @@ func TestHook(ctx *context.APIContext) {
return return
} }
ref := git.BranchPrefix + ctx.Repo.Repository.DefaultBranch
if r := ctx.FormTrim("ref"); r != "" {
ref = r
}
hookID := ctx.ParamsInt64(":id") hookID := ctx.ParamsInt64(":id")
hook, err := utils.GetRepoHook(ctx, ctx.Repo.Repository.ID, hookID) hook, err := utils.GetRepoHook(ctx, ctx.Repo.Repository.ID, hookID)
if err != nil { if err != nil {
@ -161,10 +167,12 @@ func TestHook(ctx *context.APIContext) {
commit := convert.ToPayloadCommit(ctx.Repo.Repository, ctx.Repo.Commit) commit := convert.ToPayloadCommit(ctx.Repo.Repository, ctx.Repo.Commit)
commitID := ctx.Repo.Commit.ID.String()
if err := webhook_service.PrepareWebhook(hook, ctx.Repo.Repository, webhook.HookEventPush, &api.PushPayload{ if err := webhook_service.PrepareWebhook(hook, ctx.Repo.Repository, webhook.HookEventPush, &api.PushPayload{
Ref: git.BranchPrefix + ctx.Repo.Repository.DefaultBranch, Ref: ref,
Before: ctx.Repo.Commit.ID.String(), Before: commitID,
After: ctx.Repo.Commit.ID.String(), After: commitID,
CompareURL: setting.AppURL + ctx.Repo.Repository.ComposeCompareURL(commitID, commitID),
Commits: []*api.PayloadCommit{commit}, Commits: []*api.PayloadCommit{commit},
HeadCommit: commit, HeadCommit: commit,
Repo: convert.ToRepo(ctx.Repo.Repository, perm.AccessModeNone), Repo: convert.ToRepo(ctx.Repo.Repository, perm.AccessModeNone),

@ -1271,10 +1271,12 @@ func TestWebhook(ctx *context.Context) {
}, },
} }
commitID := commit.ID.String()
p := &api.PushPayload{ p := &api.PushPayload{
Ref: git.BranchPrefix + ctx.Repo.Repository.DefaultBranch, Ref: git.BranchPrefix + ctx.Repo.Repository.DefaultBranch,
Before: commit.ID.String(), Before: commitID,
After: commit.ID.String(), After: commitID,
CompareURL: setting.AppURL + ctx.Repo.Repository.ComposeCompareURL(commitID, commitID),
Commits: []*api.PayloadCommit{apiCommit}, Commits: []*api.PayloadCommit{apiCommit},
HeadCommit: apiCommit, HeadCommit: apiCommit,
Repo: convert.ToRepo(ctx.Repo.Repository, perm.AccessModeNone), Repo: convert.ToRepo(ctx.Repo.Repository, perm.AccessModeNone),

@ -4614,7 +4614,7 @@
}, },
{ {
"type": "string", "type": "string",
"description": "The name of the commit/branch/tag. Default the repository’s default branch (usually master)", "description": "The name of the commit/branch/tag, indicates which commit will be loaded to the webhook payload.",
"name": "ref", "name": "ref",
"in": "query" "in": "query"
} }

Loading…
Cancel
Save