-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathconfig_test.go
More file actions
104 lines (100 loc) · 2.41 KB
/
config_test.go
File metadata and controls
104 lines (100 loc) · 2.41 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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
package database
import (
"github.com/creasty/defaults"
"github.com/icinga/icinga-go-library/config"
"github.com/stretchr/testify/require"
"testing"
)
func TestConfig(t *testing.T) {
var defaultOptions Options
require.NoError(t, defaults.Set(&defaultOptions), "setting default options")
subtests := []struct {
name string
opts config.EnvOptions
expected Config
error bool
}{
{
name: "empty-missing-fields",
opts: config.EnvOptions{},
error: true,
},
{
name: "unknown-db-type",
opts: config.EnvOptions{Environment: map[string]string{"TYPE": "☃"}},
error: true,
},
{
name: "minimal-config",
opts: config.EnvOptions{Environment: map[string]string{
"HOST": "db.example.com",
"USER": "user",
"DATABASE": "db",
}},
expected: Config{
Type: "mysql",
Host: "db.example.com",
Database: "db",
User: "user",
Options: defaultOptions,
},
},
{
name: "tls",
opts: config.EnvOptions{Environment: map[string]string{
"HOST": "db.example.com",
"USER": "user",
"DATABASE": "db",
"TLS": "true",
"CERT": "/var/empty/db.crt",
"CA": "/var/empty/ca.crt",
}},
expected: Config{
Type: "mysql",
Host: "db.example.com",
Database: "db",
User: "user",
TlsOptions: config.TLS{
Enable: true,
Cert: "/var/empty/db.crt",
Ca: "/var/empty/ca.crt",
},
Options: defaultOptions,
},
},
{
name: "options",
opts: config.EnvOptions{Environment: map[string]string{
"HOST": "db.example.com",
"USER": "user",
"DATABASE": "db",
"OPTIONS_MAX_CONNECTIONS": "1",
"OPTIONS_MAX_ROWS_PER_TRANSACTION": "65535",
}},
expected: Config{
Type: "mysql",
Host: "db.example.com",
Database: "db",
User: "user",
Options: Options{
MaxConnections: 1,
MaxConnectionsPerTable: 8,
MaxPlaceholdersPerStatement: 8192,
MaxRowsPerTransaction: 65535,
WsrepSyncWait: 7,
},
},
},
}
for _, test := range subtests {
t.Run(test.name, func(t *testing.T) {
var out Config
if err := config.FromEnv(&out, test.opts); test.error {
require.Error(t, err)
} else {
require.NoError(t, err)
require.Equal(t, test.expected, out)
}
})
}
}