vault/audit/sink_metric_timer_test.go
Vault Automation 0c6c13dd38
license: update headers to IBM Corp. (#10229) (#10233)
* license: update headers to IBM Corp.
* `make proto`
* update offset because source file changed

Signed-off-by: Ryan Cragun <me@ryan.ec>
Co-authored-by: Ryan Cragun <me@ryan.ec>
2025-10-21 15:20:20 -06:00

68 lines
1.6 KiB
Go

// Copyright IBM Corp. 2016, 2025
// SPDX-License-Identifier: BUSL-1.1
package audit
import (
"testing"
"github.com/hashicorp/eventlogger"
"github.com/hashicorp/vault/internal/observability/event"
"github.com/stretchr/testify/require"
)
// TestNewSinkMetricTimer ensures that parameters are checked correctly and errors
// reported as expected when attempting to create a sinkMetricTimer.
func TestNewSinkMetricTimer(t *testing.T) {
t.Parallel()
tests := map[string]struct {
name string
node eventlogger.Node
isErrorExpected bool
expectedErrorMessage string
}{
"happy": {
name: "foo",
node: &event.FileSink{},
isErrorExpected: false,
},
"no-name": {
name: "",
isErrorExpected: true,
expectedErrorMessage: "name is required: invalid internal parameter",
},
"no-node": {
name: "foo",
node: nil,
isErrorExpected: true,
expectedErrorMessage: "sink node is required: invalid internal parameter",
},
"bad-node": {
name: "foo",
node: &entryFormatter{},
isErrorExpected: true,
expectedErrorMessage: "sink node must be of type 'sink': invalid internal parameter",
},
}
for name, tc := range tests {
name := name
tc := tc
t.Run(name, func(t *testing.T) {
t.Parallel()
m, err := newSinkMetricTimer(tc.name, tc.node)
switch {
case tc.isErrorExpected:
require.Error(t, err)
require.EqualError(t, err, tc.expectedErrorMessage)
require.Nil(t, m)
default:
require.NoError(t, err)
require.NotNil(t, m)
}
})
}
}