config_test.go
1package rtw
2
3import (
4 "testing"
5
6 "github.com/stretchr/testify/assert"
7)
8
9func TestConfigValidate_MissingHost(t *testing.T) {
10 cfg := &Config{
11 Server: Server{
12 Port: 8080,
13 LogLevel: INFO,
14 PublicURL: "https://rtw.run",
15 DataDir: "/tmp/rtw",
16 },
17 YSweet: YSweet{URL: "http://127.0.0.1:9000"},
18 Routing: Routing{URL: "http://127.0.0.1:8989"},
19 Geocoder: Geocoder{URL: "http://127.0.0.1:8999"},
20 }
21 err := cfg.Validate()
22 assert.Error(t, err)
23 assert.Contains(t, err.Error(), "server.host")
24}
25
26func TestConfigValidate_InvalidLogLevel(t *testing.T) {
27 cfg := &Config{
28 Server: Server{
29 Host: "127.0.0.1",
30 Port: 8080,
31 LogLevel: "INVALID",
32 PublicURL: "https://rtw.run",
33 DataDir: "/tmp/rtw",
34 },
35 YSweet: YSweet{URL: "http://127.0.0.1:9000"},
36 Routing: Routing{URL: "http://127.0.0.1:8989"},
37 Geocoder: Geocoder{URL: "http://127.0.0.1:8999"},
38 }
39 err := cfg.Validate()
40 assert.Error(t, err)
41 assert.Contains(t, err.Error(), "loglevel")
42}
43
44func TestConfigValidate_MissingYSweetURL(t *testing.T) {
45 cfg := &Config{
46 Server: Server{
47 Host: "127.0.0.1",
48 Port: 8080,
49 LogLevel: INFO,
50 PublicURL: "https://rtw.run",
51 DataDir: "/tmp/rtw",
52 },
53 Routing: Routing{URL: "http://127.0.0.1:8989"},
54 Geocoder: Geocoder{URL: "http://127.0.0.1:8999"},
55 }
56 err := cfg.Validate()
57 assert.Error(t, err)
58 assert.Contains(t, err.Error(), "ysweet.url")
59}
60
61func TestConfigValidate_Valid(t *testing.T) {
62 cfg := &Config{
63 Server: Server{
64 Host: "127.0.0.1",
65 Port: 8080,
66 LogLevel: INFO,
67 PublicURL: "https://rtw.run",
68 DataDir: "/tmp/rtw",
69 },
70 YSweet: YSweet{URL: "http://127.0.0.1:9000"},
71 Routing: Routing{URL: "http://127.0.0.1:8989"},
72 Geocoder: Geocoder{URL: "http://127.0.0.1:8999"},
73 }
74 err := cfg.Validate()
75 assert.NoError(t, err)
76}
77
78func TestConfigValidate_MissingGeocoderURL(t *testing.T) {
79 cfg := &Config{
80 Server: Server{
81 Host: "127.0.0.1",
82 Port: 8080,
83 LogLevel: INFO,
84 PublicURL: "https://rtw.run",
85 DataDir: "/tmp/rtw",
86 },
87 YSweet: YSweet{URL: "http://127.0.0.1:9000"},
88 Routing: Routing{URL: "http://127.0.0.1:8989"},
89 }
90 err := cfg.Validate()
91 assert.Error(t, err)
92 assert.Contains(t, err.Error(), "geocoder.url")
93}