Repository navigation
Expand file tree
/
Copy pathparser_warning_test.go
More file actions
63 lines (54 loc) · 1.91 KB
/
Copy pathparser_warning_test.go
File metadata and controls
63 lines (54 loc) · 1.91 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
package tinyconf
import (
"context"
"testing"
"github.com/insei/fmap/v3"
"github.com/stretchr/testify/assert"
)
type warningMockDriver struct{}
func (md *warningMockDriver) GenDoc(...*Registered) string { return "" }
func (md *warningMockDriver) GetName() string { return "warning" }
func (md *warningMockDriver) GetValue(field fmap.Field) (*Value, error) {
if field.GetStructPath() == "Suspicious" {
return &Value{Source: "mock", Value: "value", Warning: "value is read from the unexpected place"}, nil
}
return &Value{Source: "mock", Value: "value"}, nil
}
type recordLogger struct {
fields []Field
warnings *[]map[string]any
}
func (l *recordLogger) Error(string, ...Field) {}
func (l *recordLogger) Debug(string, ...Field) {}
func (l *recordLogger) Info(string, ...Field) {}
func (l *recordLogger) Warn(msg string, fields ...Field) {
record := map[string]any{"msg": msg}
for _, field := range append(append([]Field{}, l.fields...), fields...) {
record[field.Key] = field.Value
}
*l.warnings = append(*l.warnings, record)
}
func (l *recordLogger) With(fields ...Field) Logger {
return &recordLogger{fields: append(append([]Field{}, l.fields...), fields...), warnings: l.warnings}
}
func TestManager_Parse_ValueWarning(t *testing.T) {
type Config struct {
Usual string
Suspicious string
}
var warnings []map[string]any
c, err := New(WithDriver(&warningMockDriver{}), WithLogger(&recordLogger{warnings: &warnings}))
assert.NoError(t, err)
conf := &Config{}
assert.NoError(t, c.Register(conf))
assert.NoError(t, c.Parse(context.Background(), conf))
// the value is set, the warning of the driver is logged
assert.Equal(t, Config{Usual: "value", Suspicious: "value"}, *conf)
assert.Equal(t, []map[string]any{{
"msg": "warning",
"config": "*tinyconf.Config",
"driver": "warning",
"field": "Suspicious",
"details": "value is read from the unexpected place",
}}, warnings)
}