diff --git a/http/api/event.go b/http/api/event.go index 52ea2205..18d5c522 100644 --- a/http/api/event.go +++ b/http/api/event.go @@ -67,7 +67,7 @@ func (e *Event) Filter(ef *EventFilter) bool { for k, r := range ef.reData { v, ok := e.Data[k] if !ok { - continue + return false } if !r.MatchString(v) { diff --git a/http/api/event_test.go b/http/api/event_test.go index 08375786..985967a2 100644 --- a/http/api/event_test.go +++ b/http/api/event_test.go @@ -80,6 +80,60 @@ func TestEventFilter(t *testing.T) { require.False(t, res) } +func TestEventFilterDataKey(t *testing.T) { + event := Event{ + Timestamp: 1234, + Level: 3, + Component: "foobar", + Message: "none", + Data: map[string]string{ + "foo": "bar", + }, + } + + filter := EventFilter{ + Component: "foobar", + Level: "info", + Message: "none", + } + + err := filter.Compile() + require.NoError(t, err) + + res := event.Filter(&filter) + require.True(t, res) + + filter = EventFilter{ + Component: "foobar", + Level: "info", + Message: "none", + Data: map[string]string{ + "bar": "foo", + }, + } + + err = filter.Compile() + require.NoError(t, err) + + res = event.Filter(&filter) + require.False(t, res) + + filter = EventFilter{ + Component: "foobar", + Level: "info", + Message: "none", + Data: map[string]string{ + "foo": "bar", + }, + } + + err = filter.Compile() + require.NoError(t, err) + + res = event.Filter(&filter) + require.True(t, res) +} + func BenchmarkEventFilters(b *testing.B) { event := Event{ Timestamp: 1234,