From 717fc97ca039a2fdf2afbdd73b2a8b417b48c69e Mon Sep 17 00:00:00 2001 From: "Thibault \"bui\" Koechlin" Date: Wed, 14 Feb 2024 13:38:40 +0100 Subject: [PATCH] add SetMeta and SetParsed helpers (#2845) * add SetMeta and SetParsed helpers --- pkg/types/event.go | 16 ++++++++ pkg/types/event_test.go | 82 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 98 insertions(+) diff --git a/pkg/types/event.go b/pkg/types/event.go index 074241918..c7b19fe3c 100644 --- a/pkg/types/event.go +++ b/pkg/types/event.go @@ -46,6 +46,22 @@ type Event struct { Meta map[string]string `yaml:"Meta,omitempty" json:"Meta,omitempty"` } +func (e *Event) SetMeta(key string, value string) bool { + if e.Meta == nil { + e.Meta = make(map[string]string) + } + e.Meta[key] = value + return true +} + +func (e *Event) SetParsed(key string, value string) bool { + if e.Parsed == nil { + e.Parsed = make(map[string]string) + } + e.Parsed[key] = value + return true +} + func (e *Event) GetType() string { if e.Type == OVFLW { return "overflow" diff --git a/pkg/types/event_test.go b/pkg/types/event_test.go index 14ca48cd2..a2fad9ebc 100644 --- a/pkg/types/event_test.go +++ b/pkg/types/event_test.go @@ -9,6 +9,88 @@ import ( "github.com/crowdsecurity/crowdsec/pkg/models" ) +func TestSetParsed(t *testing.T) { + tests := []struct { + name string + evt *Event + key string + value string + expected bool + }{ + { + name: "SetParsed: Valid", + evt: &Event{}, + key: "test", + value: "test", + expected: true, + }, + { + name: "SetParsed: Existing map", + evt: &Event{Parsed: map[string]string{}}, + key: "test", + value: "test", + expected: true, + }, + { + name: "SetParsed: Existing map+key", + evt: &Event{Parsed: map[string]string{"test": "foobar"}}, + key: "test", + value: "test", + expected: true, + }, + } + + for _, tt := range tests { + tt := tt + t.Run(tt.name, func(t *testing.T) { + tt.evt.SetParsed(tt.key, tt.value) + assert.Equal(t, tt.value, tt.evt.Parsed[tt.key]) + }) + } + +} + +func TestSetMeta(t *testing.T) { + tests := []struct { + name string + evt *Event + key string + value string + expected bool + }{ + { + name: "SetMeta: Valid", + evt: &Event{}, + key: "test", + value: "test", + expected: true, + }, + { + name: "SetMeta: Existing map", + evt: &Event{Meta: map[string]string{}}, + key: "test", + value: "test", + expected: true, + }, + { + name: "SetMeta: Existing map+key", + evt: &Event{Meta: map[string]string{"test": "foobar"}}, + key: "test", + value: "test", + expected: true, + }, + } + + for _, tt := range tests { + tt := tt + t.Run(tt.name, func(t *testing.T) { + tt.evt.SetMeta(tt.key, tt.value) + assert.Equal(t, tt.value, tt.evt.GetMeta(tt.key)) + }) + } + +} + func TestParseIPSources(t *testing.T) { tests := []struct { name string