Moved HeaderFormatter to an Option for NewEntryFormatter, updated tests (#22116)

This commit is contained in:
Peter Wilson
2023-07-28 17:07:20 +01:00
committed by GitHub
parent 4f7a8fb494
commit 30114d0038
12 changed files with 43 additions and 34 deletions

View File

@@ -30,7 +30,7 @@ var (
// NewEntryFormatter should be used to create an EntryFormatter. // NewEntryFormatter should be used to create an EntryFormatter.
// Accepted options: WithPrefix. // Accepted options: WithPrefix.
func NewEntryFormatter(config FormatterConfig, salter Salter, headersConfig HeaderFormatter, opt ...Option) (*EntryFormatter, error) { func NewEntryFormatter(config FormatterConfig, salter Salter, opt ...Option) (*EntryFormatter, error) {
const op = "audit.NewEntryFormatter" const op = "audit.NewEntryFormatter"
if salter == nil { if salter == nil {
@@ -50,7 +50,7 @@ func NewEntryFormatter(config FormatterConfig, salter Salter, headersConfig Head
return &EntryFormatter{ return &EntryFormatter{
salter: salter, salter: salter,
config: config, config: config,
headersConfig: headersConfig, headerFormatter: opts.withHeaderFormatter,
prefix: opts.withPrefix, prefix: opts.withPrefix,
}, nil }, nil
} }

View File

@@ -127,7 +127,7 @@ func TestNewEntryFormatter(t *testing.T) {
cfg, err := NewFormatterConfig(tc.Options...) cfg, err := NewFormatterConfig(tc.Options...)
require.NoError(t, err) require.NoError(t, err)
f, err := NewEntryFormatter(cfg, ss, nil, tc.Options...) f, err := NewEntryFormatter(cfg, ss, tc.Options...)
switch { switch {
case tc.IsErrorExpected: case tc.IsErrorExpected:
@@ -150,7 +150,7 @@ func TestEntryFormatter_Reopen(t *testing.T) {
cfg, err := NewFormatterConfig() cfg, err := NewFormatterConfig()
require.NoError(t, err) require.NoError(t, err)
f, err := NewEntryFormatter(cfg, ss, nil) f, err := NewEntryFormatter(cfg, ss)
require.NoError(t, err) require.NoError(t, err)
require.NotNil(t, f) require.NotNil(t, f)
require.NoError(t, f.Reopen()) require.NoError(t, f.Reopen())
@@ -162,7 +162,7 @@ func TestEntryFormatter_Type(t *testing.T) {
cfg, err := NewFormatterConfig() cfg, err := NewFormatterConfig()
require.NoError(t, err) require.NoError(t, err)
f, err := NewEntryFormatter(cfg, ss, nil) f, err := NewEntryFormatter(cfg, ss)
require.NoError(t, err) require.NoError(t, err)
require.NotNil(t, f) require.NotNil(t, f)
require.Equal(t, eventlogger.NodeTypeFormatter, f.Type()) require.Equal(t, eventlogger.NodeTypeFormatter, f.Type())
@@ -305,7 +305,7 @@ func TestEntryFormatter_Process(t *testing.T) {
cfg, err := NewFormatterConfig(WithFormat(tc.RequiredFormat.String())) cfg, err := NewFormatterConfig(WithFormat(tc.RequiredFormat.String()))
require.NoError(t, err) require.NoError(t, err)
f, err := NewEntryFormatter(cfg, ss, nil) f, err := NewEntryFormatter(cfg, ss)
require.NoError(t, err) require.NoError(t, err)
require.NotNil(t, f) require.NotNil(t, f)
@@ -372,7 +372,7 @@ func BenchmarkAuditFileSink_Process(b *testing.B) {
cfg, err := NewFormatterConfig() cfg, err := NewFormatterConfig()
require.NoError(b, err) require.NoError(b, err)
ss := newStaticSalt(b) ss := newStaticSalt(b)
formatter, err := NewEntryFormatter(cfg, ss, nil) formatter, err := NewEntryFormatter(cfg, ss)
require.NoError(b, err) require.NoError(b, err)
require.NotNil(b, formatter) require.NotNil(b, formatter)

View File

@@ -96,7 +96,7 @@ func NewTemporaryFormatter(requiredFormat, prefix string) (*EntryFormatterWriter
return nil, err return nil, err
} }
eventFormatter, err := NewEntryFormatter(cfg, &nonPersistentSalt{}, nil, WithPrefix(prefix)) eventFormatter, err := NewEntryFormatter(cfg, &nonPersistentSalt{}, WithPrefix(prefix))
if err != nil { if err != nil {
return nil, err return nil, err
} }

View File

@@ -127,7 +127,7 @@ func TestNewEntryFormatterWriter(t *testing.T) {
var f Formatter var f Formatter
if !tc.UseNilFormatter { if !tc.UseNilFormatter {
tempFormatter, err := NewEntryFormatter(cfg, s, nil) tempFormatter, err := NewEntryFormatter(cfg, s)
require.NoError(t, err) require.NoError(t, err)
require.NotNil(t, tempFormatter) require.NotNil(t, tempFormatter)
f = tempFormatter f = tempFormatter
@@ -192,7 +192,7 @@ func TestEntryFormatter_FormatRequest(t *testing.T) {
ss := newStaticSalt(t) ss := newStaticSalt(t)
cfg, err := NewFormatterConfig() cfg, err := NewFormatterConfig()
require.NoError(t, err) require.NoError(t, err)
f, err := NewEntryFormatter(cfg, ss, nil) f, err := NewEntryFormatter(cfg, ss)
require.NoError(t, err) require.NoError(t, err)
var ctx context.Context var ctx context.Context
@@ -259,7 +259,7 @@ func TestEntryFormatter_FormatResponse(t *testing.T) {
ss := newStaticSalt(t) ss := newStaticSalt(t)
cfg, err := NewFormatterConfig() cfg, err := NewFormatterConfig()
require.NoError(t, err) require.NoError(t, err)
f, err := NewEntryFormatter(cfg, ss, nil) f, err := NewEntryFormatter(cfg, ss)
require.NoError(t, err) require.NoError(t, err)
var ctx context.Context var ctx context.Context
@@ -361,7 +361,7 @@ func TestElideListResponses(t *testing.T) {
formatResponse := func(t *testing.T, config FormatterConfig, operation logical.Operation, inputData map[string]interface{}, formatResponse := func(t *testing.T, config FormatterConfig, operation logical.Operation, inputData map[string]interface{},
) { ) {
f, err := NewEntryFormatter(config, &tfw, nil) f, err := NewEntryFormatter(config, &tfw)
require.NoError(t, err) require.NoError(t, err)
formatter, err := NewEntryFormatterWriter(config, f, &tfw) formatter, err := NewEntryFormatterWriter(config, f, &tfw)
require.NoError(t, err) require.NoError(t, err)

View File

@@ -148,3 +148,11 @@ func WithHMACAccessor(h bool) Option {
return nil return nil
} }
} }
// WithHeaderFormatter provides an Option to supply a HeaderFormatter.
func WithHeaderFormatter(f HeaderFormatter) Option {
return func(o *options) error {
o.withHeaderFormatter = f
return nil
}
}

View File

@@ -59,6 +59,7 @@ type options struct {
withElision bool withElision bool
withOmitTime bool withOmitTime bool
withHMACAccessor bool withHMACAccessor bool
withHeaderFormatter HeaderFormatter
} }
// Salter is an interface that provides a way to obtain a Salt for hashing. // Salter is an interface that provides a way to obtain a Salt for hashing.
@@ -97,7 +98,7 @@ type HeaderFormatter interface {
// EntryFormatter should be used to format audit requests and responses. // EntryFormatter should be used to format audit requests and responses.
type EntryFormatter struct { type EntryFormatter struct {
salter Salter salter Salter
headersConfig HeaderFormatter headerFormatter HeaderFormatter
config FormatterConfig config FormatterConfig
prefix string prefix string
} }

View File

@@ -100,7 +100,7 @@ func TestFormatJSON_formatRequest(t *testing.T) {
var buf bytes.Buffer var buf bytes.Buffer
cfg, err := NewFormatterConfig() cfg, err := NewFormatterConfig()
require.NoError(t, err) require.NoError(t, err)
f, err := NewEntryFormatter(cfg, ss, nil) f, err := NewEntryFormatter(cfg, ss)
require.NoError(t, err) require.NoError(t, err)
formatter := EntryFormatterWriter{ formatter := EntryFormatterWriter{
Formatter: f, Formatter: f,

View File

@@ -119,7 +119,7 @@ func TestFormatJSONx_formatRequest(t *testing.T) {
WithFormat(JSONxFormat.String()), WithFormat(JSONxFormat.String()),
) )
require.NoError(t, err) require.NoError(t, err)
f, err := NewEntryFormatter(cfg, tempStaticSalt, nil) f, err := NewEntryFormatter(cfg, tempStaticSalt)
require.NoError(t, err) require.NoError(t, err)
writer := &JSONxWriter{Prefix: tc.Prefix} writer := &JSONxWriter{Prefix: tc.Prefix}
formatter, err := NewEntryFormatterWriter(cfg, f, writer) formatter, err := NewEntryFormatterWriter(cfg, f, writer)

View File

@@ -131,7 +131,7 @@ func Factory(ctx context.Context, conf *audit.BackendConfig, useEventLogger bool
b.salt.Store((*salt.Salt)(nil)) b.salt.Store((*salt.Salt)(nil))
// Configure the formatter for either case. // Configure the formatter for either case.
f, err := audit.NewEntryFormatter(b.formatConfig, b, headersConfig, audit.WithPrefix(conf.Config["prefix"])) f, err := audit.NewEntryFormatter(b.formatConfig, b, audit.WithHeaderFormatter(headersConfig), audit.WithPrefix(conf.Config["prefix"]))
if err != nil { if err != nil {
return nil, fmt.Errorf("error creating formatter: %w", err) return nil, fmt.Errorf("error creating formatter: %w", err)
} }

View File

@@ -108,7 +108,7 @@ func Factory(ctx context.Context, conf *audit.BackendConfig, useEventLogger bool
} }
// Configure the formatter for either case. // Configure the formatter for either case.
f, err := audit.NewEntryFormatter(b.formatConfig, b, headersConfig) f, err := audit.NewEntryFormatter(b.formatConfig, b, audit.WithHeaderFormatter(headersConfig))
if err != nil { if err != nil {
return nil, fmt.Errorf("error creating formatter: %w", err) return nil, fmt.Errorf("error creating formatter: %w", err)
} }

View File

@@ -102,7 +102,7 @@ func Factory(ctx context.Context, conf *audit.BackendConfig, useEventLogger bool
} }
// Configure the formatter for either case. // Configure the formatter for either case.
f, err := audit.NewEntryFormatter(b.formatConfig, b, headersConfig, audit.WithPrefix(conf.Config["prefix"])) f, err := audit.NewEntryFormatter(b.formatConfig, b, audit.WithHeaderFormatter(headersConfig), audit.WithPrefix(conf.Config["prefix"]))
if err != nil { if err != nil {
return nil, fmt.Errorf("error creating formatter: %w", err) return nil, fmt.Errorf("error creating formatter: %w", err)
} }

View File

@@ -252,7 +252,7 @@ func NewNoopAudit(config map[string]string) (*NoopAudit, error) {
return nil, err return nil, err
} }
f, err := audit.NewEntryFormatter(cfg, n, nil) f, err := audit.NewEntryFormatter(cfg, n)
if err != nil { if err != nil {
return nil, fmt.Errorf("error creating formatter: %w", err) return nil, fmt.Errorf("error creating formatter: %w", err)
} }