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}