-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathgonfig_test.go
More file actions
72 lines (59 loc) · 1.42 KB
/
gonfig_test.go
File metadata and controls
72 lines (59 loc) · 1.42 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
64
65
66
67
68
69
70
71
72
package gonfig
import (
"errors"
"os"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestLoad(t *testing.T) {
c := Load()
assert.NotNil(t, c)
}
func TestConfig_FromEnv(t *testing.T) {
c := Config{}
c.FromEnv()
require.Len(t, c.Providers, 1)
assert.IsType(t, new(EnvProvider), c.Providers[0])
}
func TestConfig_FromFile(t *testing.T) {
t.Run("json-yaml-toml files", func(t *testing.T) {
c := Config{}
c.FromFile("file.json")
require.Len(t, c.Providers, 1)
assert.IsType(t, new(FileProvider), c.Providers[0])
})
t.Run("env files", func(t *testing.T) {
c := Config{}
c.FromFile("file.env")
require.Len(t, c.Providers, 1)
assert.IsType(t, new(EnvProvider), c.Providers[0])
})
}
func TestConfig_AddProvider(t *testing.T) {
c := Config{}
var p Provider
c.AddProvider(p)
require.Len(t, c.Providers, 1)
}
func TestConfig_Into(t *testing.T) {
s := struct {
Required string `required:"true"`
Default string `default:"default_value"`
Expand string `expand:"true"`
}{
Expand: "${EXPAND}",
}
err := os.Setenv("EXPAND", "expand_value")
require.NoError(t, err)
err = Load().FromEnv().FromFile("testdata/config.json").Into(&s)
require.Error(t, err)
ce := err.(ConfigErrors)
assert.Truef(
t,
errors.Is(ce[0], ErrRequiredField),
"must wrap ErrRequiredField error",
)
assert.Equal(t, "default_value", s.Default)
assert.Equal(t, "expand_value", s.Expand)
}