Skip to content

Commit 380070e

Browse files
flags: add a test for prepareEventsToTrace
1 parent 766f588 commit 380070e

File tree

1 file changed

+95
-0
lines changed

1 file changed

+95
-0
lines changed
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
package flags
2+
3+
import (
4+
"testing"
5+
6+
"github.com/aquasecurity/tracee/pkg/events"
7+
"github.com/stretchr/testify/assert"
8+
"github.com/stretchr/testify/require"
9+
)
10+
11+
func TestFilter_prepareEventsToTrace(t *testing.T) {
12+
testCases := []struct {
13+
name string
14+
eventFilter cliFilter
15+
setFilter cliFilter
16+
expected []events.ID
17+
expectedErr error
18+
}{
19+
{
20+
name: "happy path - random events",
21+
eventFilter: cliFilter{
22+
Equal: []string{"ptrace", "openat"},
23+
},
24+
expected: []events.ID{events.Ptrace, events.Openat},
25+
},
26+
{
27+
name: "happy path - sched_proc*",
28+
eventFilter: cliFilter{
29+
Equal: []string{"sched_proc*", "openat"},
30+
},
31+
expected: []events.ID{events.SchedProcessExec, events.SchedProcessExit, events.SchedProcessFork, events.Openat},
32+
},
33+
{
34+
name: "happy path - sched_proc* with exclude",
35+
eventFilter: cliFilter{
36+
Equal: []string{"sched_proc*", "openat"},
37+
NotEqual: []string{"sched_process_exec"},
38+
},
39+
expected: []events.ID{events.SchedProcessExit, events.SchedProcessFork, events.Openat},
40+
},
41+
{
42+
name: "happy path - containers set",
43+
setFilter: cliFilter{
44+
Equal: []string{"containers"},
45+
},
46+
expected: []events.ID{events.ContainerCreate, events.ContainerRemove, events.ExistingContainer},
47+
},
48+
{
49+
name: "sad path - event doesn't exist",
50+
eventFilter: cliFilter{
51+
Equal: []string{"blah"},
52+
},
53+
expectedErr: InvalidEventError("blah"),
54+
},
55+
{
56+
name: "sad path - no event with prefix",
57+
eventFilter: cliFilter{
58+
Equal: []string{"blah*"},
59+
},
60+
expectedErr: InvalidEventError("blah*"),
61+
},
62+
{
63+
name: "sad path - no event with suffix",
64+
eventFilter: cliFilter{
65+
Equal: []string{"*blah"},
66+
},
67+
expectedErr: InvalidEventError("*blah"),
68+
},
69+
{
70+
name: "sad path - set doesn't exist",
71+
setFilter: cliFilter{
72+
Equal: []string{"blah"},
73+
},
74+
expectedErr: InvalidSetError("blah"),
75+
},
76+
}
77+
eventsNameToID := events.Definitions.NamesToIDs()
78+
// remove internal events since they shouldn't be accesible by users
79+
for event, id := range eventsNameToID {
80+
if events.Definitions.Get(id).Internal {
81+
delete(eventsNameToID, event)
82+
}
83+
}
84+
for _, tc := range testCases {
85+
t.Run(tc.name, func(t *testing.T) {
86+
res, err := prepareEventsToTrace(tc.eventFilter, tc.setFilter, eventsNameToID)
87+
if tc.expectedErr != nil {
88+
assert.Equal(t, err.Error(), tc.expectedErr.Error())
89+
} else {
90+
require.NoError(t, err)
91+
assert.ElementsMatch(t, res, tc.expected)
92+
}
93+
})
94+
}
95+
}

0 commit comments

Comments
 (0)