Skip to content

Commit a465351

Browse files
committed
same for the forwarder
1 parent 8e91384 commit a465351

File tree

2 files changed

+92
-0
lines changed

2 files changed

+92
-0
lines changed

pkg/auditserver/server.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,7 @@ func New(logger *slog.Logger) (*AuditServer, error) {
236236
fwd, err = forwarder.NewUDPForwarder(rgConfig.Forwarding.Address)
237237
if err != nil {
238238
logger.Error("Failed to create UDP forwarder", "error", err)
239+
return nil, fmt.Errorf("failed to create UDP forwarder: %w", err)
239240
}
240241
}
241242

pkg/auditserver/server_test.go

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -412,6 +412,97 @@ func TestNew_WithInvalidRuleGroups(t *testing.T) {
412412
assert.Contains(t, logOutput, "ERROR")
413413
}
414414

415+
func TestNew_WithValidForwarder(t *testing.T) {
416+
// Set up a mock configuration with a valid forwarder address
417+
viper.Reset()
418+
viper.Set("rule_groups", []map[string]interface{}{
419+
{
420+
"name": "test_group",
421+
"rules": []string{
422+
"Request.Operation == 'read'",
423+
},
424+
"log_file": map[string]interface{}{
425+
"file_path": "/tmp/test.log",
426+
"max_size": 10,
427+
},
428+
"forwarding": map[string]interface{}{
429+
"enabled": true,
430+
"address": "127.0.0.1:9000",
431+
},
432+
},
433+
})
434+
435+
server, err := New(nil)
436+
437+
assert.NoError(t, err)
438+
assert.NotNil(t, server)
439+
assert.Len(t, server.ruleGroups, 1)
440+
assert.NotNil(t, server.ruleGroups[0].Forwarder)
441+
}
442+
443+
func TestNew_WithInvalidForwarder(t *testing.T) {
444+
// Set up a mock configuration with an invalid forwarder address
445+
viper.Reset()
446+
viper.Set("rule_groups", []map[string]interface{}{
447+
{
448+
"name": "test_group",
449+
"rules": []string{
450+
"Request.Operation == 'read'",
451+
},
452+
"log_file": map[string]interface{}{
453+
"file_path": "/tmp/test.log",
454+
"max_size": 10,
455+
},
456+
"forwarding": map[string]interface{}{
457+
"enabled": true,
458+
"address": "invalid:address:9000",
459+
},
460+
},
461+
})
462+
463+
var buf bytes.Buffer
464+
logger := slog.New(slog.NewJSONHandler(&buf, &slog.HandlerOptions{Level: slog.LevelDebug}))
465+
466+
server, err := New(logger)
467+
468+
assert.Error(t, err)
469+
assert.Nil(t, server)
470+
assert.Contains(t, err.Error(), "failed to create UDP forwarder")
471+
472+
// Verify error was logged
473+
logOutput := buf.String()
474+
assert.Contains(t, logOutput, "Failed to create UDP forwarder")
475+
assert.Contains(t, logOutput, "ERROR")
476+
}
477+
478+
func TestNew_WithDisabledForwarder(t *testing.T) {
479+
// Set up a mock configuration with forwarding disabled
480+
viper.Reset()
481+
viper.Set("rule_groups", []map[string]interface{}{
482+
{
483+
"name": "test_group",
484+
"rules": []string{
485+
"Request.Operation == 'read'",
486+
},
487+
"log_file": map[string]interface{}{
488+
"file_path": "/tmp/test.log",
489+
"max_size": 10,
490+
},
491+
"forwarding": map[string]interface{}{
492+
"enabled": false,
493+
"address": "127.0.0.1:9000",
494+
},
495+
},
496+
})
497+
498+
server, err := New(nil)
499+
500+
assert.NoError(t, err)
501+
assert.NotNil(t, server)
502+
assert.Len(t, server.ruleGroups, 1)
503+
assert.Nil(t, server.ruleGroups[0].Forwarder)
504+
}
505+
415506
func TestRuleGroup_shouldLog(t *testing.T) {
416507
// Define a sample audit log
417508
auditLog := &AuditLog{

0 commit comments

Comments
 (0)