From 803e9f01aa572b0dc74326a8dbdafc0f9b527861 Mon Sep 17 00:00:00 2001 From: maura fortino Date: Tue, 14 Nov 2023 15:32:38 -0500 Subject: [PATCH] updated validation error checking --- primaryHandler.go | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/primaryHandler.go b/primaryHandler.go index 249fecc..3a0da16 100644 --- a/primaryHandler.go +++ b/primaryHandler.go @@ -569,13 +569,26 @@ func ValidateWRP(logger *zap.Logger) func(http.Handler) http.Handler { if msg, ok := wrpcontext.GetMessage(r.Context()); ok { var err error + var failureError error + var warningErrors error validators := wrp.SpecValidators() for _, v := range validators { - err = multierr.Append(err, v.Validate(*msg)) + err = v.Validate(*msg) + if errors.Is(err, wrp.ErrorInvalidMessageEncoding.Err) || errors.Is(err, wrp.ErrorInvalidMessageType.Err) { + failureError = multierr.Append(failureError, err) + } else if errors.Is(err, wrp.ErrorInvalidDestination.Err) || errors.Is(err, wrp.ErrorInvalidSource.Err) { + warningErrors = multierr.Append(warningErrors, err) + } + } + + if warningErrors != nil { + logger.Warn("WRP message validation failures found", zap.Error(err)) } - if errors.Is(err, wrp.ErrorInvalidMessageEncoding.Err) || errors.Is(err, wrp.ErrorInvalidMessageType.Err) { + if failureError != nil { + logger.Error("WRP message validation failures found", zap.Error(failureError)) + w.Header().Set("Content-Type", "application/json") w.WriteHeader(http.StatusBadRequest) fmt.Fprintf( @@ -584,8 +597,6 @@ func ValidateWRP(logger *zap.Logger) func(http.Handler) http.Handler { http.StatusBadRequest, fmt.Sprintf("failed to validate WRP message: %s", err)) return - } else if errors.Is(err, wrp.ErrorInvalidDestination.Err) || errors.Is(err, wrp.ErrorInvalidSource.Err) { - logger.Warn("WRP message validation failures found", zap.Error(err)) } }