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) }