diff --git a/push/errors.go b/push/errors.go index 6651ebe4..73172996 100644 --- a/push/errors.go +++ b/push/errors.go @@ -89,10 +89,14 @@ type ProcessorError struct { } func (e *ProcessorError) Error() string { - if e.Err != nil { - return fmt.Sprintf("%s %s failed for '%s': %s (%v)", e.ProcessorType, e.Operation, e.PushNotificationName, e.Reason, e.Err) + notifInfo := "" + if e.PushNotificationName != "" { + notifInfo = fmt.Sprintf(" for '%s'", e.PushNotificationName) } - return fmt.Sprintf("%s %s failed for '%s': %s", e.ProcessorType, e.Operation, e.PushNotificationName, e.Reason) + if e.Err != nil { + return fmt.Sprintf("%s %s failed%s: %s (%v)", e.ProcessorType, e.Operation, notifInfo, e.Reason, e.Err) + } + return fmt.Sprintf("%s %s failed%s: %s", e.ProcessorType, e.Operation, notifInfo, e.Reason) } func (e *ProcessorError) Unwrap() error { diff --git a/push/push_test.go b/push/push_test.go index 30352460..d12748b7 100644 --- a/push/push_test.go +++ b/push/push_test.go @@ -32,12 +32,12 @@ func NewTestHandler(name string) *TestHandler { type MockNetConn struct{} func (m *MockNetConn) Read(b []byte) (n int, err error) { return 0, nil } -func (m *MockNetConn) Write(b []byte) (n int, err error) { return len(b), nil } -func (m *MockNetConn) Close() error { return nil } -func (m *MockNetConn) LocalAddr() net.Addr { return nil } -func (m *MockNetConn) RemoteAddr() net.Addr { return nil } -func (m *MockNetConn) SetDeadline(t time.Time) error { return nil } -func (m *MockNetConn) SetReadDeadline(t time.Time) error { return nil } +func (m *MockNetConn) Write(b []byte) (n int, err error) { return len(b), nil } +func (m *MockNetConn) Close() error { return nil } +func (m *MockNetConn) LocalAddr() net.Addr { return nil } +func (m *MockNetConn) RemoteAddr() net.Addr { return nil } +func (m *MockNetConn) SetDeadline(t time.Time) error { return nil } +func (m *MockNetConn) SetReadDeadline(t time.Time) error { return nil } func (m *MockNetConn) SetWriteDeadline(t time.Time) error { return nil } func (h *TestHandler) HandlePushNotification(ctx context.Context, handlerCtx NotificationHandlerContext, notification []interface{}) error { @@ -1564,7 +1564,7 @@ func TestHandlerError(t *testing.T) { // TestProcessorError tests the ProcessorError structured error type func TestProcessorError(t *testing.T) { t.Run("ProcessorErrorWithoutWrappedError", func(t *testing.T) { - err := NewProcessorError("processor", "process", "invalid notification format", nil) + err := NewProcessorError("processor", "process", "", "invalid notification format", nil) if err == nil { t.Error("NewProcessorError should not return nil") @@ -1594,7 +1594,7 @@ func TestProcessorError(t *testing.T) { t.Run("ProcessorErrorWithWrappedError", func(t *testing.T) { wrappedErr := errors.New("network error") - err := NewProcessorError("void_processor", "register", "disabled", wrappedErr) + err := NewProcessorError("void_processor", "register", "", "disabled", wrappedErr) expectedMsg := "void_processor register failed: disabled (network error)" if err.Error() != expectedMsg {