-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathloader_test.go
64 lines (57 loc) · 1.3 KB
/
loader_test.go
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
package config
import (
"os"
"testing"
"github.com/stretchr/testify/assert"
)
type testConfig struct {
AppName string `default:"default_app"` // testing snake env APP_NAME
DB struct {
Name string `default:"default_name"` // testing default
User string `default:"default_user"` // testing env
Password string `default:"default_pwd"` // testing secret
Port int `default:"3306" env:"MYSQL_DB_PORT"` // testing int and custom env name
}
}
func TestLoadingConfig(t *testing.T) {
var err error
var l = loader{
Debug: true,
Env: true,
Secret: true,
Path: "mock",
}
// mock shell env variables
err = os.Setenv("APP_NAME", "env_app")
if err != nil {
t.Error(err)
return
}
err = os.Setenv("DB_USER", "env_user")
if err != nil {
t.Error(err)
return
}
err = os.Setenv("DB_PASSWORD", "env_pwd")
if err != nil {
t.Error(err)
return
}
err = os.Setenv("MYSQL_DB_PORT", "3307")
if err != nil {
t.Error(err)
return
}
// load
cfg := new(testConfig)
err = l.load(cfg)
if err != nil {
t.Error(err)
return
}
assert.Equal(t, "env_app", cfg.AppName)
assert.Equal(t, "default_name", cfg.DB.Name)
assert.Equal(t, "env_user", cfg.DB.User)
assert.Equal(t, "secret_pwd", cfg.DB.Password)
assert.Equal(t, 3307, cfg.DB.Port)
}