package app import ( "errors" "strings" "testing" distributoradapter "gitea.maximumdirect.net/eric/weatherreporter/internal/adapters/distributor" ) func TestNotificationResultFromUploadExcludesRemoteResponseDetails(t *testing.T) { const remote = "REMOTE-DIAGNOSTIC" notification := notificationResultFromUpload("weather", "bundle", "key", distributoradapter.UploadResult{ RunID: "run-123", Status: "failed", UploadStatus: "accepted", StatusError: remote, RunStatus: &distributoradapter.RunStatus{PipelineID: "weather", Status: "failed", Report: []byte(`{"detail":"REMOTE-DIAGNOSTIC"}`), Error: remote}, }) if notification == nil || notification.StatusError != "distributor status could not be confirmed" || notification.Error != "distributor reported a failed run" || len(notification.Report) != 0 { t.Fatalf("notification = %#v", notification) } if strings.Contains(notification.StatusError, remote) || strings.Contains(notification.Error, remote) { t.Fatalf("notification includes remote detail: %#v", notification) } } func TestBatchNotificationResultExcludesRemoteResponseDetails(t *testing.T) { const remote = "REMOTE-DIAGNOSTIC" notification := batchNotificationResult(batchNotificationRequest{PipelineID: "weather", BundleID: "bundle", IdempotencyKey: "key"}, &NotificationResult{Status: "failed", Error: remote}) if notification == nil || notification.Error != "distributor reported a failed run" { t.Fatalf("notification = %#v", notification) } if strings.Contains(notification.Error, remote) { t.Fatalf("notification includes remote detail: %#v", notification) } } func TestFailedBatchNotificationResultExcludesRemoteResponseDetails(t *testing.T) { const remote = "REMOTE-DIAGNOSTIC" notification := failedBatchNotificationResult(batchNotificationRequest{PipelineID: "weather", BundleID: "bundle", IdempotencyKey: "key"}, errors.New(remote)) if notification == nil || notification.Error != "distributor notification failed" { t.Fatalf("notification = %#v", notification) } if strings.Contains(notification.Error, remote) { t.Fatalf("notification includes remote detail: %#v", notification) } }