Skip to content

Commit

Permalink
Add missing attribute filter tests (knative#7516)
Browse files Browse the repository at this point in the history
* Add missing attribute unit tests

Signed-off-by: Calum Murray <cmurray@redhat.com>

* Add missing attribute rekt test

Signed-off-by: Calum Murray <cmurray@redhat.com>

---------

Signed-off-by: Calum Murray <cmurray@redhat.com>
  • Loading branch information
Cali0707 committed Dec 21, 2023
1 parent c674523 commit 32cbcec
Show file tree
Hide file tree
Showing 4 changed files with 67 additions and 1 deletion.
8 changes: 8 additions & 0 deletions pkg/eventfilter/subscriptionsapi/cesql_filter_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,14 @@ func TestCESQLFilter(t *testing.T) {
expression: fmt.Sprintf("(type = '%s') OR (source = '%s')", eventType, "some-other-source"),
want: eventfilter.PassFilter,
},
"Missing attribute less than comparison": {
expression: fmt.Sprintf("missingattribute < %d", 5),
want: eventfilter.FailFilter,
},
"Missing attribute equals comparison": {
expression: fmt.Sprintf("missingattribute = %s", "missinsvalue"),
want: eventfilter.FailFilter,
},
}
for name, tt := range tests {
t.Run(name, func(t *testing.T) {
Expand Down
5 changes: 5 additions & 0 deletions pkg/eventfilter/subscriptionsapi/exact_filter_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,11 @@ func TestExactMatchFilter(t *testing.T) {
event: makeEventWithExtension(extensionName, extensionValue),
want: eventfilter.PassFilter,
},
"Missing attribute": {
attribute: "missingattribute",
value: "missingvalue",
want: eventfilter.FailFilter,
},
}
for name, tt := range tests {
t.Run(name, func(t *testing.T) {
Expand Down
50 changes: 49 additions & 1 deletion test/rekt/features/new_trigger_filters/feature.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ type CloudEventsContext struct {
eventID string
eventDataSchema string
eventDataContentType string
eventExtensions map[string]interface{}
shouldDeliver bool
}

Expand All @@ -43,7 +44,7 @@ type CloudEventsContext struct {
// broker implementations for testing.
func NewFiltersFeatureSet(installBroker InstallBrokerFunc) *feature.FeatureSet {
features := SingleDialectFilterFeatures(installBroker)
features = append(features, AllFilterFeature(installBroker), AnyFilterFeature(installBroker), MultipleTriggersAndSinksFeature(installBroker))
features = append(features, AllFilterFeature(installBroker), AnyFilterFeature(installBroker), MultipleTriggersAndSinksFeature(installBroker), MissingAttributesFeature(installBroker))
return &feature.FeatureSet{
Name: "New Trigger Filters",
Features: features,
Expand Down Expand Up @@ -330,3 +331,50 @@ func MultipleTriggersAndSinksFeature(installBroker InstallBrokerFunc) *feature.F

return f
}

func MissingAttributesFeature(installBroker InstallBrokerFunc) *feature.Feature {
f := feature.NewFeature()

eventContexts := []CloudEventsContext{
// this event will have no extension, so the filters should all fail
{
shouldDeliver: false,
},
// This event has the extension, so the filters shold all pass
{
eventExtensions: map[string]interface{}{
"extensionattribute": "extensionvalue",
},
shouldDeliver: true,
},
}

filters := []eventingv1.SubscriptionsAPIFilter{
{
All: []eventingv1.SubscriptionsAPIFilter{
{
Exact: map[string]string{
"extensionattribute": "extensionvalue",
},
},
{
Prefix: map[string]string{
"extensionattribute": "extension",
},
},
{
Suffix: map[string]string{
"extensionattribute": "value",
},
},
{
CESQL: "extensionattribute LIKE '%value'",
},
},
},
}

createNewFiltersFeature(f, eventContexts, filters, installBroker)

return f
}
5 changes: 5 additions & 0 deletions test/rekt/features/new_trigger_filters/filters.go
Original file line number Diff line number Diff line change
Expand Up @@ -88,5 +88,10 @@ func newEventFromEventContext(eventCtx CloudEventsContext) event.Event {
if eventCtx.eventDataContentType != "" {
e.SetDataContentType(eventCtx.eventDataContentType)
}
if eventCtx.eventExtensions != nil {
for k, v := range eventCtx.eventExtensions {
e.SetExtension(k, v)
}
}
return e
}

0 comments on commit 32cbcec

Please sign in to comment.