From 4a4489e2be3972ea62dcfe516578c8ee71642c28 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sun, 18 Feb 2024 16:04:02 +0100 Subject: [PATCH] internal/config/builder_test.go: adding test for config with flags --- internal/config/builder_test.go | 73 +++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) diff --git a/internal/config/builder_test.go b/internal/config/builder_test.go index 01e1c67..377c457 100644 --- a/internal/config/builder_test.go +++ b/internal/config/builder_test.go @@ -75,6 +75,79 @@ redis: require.Equal(t, &expected, cfg) } +func TestBuilder_ConfigWithFlags(t *testing.T) { + expected := Config{ + Name: "ship-reader-1", + Api: "https://api.example.com", + MessageCodec: "msgpack", + Log: log.Config{ + Filename: "mylog.log", + Directory: "/var/log", + MaxFileSize: 200, + MaxTime: 30 * time.Minute, + }, + Ship: ShipConfig{ + Url: "127.0.0.1:8089", + StartBlockNum: 23671836, + EndBlockNum: 23872222, + IrreversibleOnly: true, + MaxMessagesInFlight: 1337, + }, + Telegram: TelegramConfig{ + Id: "110201543:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw", + Channel: -123456789, + }, + Redis: RedisConfig{ + Addr: "localhost:6379", + User: "userfromcli", + Password: "passwd", + DB: 4, + Prefix: "some::ship", + }, + } + + builder := NewBuilder() + builder.SetSource(bytes.NewBuffer([]byte(` +name: "ship-reader-1" +api: "http://127.0.0.1:8080" +message_codec: "mojibake" +log: + filename: some_file.log + directory: /path/to/whatever + maxtime: 30m + maxfilesize: 200b +ship: + url: "127.0.0.1:8089" + irreversible_only: true + max_messages_in_flight: 1337 + start_block_num: 23671836 + end_block_num: 23872222 +telegram: + id: "110201543:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw" + channel: -123456789 +redis: + addr: "localhost:6379" + user: "myuser" + password: "passwd" + db: 4 + prefix: "some::ship" +`))) + + flags := GetFlags() + + require.NoError(t, flags.Set("url", "https://api.example.com")) + require.NoError(t, flags.Set("codec", "msgpack")) + require.NoError(t, flags.Set("log", "/var/log/mylog.log")) + require.NoError(t, flags.Set("redis-user", "userfromcli")) + + builder.SetFlags(flags) + + cfg, err := builder.Build() + + require.NoError(t, err) + require.Equal(t, &expected, cfg) +} + func TestBuilder_NilSource(t *testing.T) { cfg, err := NewBuilder().Build() require.Nil(t, cfg)