diff --git a/pkg/provider/bitbucketdatacenter/parse_payload.go b/pkg/provider/bitbucketdatacenter/parse_payload.go index 6d40f83d9..2ece1f333 100644 --- a/pkg/provider/bitbucketdatacenter/parse_payload.go +++ b/pkg/provider/bitbucketdatacenter/parse_payload.go @@ -155,6 +155,11 @@ func (v *Provider) ParsePayload(_ context.Context, _ *params.Run, request *http. } v.pullRequestNumber = e.PullRequest.ID case *types.PushRequestEvent: + for _, change := range e.Changes { + if change.ToHash == "0000000000000000000000000000000000000000" && change.Type == "DELETE" { + return nil, nil + } + } processedEvent.TriggerTarget = triggertype.Push processedEvent.EventType = triggertype.Push.String() processedEvent.Organization = e.Repository.Project.Key diff --git a/pkg/provider/bitbucketdatacenter/parse_payload_test.go b/pkg/provider/bitbucketdatacenter/parse_payload_test.go index e51bb73e0..84ad98d03 100644 --- a/pkg/provider/bitbucketdatacenter/parse_payload_test.go +++ b/pkg/provider/bitbucketdatacenter/parse_payload_test.go @@ -660,6 +660,19 @@ func TestParsePayload(t *testing.T) { payloadEvent: bbv1test.MakePREvent(ev1, "/cancel"), expEvent: ev1, }, + { + name: "deleted branch should be ignored", + eventType: "repo:refs_changed", + payloadEvent: bbv1test.MakePushEvent(ev1, []types.PushRequestEventChange{ + { + ToHash: "0000000000000000000000000000000000000000", + RefID: "refs/heads/feature-branch", + Type: "DELETE", + }, + }, []types.Commit{}, + ), + expEvent: nil, + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { @@ -685,7 +698,12 @@ func TestParsePayload(t *testing.T) { return } assert.NilError(t, err) - + if tt.expEvent == nil { + if got != nil { + t.Fatalf("expected event to be nil, got: %+v", got) + } + return + } assert.Equal(t, got.AccountID, tt.expEvent.AccountID) // test that we got slashed