diff options
| -rw-r--r-- | cmd/fwdsms/config.go | 14 | ||||
| -rw-r--r-- | cmd/fwdsms/config_test.go | 36 | ||||
| -rw-r--r-- | cmd/fwdsms/main.go | 8 |
3 files changed, 47 insertions, 11 deletions
diff --git a/cmd/fwdsms/config.go b/cmd/fwdsms/config.go index 4eb0fdf..64a4a51 100644 --- a/cmd/fwdsms/config.go +++ b/cmd/fwdsms/config.go @@ -4,7 +4,7 @@ package main import ( - "io/ioutil" + "io" "gopkg.in/yaml.v3" ) @@ -30,18 +30,14 @@ type SMTP struct { type Twilio struct { Address string `yaml:"address"` - AuthToken []byte `yaml:"authToken"` + AuthToken string `yaml:"authToken"` Endpoint string `yaml:"endpoint"` } -func loadConfig(filename string) (*Config, error) { - b, err := ioutil.ReadFile(filename) - if err != nil { - return nil, err - } +func loadConfig(r io.Reader) (*Config, error) { + dec := yaml.NewDecoder(r) cfg := &Config{} - err = yaml.Unmarshal(b, cfg) - if err != nil { + if err := dec.Decode(cfg); err != nil { return nil, err } return cfg, nil diff --git a/cmd/fwdsms/config_test.go b/cmd/fwdsms/config_test.go new file mode 100644 index 0000000..a303719 --- /dev/null +++ b/cmd/fwdsms/config_test.go @@ -0,0 +1,36 @@ +package main + +import ( + "strings" + "testing" + + "github.com/stretchr/testify/assert" +) + +const cfg string = ` +message: + from: foo@example.com + to: bar@example.com + subject: New SMS From {{.From}} For {{.To}} + template: | + From: {{.From}} + To: {{.To}} + Date: {{.DateReceived.UTC}} + + {{.Message}} + +smtp: + hostname: example.com:465 + username: bar + password: some password + +twilio: + address: /run/fwdsms/socket + authToken: some token + endpoint: / +` + +func TestConfig(t *testing.T) { + _, err := loadConfig(strings.NewReader(cfg)) + assert.NoError(t, err) +} diff --git a/cmd/fwdsms/main.go b/cmd/fwdsms/main.go index a810be1..090331f 100644 --- a/cmd/fwdsms/main.go +++ b/cmd/fwdsms/main.go @@ -25,7 +25,11 @@ var cfgFilename = flag.String("c", "/etc/fwdsms.yaml", "configuration file") func main() { flag.Parse() log.SetFlags(0) - cfg, err := loadConfig(*cfgFilename) + fd, err := os.Open(*cfgFilename) + if err != nil { + log.Fatalf("Could not open the configuration file: %v.", err) + } + cfg, err := loadConfig(fd) if err != nil { log.Fatalf("Could not load the configuration: %v.", err) } @@ -39,7 +43,7 @@ func main() { r.Path(cfg.Twilio.Endpoint). Methods(http.MethodPost). Handler(handlers.ProxyHeaders(&twilio.Filter{ - AuthToken: cfg.Twilio.AuthToken, + AuthToken: []byte(cfg.Twilio.AuthToken), Handler: &twilio.SMSTee{ Chan: sms, Handler: twilio.EmptyResponseHandler, |
