aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cmd/fwdsms/config.go14
-rw-r--r--cmd/fwdsms/config_test.go36
-rw-r--r--cmd/fwdsms/main.go8
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,