/
config_test.go
79 lines (61 loc) · 1.91 KB
/
config_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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
package todos_test
import (
"os"
"testing"
. "github.com/bbengfort/todos"
"github.com/stretchr/testify/require"
)
var requiredEnv = map[string]string{
"TODOS_MODE": "test",
"DATABASE_URL": "postgres://benjamin@localhost:5432/todos",
"SECRET_KEY": "supersecretkey",
"TODOS_TOKEN_CLEANUP": "false",
}
func unsetEnv(t *testing.T) func() {
return func() {
for key := range requiredEnv {
require.NoError(t, os.Unsetenv(key))
}
}
}
func TestConfig(t *testing.T) {
for key, val := range requiredEnv {
require.NoError(t, os.Setenv(key, val))
}
defer unsetEnv(t)()
conf, err := Config()
require.NoError(t, err)
// Check defaults
require.Equal(t, "127.0.0.1:8080", conf.Addr())
require.Equal(t, "http://localhost:8080/", conf.Endpoint())
require.False(t, conf.TokenCleanup)
}
func TestBadConfigs(t *testing.T) {
defer unsetEnv(t)()
_, err := Config()
require.EqualError(t, err, "required key SECRET_KEY missing value")
require.NoError(t, os.Setenv("SECRET_KEY", "theeaglefliesatmidnight"))
_, err = Config()
require.EqualError(t, err, "required key DATABASE_URL missing value")
require.NoError(t, os.Setenv("DATABASE_URL", "postgres://benjamin@localhost:5432/todos"))
// All defaults set correctly at this point
_, err = Config()
require.NoError(t, err)
require.NoError(t, os.Setenv("TODOS_MODE", "fakemode"))
_, err = Config()
require.EqualError(t, err, "\"fakemode\" is an unknown mode, use \"debug\", \"release\", or \"test\"")
}
func TestEndpoint(t *testing.T) {
s := Settings{
UseTLS: true,
Domain: "api.todos.bengfort.com",
Port: 443,
}
require.Equal(t, "https://api.todos.bengfort.com/", s.Endpoint())
s.Port = 5356
require.Equal(t, "https://api.todos.bengfort.com:5356/", s.Endpoint())
s.UseTLS = false
require.Equal(t, "http://api.todos.bengfort.com:5356/", s.Endpoint())
s.Port = 80
require.Equal(t, "http://api.todos.bengfort.com/", s.Endpoint())
}