crowdsec/pkg/types/event_test.go
Thibault "bui" Koechlin 717fc97ca0
add SetMeta and SetParsed helpers (#2845)
* add SetMeta and SetParsed helpers
2024-02-14 13:38:40 +01:00

162 lines
2.9 KiB
Go

package types
import (
"net"
"testing"
"github.com/stretchr/testify/assert"
"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
evt Event
expected []net.IP
}{
{
name: "ParseIPSources: Valid Log Sources",
evt: Event{
Type: LOG,
Meta: map[string]string{
"source_ip": "127.0.0.1",
},
},
expected: []net.IP{
net.ParseIP("127.0.0.1"),
},
},
{
name: "ParseIPSources: Valid Overflow Sources",
evt: Event{
Type: OVFLW,
Overflow: RuntimeAlert{
Sources: map[string]models.Source{
"127.0.0.1": {},
},
},
},
expected: []net.IP{
net.ParseIP("127.0.0.1"),
},
},
{
name: "ParseIPSources: Invalid Log Sources",
evt: Event{
Type: LOG,
Meta: map[string]string{
"source_ip": "IAMNOTANIP",
},
},
expected: []net.IP{
nil,
},
},
{
name: "ParseIPSources: Invalid Overflow Sources",
evt: Event{
Type: OVFLW,
Overflow: RuntimeAlert{
Sources: map[string]models.Source{
"IAMNOTANIP": {},
},
},
},
expected: []net.IP{
nil,
},
},
}
for _, tt := range tests {
tt := tt
t.Run(tt.name, func(t *testing.T) {
ips := tt.evt.ParseIPSources()
assert.Equal(t, tt.expected, ips)
})
}
}