From 026f7c488b7d0bf35453fad9c9bc9446ad07fc9e Mon Sep 17 00:00:00 2001 From: Matheus Pimenta Date: Wed, 25 Feb 2026 18:20:43 +0000 Subject: [PATCH] Fix commit status providers requiring only commit even key Signed-off-by: Matheus Pimenta --- internal/server/event_handlers.go | 5 +-- internal/server/event_handlers_test.go | 45 ++++++++++++++++++-------- 2 files changed, 35 insertions(+), 15 deletions(-) diff --git a/internal/server/event_handlers.go b/internal/server/event_handlers.go index 325563240..4738db29a 100644 --- a/internal/server/event_handlers.go +++ b/internal/server/event_handlers.go @@ -322,8 +322,9 @@ func (s *EventServer) getNotificationParams(ctx context.Context, event *eventv1. return nil, droppedProviders{}, nil } - // Skip if the provider is a commit status provider but the event doesn't have the commit metadata key. - if isCommitStatusProvider(provider.Spec.Type) && !hasCommitKey(event) { + // Skip if the provider is a commit status provider but the event doesn't have the commit metadata key + // and the event is not a commit status update. + if isCommitStatusProvider(provider.Spec.Type) && !hasCommitKey(event) && !isCommitStatusUpdate(event) { // Return true on dropped event for a commit status provider // when the event doesn't have the commit metadata key. return nil, droppedProviders{commitStatus: true}, nil diff --git a/internal/server/event_handlers_test.go b/internal/server/event_handlers_test.go index ed51dca6d..1ee207b93 100644 --- a/internal/server/event_handlers_test.go +++ b/internal/server/event_handlers_test.go @@ -418,18 +418,20 @@ func TestGetNotificationParams(t *testing.T) { testEvent := &eventv1.Event{InvolvedObject: involvedObj} tests := []struct { - name string - alertNamespace string - alertSummary string - alertEventMetadata map[string]string - providerNamespace string - providerSuspended bool - providerServiceAccount string - secretNamespace string - noCrossNSRefs bool - enableObjLevelWI bool - eventMetadata map[string]string - wantErr bool + name string + alertNamespace string + alertSummary string + alertEventMetadata map[string]string + providerType string + providerNamespace string + providerSuspended bool + providerServiceAccount string + secretNamespace string + noCrossNSRefs bool + enableObjLevelWI bool + eventMetadata map[string]string + wantErr bool + wantDroppedCommitStatus bool }{ { name: "event src and alert in diff NS", @@ -490,6 +492,19 @@ func TestGetNotificationParams(t *testing.T) { enableObjLevelWI: true, wantErr: false, }, + { + name: "commit status provider drops event without commit key", + providerType: apiv1beta3.GitHubProvider, + wantDroppedCommitStatus: true, + }, + { + name: "commit status provider does not drop commit status update event without commit key", + providerType: apiv1beta3.GitHubProvider, + eventMetadata: map[string]string{ + "kustomize.toolkit.fluxcd.io/" + eventv1.MetaCommitStatusKey: eventv1.MetaCommitStatusUpdateValue, + }, + wantErr: true, // proceeds past the guard and fails on notifier creation + }, } for _, tt := range tests { @@ -512,6 +527,9 @@ func TestGetNotificationParams(t *testing.T) { if tt.alertEventMetadata != nil { alert.Spec.EventMetadata = tt.alertEventMetadata } + if tt.providerType != "" { + provider.Spec.Type = tt.providerType + } if tt.providerNamespace != "" { provider.Namespace = tt.providerNamespace } @@ -542,8 +560,9 @@ func TestGetNotificationParams(t *testing.T) { EventRecorder: record.NewFakeRecorder(32), } - params, _, err := eventServer.getNotificationParams(context.TODO(), event, alert) + params, dropped, err := eventServer.getNotificationParams(context.TODO(), event, alert) g.Expect(err != nil).To(Equal(tt.wantErr)) + g.Expect(dropped.commitStatus).To(Equal(tt.wantDroppedCommitStatus)) if tt.alertSummary != "" { g.Expect(params.event.Metadata["summary"]).To(Equal(tt.alertSummary)) }