You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by pc...@apache.org on 2023/04/13 08:25:26 UTC
[camel-k] branch main updated: fix: won't panic on error handler validation failure
This is an automated email from the ASF dual-hosted git repository.
pcongiusti pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-k.git
The following commit(s) were added to refs/heads/main by this push:
new cc8d518c2 fix: won't panic on error handler validation failure
cc8d518c2 is described below
commit cc8d518c206babe13aec9af75bd641869343d362
Author: Pasquale Congiusti <pa...@gmail.com>
AuthorDate: Wed Apr 12 15:17:25 2023 +0200
fix: won't panic on error handler validation failure
Introduced a validation for each kind of error handler.
Closes #3586
---
pkg/apis/camel/v1alpha1/error_handler_types_support.go | 15 +++++++++++++++
pkg/controller/kameletbinding/error_handler.go | 6 ++++--
pkg/controller/kameletbinding/error_handler_test.go | 10 ++++++++--
3 files changed, 27 insertions(+), 4 deletions(-)
diff --git a/pkg/apis/camel/v1alpha1/error_handler_types_support.go b/pkg/apis/camel/v1alpha1/error_handler_types_support.go
index dfda4c713..79f473a70 100644
--- a/pkg/apis/camel/v1alpha1/error_handler_types_support.go
+++ b/pkg/apis/camel/v1alpha1/error_handler_types_support.go
@@ -19,6 +19,7 @@ package v1alpha1
import (
"encoding/json"
+ "fmt"
)
// +kubebuilder:object:generate=false
@@ -28,6 +29,7 @@ type ErrorHandler interface {
Type() ErrorHandlerType
Endpoint() *Endpoint
Configuration() (map[string]interface{}, error)
+ Validate() error
}
// baseErrorHandler is the base used for the Error Handler hierarchy
@@ -49,6 +51,11 @@ func (e baseErrorHandler) Configuration() (map[string]interface{}, error) {
return nil, nil
}
+// Validate --
+func (e baseErrorHandler) Validate() error {
+ return nil
+}
+
// ErrorHandlerNone --
type ErrorHandlerNone struct {
baseErrorHandler
@@ -126,3 +133,11 @@ func (e ErrorHandlerSink) Configuration() (map[string]interface{}, error) {
return properties, err
}
+
+// Validate --
+func (e ErrorHandlerSink) Validate() error {
+ if e.DLCEndpoint == nil {
+ return fmt.Errorf("Missing endpoint in Error Handler Sink")
+ }
+ return nil
+}
diff --git a/pkg/controller/kameletbinding/error_handler.go b/pkg/controller/kameletbinding/error_handler.go
index c85829a52..231c5b49a 100644
--- a/pkg/controller/kameletbinding/error_handler.go
+++ b/pkg/controller/kameletbinding/error_handler.go
@@ -79,8 +79,10 @@ func parseErrorHandler(rawMessage v1alpha1.RawMessage) (v1alpha1.ErrorHandler, e
return nil, errors.Errorf("Unknown error handler type %s", errHandlType)
}
- err := json.Unmarshal(errHandlValue, dst)
- if err != nil {
+ if err = json.Unmarshal(errHandlValue, dst); err != nil {
+ return nil, err
+ }
+ if err = dst.Validate(); err != nil {
return nil, err
}
diff --git a/pkg/controller/kameletbinding/error_handler_test.go b/pkg/controller/kameletbinding/error_handler_test.go
index 6abbf2187..02607dda4 100644
--- a/pkg/controller/kameletbinding/error_handler_test.go
+++ b/pkg/controller/kameletbinding/error_handler_test.go
@@ -18,7 +18,6 @@ limitations under the License.
package kameletbinding
import (
- "fmt"
"testing"
"github.com/apache/camel-k/v2/pkg/apis/camel/v1alpha1"
@@ -64,7 +63,6 @@ func TestParseErrorHandlerLogWithParametersDoesSucceed(t *testing.T) {
}
func TestParseErrorHandlerSinkDoesSucceed(t *testing.T) {
- fmt.Println("Test")
sinkErrorHandler, err := parseErrorHandler(
[]byte(`{"sink": {"endpoint": {"uri": "someUri"}}}`),
)
@@ -101,3 +99,11 @@ func TestParseErrorHandlerSinkWithParametersDoesSucceed(t *testing.T) {
assert.Equal(t, "value1", parameters["camel.beans.defaultErrorHandler.param1"])
assert.Equal(t, "value2", parameters["camel.beans.defaultErrorHandler.param2"])
}
+
+func TestParseErrorHandlerSinkFail(t *testing.T) {
+ _, err := parseErrorHandler(
+ []byte(`{"sink": {"ref": {"uri": "someUri"}}}`),
+ )
+ assert.NotNil(t, err)
+ assert.Equal(t, "Missing endpoint in Error Handler Sink", err.Error())
+}