1
0
Fork 0
hswro-alarm-bot/config_test.go

110 lines
3.1 KiB
Go

package main
import (
"bytes"
"log"
"os"
"testing"
"time"
"git.sr.ht/~michalr/go-satel"
"github.com/stretchr/testify/assert"
)
const data = `
satel-addr: "test satel address"
tg-chat-ids:
- 1234
- 5678
- 9876
allowed-types:
- "zone-isolate"
- "zone-alarm"
allowed-indexes:
- 5678
- 1337
pool-interval: 5m
arm-callbacks:
- uri: "test arm callback url"
method: "POST"
- uri: "second test arm callback url"
method: "GET"
disarm-callbacks:
- uri: "test disarm callback url"
method: "POST"
- uri: "second test disarm callback url"
method: "GET"
alarm-callbacks:
- uri: "test alarm callback url"
method: "POST"
- uri: "second test alarm callback url"
method: "GET"
telegram-api-key: "test api key"
matterbridge:
- uri: test_uri_1
token: test_token_1
gateway: test_gateway_1
username: test_username_1
- uri: test_uri_2
token: test_token_2
gateway: test_gateway_2
username: test_username_2
`
const ircConfig = `
irc:
- server: irc.libera.chat
port: 6697
nick: testbot
user: testbot
name: "Test Bot"
sasl-user: testbot
sasl-pass: testbotpassword
ssl: True
channels:
- "#hswro"
- "#testchannelpleaseignore"
`
func TestParseYamlConfig(t *testing.T) {
a := assert.New(t)
actualConfig := parseConfigFromFile([]byte(data), log.New(os.Stderr, "", log.Ltime))
a.Equal("test satel address", actualConfig.SatelAddr)
a.ElementsMatch([]int64{1234, 5678, 9876}, actualConfig.ChatIds)
a.ElementsMatch([]int{5678, 1337}, actualConfig.AllowedIndexes)
a.ElementsMatch([]SatelChangeType{{satel.ZoneIsolate}, {satel.ZoneAlarm}}, actualConfig.AllowedTypes)
a.Equal(5*time.Minute, actualConfig.PoolInterval.GetDuration())
a.ElementsMatch([]HttpCallbackConfig{{"test arm callback url", "POST"}, {"second test arm callback url", "GET"}},
actualConfig.ArmCallbacks)
a.ElementsMatch([]HttpCallbackConfig{{"test disarm callback url", "POST"}, {"second test disarm callback url", "GET"}},
actualConfig.DisarmCallbacks)
a.ElementsMatch([]HttpCallbackConfig{{"test alarm callback url", "POST"}, {"second test alarm callback url", "GET"}},
actualConfig.AlarmCallbacks)
a.Equal("test api key", actualConfig.TelegramApiKey)
a.Equal(actualConfig.Matterbridge[0].URI, "test_uri_1")
a.Equal(actualConfig.Matterbridge[0].Token, "test_token_1")
a.Equal(actualConfig.Matterbridge[0].Gateway, "test_gateway_1")
a.Equal(actualConfig.Matterbridge[0].Username, "test_username_1")
a.Equal(actualConfig.Matterbridge[1].URI, "test_uri_2")
a.Equal(actualConfig.Matterbridge[1].Token, "test_token_2")
a.Equal(actualConfig.Matterbridge[1].Gateway, "test_gateway_2")
a.Equal(actualConfig.Matterbridge[1].Username, "test_username_2")
a.Nil(actualConfig.Irc)
}
func TestParseYamlConfig_IrcConfig(t *testing.T) {
a := assert.New(t)
actualConfig := parseConfigFromFile(
bytes.Join([][]byte{[]byte(data), []byte(ircConfig)}, []byte{}),
log.New(os.Stderr, "", log.Ltime))
a.ElementsMatch([]IrcConfig{{
"irc.libera.chat", 6697, "testbot", "testbot", "Test Bot", "testbot", "testbotpassword", true,
[]string{"#hswro", "#testchannelpleaseignore"}}}, actualConfig.Irc)
}