diff --git a/scm/driver/stash/testdata/webhooks/pr_deleted.json.golden b/scm/driver/stash/testdata/webhooks/pr_deleted.json.golden index 9e26dfee..64249061 100644 --- a/scm/driver/stash/testdata/webhooks/pr_deleted.json.golden +++ b/scm/driver/stash/testdata/webhooks/pr_deleted.json.golden @@ -1 +1,81 @@ -{} \ No newline at end of file +{ + "Action": "deleted", + "Repo": { + "ID": "1", + "Namespace": "PRJ", + "Name": "my-repo", + "FullName": "PRJ/my-repo", + "Perm": null, + "Branch": "master", + "Private": true, + "Clone": "", + "CloneSSH": "", + "Link": "", + "Created": "0001-01-01T00:00:00Z", + "Updated": "0001-01-01T00:00:00Z" + }, + "PullRequest": { + "Number": 2, + "Title": "added LICENSE", + "Body": "added BSD license text", + "Sha": "b9eaed50a03c073b20dfa82e5e753d295e7f0e56", + "Ref": "refs/pull-requests/2/from", + "Source": "develop", + "Target": "master", + "Fork": "PRJ/my-repo", + "Link": "", + "Closed": true, + "Merged": false, + "State": "declined", + "Base": { + "Ref": "master", + "Sha": "823b2230a56056231c9425d63758fa87078a66b4", + "Repo": { + "ID": "1", + "Namespace": "PRJ", + "Name": "my-repo", + "FullName": "PRJ/my-repo", + "Perm": null, + "Branch": "master", + "Private": true, + "Clone": "", + "CloneSSH": "", + "Link": "", + "Created": "0001-01-01T00:00:00Z", + "Updated": "0001-01-01T00:00:00Z" + } + }, + "Head": { + "Ref": "develop", + "Sha": "b9eaed50a03c073b20dfa82e5e753d295e7f0e56", + "Repo": { + "ID": "1", + "Namespace": "PRJ", + "Name": "my-repo", + "FullName": "PRJ/my-repo", + "Perm": null, + "Branch": "master", + "Private": true, + "Clone": "", + "CloneSSH": "", + "Link": "", + "Created": "0001-01-01T00:00:00Z", + "Updated": "0001-01-01T00:00:00Z" + } + }, + "Author": { + "Login": "jcitizen", + "Name": "Jane Citizen", + "Email": "jane@example.com", + "Avatar": "https://www.gravatar.com/avatar/9e26471d35a78862c17e467d87cddedf.jpg" + }, + "Created": "2018-07-05T12:21:30-07:00", + "Updated": "2018-07-05T12:30:48-07:00" + }, + "Sender": { + "Login": "jcitizen", + "Name": "Jane Citizen", + "Email": "jane@example.com", + "Avatar": "https://www.gravatar.com/avatar/9e26471d35a78862c17e467d87cddedf.jpg" + } +} diff --git a/scm/driver/stash/webhook.go b/scm/driver/stash/webhook.go index f3c90604..62e6be07 100644 --- a/scm/driver/stash/webhook.go +++ b/scm/driver/stash/webhook.go @@ -46,7 +46,7 @@ func (s *webhookService) Parse(req *http.Request, fn scm.SecretFunc) (scm.Webhoo switch event { case "repo:refs_changed": hook, err = s.parsePushHook(data, guid) - case "pr:opened", "pr:declined", "pr:merged", "pr:from_ref_updated", "pr:modified": + case "pr:opened", "pr:declined", "pr:deleted", "pr:merged", "pr:from_ref_updated", "pr:modified": hook, err = s.parsePullRequest(data) case "pr:comment:added", "pr:comment:edited": hook, err = s.parsePullRequestComment(data, guid) @@ -114,6 +114,8 @@ func (s *webhookService) parsePullRequest(data []byte) (scm.Webhook, error) { dst.Action = scm.ActionOpen case "pr:declined": dst.Action = scm.ActionClose + case "pr:deleted": + dst.Action = scm.ActionDelete case "pr:merged": dst.Action = scm.ActionMerge case "pr:from_ref_updated": diff --git a/scm/driver/stash/webhook_test.go b/scm/driver/stash/webhook_test.go index 963b642e..9dcf72a0 100644 --- a/scm/driver/stash/webhook_test.go +++ b/scm/driver/stash/webhook_test.go @@ -123,6 +123,14 @@ func TestWebhooks(t *testing.T) { after: "testdata/webhooks/pr_declined.json.golden", obj: new(scm.PullRequestHook), }, + // pull request deleted + { + sig: "71295b197fa25f4356d2fb9965df3f2379d903d7", + event: "pr:deleted", + before: "testdata/webhooks/pr_deleted.json", + after: "testdata/webhooks/pr_deleted.json.golden", + obj: new(scm.PullRequestHook), + }, // pull request comment { sig: "71295b197fa25f4356d2fb9965df3f2379d903d7",