Skip to content

Commit ad1d979

Browse files
committed
more tests
1 parent 100df76 commit ad1d979

File tree

2 files changed

+52
-34
lines changed

2 files changed

+52
-34
lines changed

pkg/auditserver/server.go

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,6 @@ func (as *AuditServer) React(frame []byte, c gnet.Conn) (out []byte, action gnet
174174
// zero‑copy write to log when possible
175175
if rg.Writer != nil {
176176
_, _ = rg.Writer.Write(frame)
177-
_, _ = rg.Writer.Write([]byte{'\n'})
178177
} else {
179178
rg.Logger.Print(string(frame))
180179
}
@@ -251,10 +250,7 @@ func New(logger *slog.Logger) (*AuditServer, error) {
251250
var messenger messaging.Messenger
252251
switch rgConfig.Messaging.Type {
253252
case "mattermost":
254-
messenger = messaging.NewMattermostMessenger(
255-
rgConfig.Messaging.URL,
256-
rgConfig.Messaging.Token,
257-
rgConfig.Messaging.Channel)
253+
messenger = messaging.NewMattermostMessenger(rgConfig.Messaging.URL, rgConfig.Messaging.Token, rgConfig.Messaging.Channel)
258254
case "mattermost_webhook":
259255
messenger = messaging.NewMattermostWebhookMessenger(rgConfig.Messaging.WebhookURL)
260256
default:

pkg/auditserver/server_test.go

Lines changed: 51 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"
@@ -829,22 +828,18 @@ func auditFrame() []byte {
829828
return []byte(`{"type":"request","time":"2000-01-01T00:00:00Z","auth":{},"request":{},"response":{}}`)
830829
}
831830

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-
}
831+
// returns a compiled rule that always evaluates to false
832+
func falseProgram(t *testing.T) *vm.Program {
833+
t.Helper()
834+
p, err := expr.Compile("false")
835+
require.NoError(t, err)
836+
return p
845837
}
846838

847839
func TestReact_Branches(t *testing.T) {
840+
logger := slog.New(slog.NewTextHandler(io.Discard, &slog.HandlerOptions{Level: slog.LevelDebug}))
841+
frame := auditFrame()
842+
848843
tests := []struct {
849844
name string
850845
group RuleGroup
@@ -853,43 +848,70 @@ func TestReact_Branches(t *testing.T) {
853848
wantFwdCalls int
854849
}{
855850
{
856-
name: "match_no_side_effects_returns_None",
857-
group: newRuleGroup(true, nil, nil),
851+
name: "match_no_side_effects_returns_None",
852+
group: RuleGroup{
853+
Name: "matchOnly",
854+
// len==0 => always matches
855+
CompiledRules: nil,
856+
Writer: new(bytes.Buffer),
857+
},
858858
wantAction: gnet.None,
859859
},
860860
{
861-
name: "forwarder_ok_triggers_Close",
862-
group: newRuleGroup(true, nil, &dummyForwarder{}),
861+
name: "forwarder_ok_triggers_Close",
862+
group: RuleGroup{
863+
Name: "forwardOK",
864+
CompiledRules: nil,
865+
Writer: new(bytes.Buffer),
866+
Forwarder: &dummyForwarder{},
867+
},
863868
wantAction: gnet.Close,
864869
wantFwdCalls: 1,
865870
},
866871
{
867-
name: "forwarder_error_triggers_Close",
868-
group: newRuleGroup(true, nil, &dummyForwarder{forwardErr: errors.New("x")}),
872+
name: "forwarder_error_triggers_Close",
873+
group: RuleGroup{
874+
Name: "forwardErr",
875+
CompiledRules: nil,
876+
Writer: new(bytes.Buffer),
877+
Forwarder: &dummyForwarder{forwardErr: errors.New("boom")},
878+
},
869879
wantAction: gnet.Close,
870880
wantFwdCalls: 1,
871881
},
872882
{
873-
name: "messenger_error_triggers_Close",
874-
group: newRuleGroup(true, &dummyMessenger{sendErr: errors.New("x")}, nil),
883+
name: "messenger_error_triggers_Close",
884+
group: RuleGroup{
885+
Name: "msgErr",
886+
CompiledRules: nil,
887+
Writer: new(bytes.Buffer),
888+
Messenger: &dummyMessenger{sendErr: errors.New("boom")},
889+
},
875890
wantAction: gnet.Close,
876891
wantMsgCalls: 1,
877892
},
878893
{
879-
name: "no_match_triggers_Close",
880-
group: newRuleGroup(false, nil, nil),
894+
name: "no_match_triggers_Close",
895+
group: RuleGroup{
896+
Name: "noMatch",
897+
CompiledRules: []CompiledRule{{
898+
Program: falseProgram(t),
899+
}},
900+
Writer: new(bytes.Buffer),
901+
},
881902
wantAction: gnet.Close,
882903
},
883904
}
884905

885-
frame := auditFrame()
886-
887906
for _, tc := range tests {
888907
tc := tc // capture range variable
889908
t.Run(tc.name, func(t *testing.T) {
890-
srv := &AuditServer{ruleGroups: []RuleGroup{tc.group}}
891-
_, act := srv.React(frame, nil)
909+
srv := &AuditServer{
910+
logger: logger,
911+
ruleGroups: []RuleGroup{tc.group},
912+
}
892913

914+
_, act := srv.React(frame, nil)
893915
require.Equal(t, tc.wantAction, act)
894916

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

0 commit comments

Comments
 (0)