diff --git a/pkg/apis/eventing/v1/trigger_validation_test.go b/pkg/apis/eventing/v1/trigger_validation_test.go index 392e3b7df47..41732657241 100644 --- a/pkg/apis/eventing/v1/trigger_validation_test.go +++ b/pkg/apis/eventing/v1/trigger_validation_test.go @@ -23,6 +23,7 @@ import ( "github.com/google/go-cmp/cmp" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + eventingduckv1 "knative.dev/eventing/pkg/apis/duck/v1" "knative.dev/pkg/apis" duckv1 "knative.dev/pkg/apis/duck/v1" ) @@ -60,6 +61,7 @@ var ( ) func TestTriggerValidation(t *testing.T) { + invalidString := "invalid time" tests := []struct { name string t *Trigger @@ -258,7 +260,22 @@ func TestTriggerValidation(t *testing.T) { Message: `The provided injection annotation is only used for default broker, but non-default broker specified here: "test-broker"`, }, }, - } + { + name: "invalid delivery, invalid delay string", + t: &Trigger{ + ObjectMeta: v1.ObjectMeta{ + Namespace: "test-ns", + }, + Spec: TriggerSpec{ + Broker: "test_broker", + Filter: validEmptyFilter, + Subscriber: validSubscriber, + Delivery: &eventingduckv1.DeliverySpec{ + BackoffDelay: &invalidString, + }, + }}, + want: apis.ErrInvalidValue(invalidString, "spec.delivery.backoffDelay"), + }} for _, test := range tests { t.Run(test.name, func(t *testing.T) { @@ -271,6 +288,7 @@ func TestTriggerValidation(t *testing.T) { } func TestTriggerSpecValidation(t *testing.T) { + invalidString := "invalid time" tests := []struct { name string ts *TriggerSpec @@ -385,6 +403,17 @@ func TestTriggerSpecValidation(t *testing.T) { Subscriber: validSubscriber, }, want: &apis.FieldError{}, + }, { + name: "invalid delivery, invalid delay string", + ts: &TriggerSpec{ + Broker: "test_broker", + Filter: validEmptyFilter, + Subscriber: validSubscriber, + Delivery: &eventingduckv1.DeliverySpec{ + BackoffDelay: &invalidString, + }, + }, + want: apis.ErrInvalidValue(invalidString, "delivery.backoffDelay"), }} for _, test := range tests { diff --git a/pkg/apis/eventing/v1beta1/trigger_conversion.go b/pkg/apis/eventing/v1beta1/trigger_conversion.go index f311d2ef8ad..52c02d39de4 100644 --- a/pkg/apis/eventing/v1beta1/trigger_conversion.go +++ b/pkg/apis/eventing/v1beta1/trigger_conversion.go @@ -20,8 +20,7 @@ import ( "context" "fmt" - duckv1 "knative.dev/eventing/pkg/apis/duck/v1" - duckv1beta1 "knative.dev/eventing/pkg/apis/duck/v1beta1" + eventingduckv1 "knative.dev/eventing/pkg/apis/duck/v1" v1 "knative.dev/eventing/pkg/apis/eventing/v1" "knative.dev/pkg/apis" ) @@ -42,10 +41,8 @@ func (source *Trigger) ConvertTo(ctx context.Context, to apis.Convertible) error } } if source.Spec.Delivery != nil { - sink.Spec.Delivery = &duckv1.DeliverySpec{} - if err := source.Spec.Delivery.ConvertTo(ctx, sink.Spec.Delivery); err != nil { - return err - } + sink.Spec.Delivery = &eventingduckv1.DeliverySpec{} + source.Spec.Delivery.DeepCopyInto(sink.Spec.Delivery) } sink.Status.Status = source.Status.Status sink.Status.SubscriberURI = source.Status.SubscriberURI @@ -72,10 +69,8 @@ func (sink *Trigger) ConvertFrom(ctx context.Context, from apis.Convertible) err } } if source.Spec.Delivery != nil { - sink.Spec.Delivery = &duckv1beta1.DeliverySpec{} - if err := sink.Spec.Delivery.ConvertFrom(ctx, source.Spec.Delivery); err != nil { - return err - } + sink.Spec.Delivery = &eventingduckv1.DeliverySpec{} + source.Spec.Delivery.DeepCopyInto(sink.Spec.Delivery) } sink.Status.Status = source.Status.Status sink.Status.SubscriberURI = source.Status.SubscriberURI diff --git a/pkg/apis/eventing/v1beta1/trigger_types.go b/pkg/apis/eventing/v1beta1/trigger_types.go index e4f0da375ee..49b5d04b47f 100644 --- a/pkg/apis/eventing/v1beta1/trigger_types.go +++ b/pkg/apis/eventing/v1beta1/trigger_types.go @@ -23,7 +23,7 @@ import ( duckv1 "knative.dev/pkg/apis/duck/v1" "knative.dev/pkg/kmeta" - eventingduckv1beta1 "knative.dev/eventing/pkg/apis/duck/v1beta1" + eventingduckv1 "knative.dev/eventing/pkg/apis/duck/v1" ) const ( @@ -92,7 +92,7 @@ type TriggerSpec struct { // Delivery contains the delivery spec for this specific trigger. // +optional - Delivery *eventingduckv1beta1.DeliverySpec `json:"delivery,omitempty"` + Delivery *eventingduckv1.DeliverySpec `json:"delivery,omitempty"` } type TriggerFilter struct { diff --git a/pkg/apis/eventing/v1beta1/trigger_validation_test.go b/pkg/apis/eventing/v1beta1/trigger_validation_test.go index 81b96931080..6dc98ee3afd 100644 --- a/pkg/apis/eventing/v1beta1/trigger_validation_test.go +++ b/pkg/apis/eventing/v1beta1/trigger_validation_test.go @@ -23,6 +23,7 @@ import ( "github.com/google/go-cmp/cmp" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + eventingduckv1 "knative.dev/eventing/pkg/apis/duck/v1" "knative.dev/pkg/apis" duckv1 "knative.dev/pkg/apis/duck/v1" ) @@ -59,6 +60,7 @@ var ( ) func TestTriggerValidation(t *testing.T) { + invalidString := "invalid time" tests := []struct { name string t *Trigger @@ -214,6 +216,21 @@ func TestTriggerValidation(t *testing.T) { Paths: []string{injectionAnnotationPath}, Message: `The provided injection annotation value can only be "enabled" or "disabled", not "wut"`, }, + }, { + name: "invalid delivery, invalid delay string", + t: &Trigger{ + ObjectMeta: v1.ObjectMeta{ + Namespace: "test-ns", + }, + Spec: TriggerSpec{ + Broker: "test_broker", + Filter: validEmptyFilter, + Subscriber: validSubscriber, + Delivery: &eventingduckv1.DeliverySpec{ + BackoffDelay: &invalidString, + }, + }}, + want: apis.ErrInvalidValue(invalidString, "spec.delivery.backoffDelay"), }, } @@ -228,6 +245,8 @@ func TestTriggerValidation(t *testing.T) { } func TestTriggerSpecValidation(t *testing.T) { + invalidString := "invalid time" + tests := []struct { name string ts *TriggerSpec @@ -342,6 +361,17 @@ func TestTriggerSpecValidation(t *testing.T) { Subscriber: validSubscriber, }, want: &apis.FieldError{}, + }, { + name: "invalid delivery, invalid delay string", + ts: &TriggerSpec{ + Broker: "test_broker", + Filter: validEmptyFilter, + Subscriber: validSubscriber, + Delivery: &eventingduckv1.DeliverySpec{ + BackoffDelay: &invalidString, + }, + }, + want: apis.ErrInvalidValue(invalidString, "delivery.backoffDelay"), }} for _, test := range tests { diff --git a/pkg/apis/eventing/v1beta1/zz_generated.deepcopy.go b/pkg/apis/eventing/v1beta1/zz_generated.deepcopy.go index fb5af442b8c..893233786c9 100644 --- a/pkg/apis/eventing/v1beta1/zz_generated.deepcopy.go +++ b/pkg/apis/eventing/v1beta1/zz_generated.deepcopy.go @@ -22,6 +22,7 @@ package v1beta1 import ( runtime "k8s.io/apimachinery/pkg/runtime" + duckv1 "knative.dev/eventing/pkg/apis/duck/v1" duckv1beta1 "knative.dev/eventing/pkg/apis/duck/v1beta1" apis "knative.dev/pkg/apis" v1 "knative.dev/pkg/apis/duck/v1" @@ -353,7 +354,7 @@ func (in *TriggerSpec) DeepCopyInto(out *TriggerSpec) { in.Subscriber.DeepCopyInto(&out.Subscriber) if in.Delivery != nil { in, out := &in.Delivery, &out.Delivery - *out = new(duckv1beta1.DeliverySpec) + *out = new(duckv1.DeliverySpec) (*in).DeepCopyInto(*out) } return