Skip to content

Commit ddb7453

Browse files
committed
more tests
1 parent 100df76 commit ddb7453

File tree

1 file changed

+55
-29
lines changed

1 file changed

+55
-29
lines changed

pkg/auditserver/server_test.go

Lines changed: 55 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,7 @@ import (
55
"encoding/json"
66
"errors"
77
"fmt"
8-
"github.com/ncode/vault-audit-filter/pkg/forwarder"
9-
"github.com/ncode/vault-audit-filter/pkg/messaging"
8+
"github.com/expr-lang/expr/vm"
109
"github.com/stretchr/testify/require"
1110
"io"
1211
"io/ioutil"
@@ -804,6 +803,10 @@ func TestAuditServer_React_WithForwarding(t *testing.T) {
804803
}
805804
}
806805

806+
/* ----------------------------------------------------------------
807+
lightweight mocks
808+
-----------------------------------------------------------------*/
809+
807810
type dummyMessenger struct {
808811
sendErr error
809812
calls int
@@ -829,22 +832,18 @@ func auditFrame() []byte {
829832
return []byte(`{"type":"request","time":"2000-01-01T00:00:00Z","auth":{},"request":{},"response":{}}`)
830833
}
831834

832-
// rule‑group factory: match=true → no rules (auto‑match); match=false → 1 rule that always fails.
833-
func newRuleGroup(match bool, msgr messaging.Messenger, fwd forwarder.Forwarder) RuleGroup {
834-
var compiled []CompiledRule
835-
if !match {
836-
compiled = []CompiledRule{{Program: nil}} // any non‑nil slice forces shouldLog=false
837-
}
838-
return RuleGroup{
839-
Name: "grp",
840-
CompiledRules: compiled,
841-
Messenger: msgr,
842-
Forwarder: fwd,
843-
Writer: new(bytes.Buffer), // satisfies io.Writer, avoids disk I/O
844-
}
835+
// returns a compiled rule that always evaluates to false
836+
func falseProgram(t *testing.T) *vm.Program {
837+
t.Helper()
838+
p, err := expr.Compile("false")
839+
require.NoError(t, err)
840+
return p
845841
}
846842

847843
func TestReact_Branches(t *testing.T) {
844+
logger := slog.New(slog.NewTextHandler(io.Discard, &slog.HandlerOptions{Level: slog.LevelDebug}))
845+
frame := auditFrame()
846+
848847
tests := []struct {
849848
name string
850849
group RuleGroup
@@ -853,43 +852,70 @@ func TestReact_Branches(t *testing.T) {
853852
wantFwdCalls int
854853
}{
855854
{
856-
name: "match_no_side_effects_returns_None",
857-
group: newRuleGroup(true, nil, nil),
855+
name: "match_no_side_effects_returns_None",
856+
group: RuleGroup{
857+
Name: "matchOnly",
858+
// len==0 => always matches
859+
CompiledRules: nil,
860+
Writer: new(bytes.Buffer),
861+
},
858862
wantAction: gnet.None,
859863
},
860864
{
861-
name: "forwarder_ok_triggers_Close",
862-
group: newRuleGroup(true, nil, &dummyForwarder{}),
865+
name: "forwarder_ok_triggers_Close",
866+
group: RuleGroup{
867+
Name: "forwardOK",
868+
CompiledRules: nil,
869+
Writer: new(bytes.Buffer),
870+
Forwarder: &dummyForwarder{},
871+
},
863872
wantAction: gnet.Close,
864873
wantFwdCalls: 1,
865874
},
866875
{
867-
name: "forwarder_error_triggers_Close",
868-
group: newRuleGroup(true, nil, &dummyForwarder{forwardErr: errors.New("x")}),
876+
name: "forwarder_error_triggers_Close",
877+
group: RuleGroup{
878+
Name: "forwardErr",
879+
CompiledRules: nil,
880+
Writer: new(bytes.Buffer),
881+
Forwarder: &dummyForwarder{forwardErr: errors.New("boom")},
882+
},
869883
wantAction: gnet.Close,
870884
wantFwdCalls: 1,
871885
},
872886
{
873-
name: "messenger_error_triggers_Close",
874-
group: newRuleGroup(true, &dummyMessenger{sendErr: errors.New("x")}, nil),
887+
name: "messenger_error_triggers_Close",
888+
group: RuleGroup{
889+
Name: "msgErr",
890+
CompiledRules: nil,
891+
Writer: new(bytes.Buffer),
892+
Messenger: &dummyMessenger{sendErr: errors.New("boom")},
893+
},
875894
wantAction: gnet.Close,
876895
wantMsgCalls: 1,
877896
},
878897
{
879-
name: "no_match_triggers_Close",
880-
group: newRuleGroup(false, nil, nil),
898+
name: "no_match_triggers_Close",
899+
group: RuleGroup{
900+
Name: "noMatch",
901+
CompiledRules: []CompiledRule{{
902+
Program: falseProgram(t),
903+
}},
904+
Writer: new(bytes.Buffer),
905+
},
881906
wantAction: gnet.Close,
882907
},
883908
}
884909

885-
frame := auditFrame()
886-
887910
for _, tc := range tests {
888911
tc := tc // capture range variable
889912
t.Run(tc.name, func(t *testing.T) {
890-
srv := &AuditServer{ruleGroups: []RuleGroup{tc.group}}
891-
_, act := srv.React(frame, nil)
913+
srv := &AuditServer{
914+
logger: logger,
915+
ruleGroups: []RuleGroup{tc.group},
916+
}
892917

918+
_, act := srv.React(frame, nil)
893919
require.Equal(t, tc.wantAction, act)
894920

895921
if dm, ok := tc.group.Messenger.(*dummyMessenger); ok {

0 commit comments

Comments
 (0)