diff --git a/pkg/reconciler/subscription/subscription.go b/pkg/reconciler/subscription/subscription.go index e241a1b0a70..adba698d677 100644 --- a/pkg/reconciler/subscription/subscription.go +++ b/pkg/reconciler/subscription/subscription.go @@ -139,6 +139,10 @@ func (r *Reconciler) Reconcile(ctx context.Context, key string) error { func (r *Reconciler) reconcile(ctx context.Context, subscription *v1alpha1.Subscription) error { subscription.Status.InitializeConditions() + // Verify subscription is valid. + if err := subscription.Validate(ctx); err != nil { + return err + } // See if the subscription has been deleted if subscription.DeletionTimestamp != nil { // If the subscription is Ready, then we have to remove it @@ -282,7 +286,7 @@ func (r *Reconciler) resolveResult(ctx context.Context, namespace string, replyS if s.Status.Address != nil { return resolve.DomainToURL(s.Status.Address.Hostname), nil } - return "", fmt.Errorf("status does not contain address") + return "", fmt.Errorf("reply.status does not contain address") } func (r *Reconciler) syncPhysicalChannel(ctx context.Context, sub *v1alpha1.Subscription, isDeleted bool) error { diff --git a/pkg/reconciler/subscription/subscription_test.go b/pkg/reconciler/subscription/subscription_test.go index 84bf5e5255d..010a6903da1 100644 --- a/pkg/reconciler/subscription/subscription_test.go +++ b/pkg/reconciler/subscription/subscription_test.go @@ -70,7 +70,7 @@ var ( serviceURI = "http://" + serviceDNS + "/" subscriberGVK = metav1.GroupVersionKind{ - Group: "testing.eventing.knative.dev", + Group: "eventing.knative.dev", Version: "v1alpha1", Kind: "Subscriber", } @@ -154,7 +154,7 @@ func TestAllCases(t *testing.T) { Key: testNS + "/" + subscriptionName, WantErr: true, WantEvents: []string{ - Eventf(corev1.EventTypeWarning, "SubscriberResolveFailed", "Failed to resolve spec.subscriber: subscribers.testing.eventing.knative.dev %q not found", subscriberName), + Eventf(corev1.EventTypeWarning, "SubscriberResolveFailed", "Failed to resolve spec.subscriber: subscribers.eventing.knative.dev %q not found", subscriberName), }, WantStatusUpdates: []clientgotesting.UpdateActionImpl{{ Object: NewSubscription(subscriptionName, testNS, @@ -214,8 +214,7 @@ func TestAllCases(t *testing.T) { Key: testNS + "/" + subscriptionName, WantErr: true, WantEvents: []string{ - Eventf(corev1.EventTypeWarning, "ResultResolveFailed", "Failed to resolve spec.reply: status does not contain address"), - Eventf(corev1.EventTypeWarning, "SubscriptionUpdateStatusFailed", "Failed to update Subscription's status: status does not contain address"), // TODO: BUGBUG THIS IS WEIRD + Eventf(corev1.EventTypeWarning, "SubscriptionUpdateStatusFailed", "Failed to update Subscription's status: invalid value: Subscriber: spec.reply.kind\nonly 'Channel' kind is allowed"), }, WantStatusUpdates: []clientgotesting.UpdateActionImpl{{ Object: NewSubscription(subscriptionName, testNS, @@ -224,7 +223,6 @@ func TestAllCases(t *testing.T) { WithSubscriptionReply(subscriberGVK, replyName), // The first reconciliation will initialize the status conditions. WithInitSubscriptionConditions, - WithSubscriptionPhysicalSubscriptionSubscriber(subscriberURI), ), }}, }, {