github.com/windmeup/goreleaser@v1.21.95/internal/pipe/telegram/telegram_test.go (about) 1 package telegram 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/require" 7 "github.com/windmeup/goreleaser/internal/testctx" 8 "github.com/windmeup/goreleaser/internal/testlib" 9 "github.com/windmeup/goreleaser/pkg/config" 10 ) 11 12 func TestStringer(t *testing.T) { 13 require.Equal(t, Pipe{}.String(), "telegram") 14 } 15 16 func TestDefault(t *testing.T) { 17 t.Run("empty", func(t *testing.T) { 18 ctx := testctx.New() 19 require.NoError(t, Pipe{}.Default(ctx)) 20 require.Equal(t, ctx.Config.Announce.Telegram.MessageTemplate, defaultMessageTemplate) 21 require.Equal(t, ctx.Config.Announce.Telegram.ParseMode, parseModeMarkdown) 22 }) 23 t.Run("markdownv2 parsemode", func(t *testing.T) { 24 ctx := testctx.New() 25 ctx.Config.Announce.Telegram.ParseMode = parseModeMarkdown 26 require.NoError(t, Pipe{}.Default(ctx)) 27 require.Equal(t, ctx.Config.Announce.Telegram.ParseMode, parseModeMarkdown) 28 }) 29 t.Run("html parsemode", func(t *testing.T) { 30 ctx := testctx.New() 31 ctx.Config.Announce.Telegram.ParseMode = parseModeHTML 32 require.NoError(t, Pipe{}.Default(ctx)) 33 require.Equal(t, ctx.Config.Announce.Telegram.ParseMode, parseModeHTML) 34 }) 35 } 36 37 func TestAnnounceInvalidTemplate(t *testing.T) { 38 t.Run("message", func(t *testing.T) { 39 ctx := testctx.NewWithCfg(config.Project{ 40 Announce: config.Announce{ 41 Telegram: config.Telegram{ 42 MessageTemplate: "{{ .Foo }", 43 }, 44 }, 45 }) 46 testlib.RequireTemplateError(t, Pipe{}.Announce(ctx)) 47 }) 48 t.Run("chatid", func(t *testing.T) { 49 ctx := testctx.NewWithCfg(config.Project{ 50 Announce: config.Announce{ 51 Telegram: config.Telegram{ 52 MessageTemplate: "test", 53 ChatID: "{{ .Foo }", 54 }, 55 }, 56 }) 57 testlib.RequireTemplateError(t, Pipe{}.Announce(ctx)) 58 }) 59 t.Run("chatid not int", func(t *testing.T) { 60 ctx := testctx.NewWithCfg(config.Project{ 61 Env: []string{"CHAT_ID=test"}, 62 Announce: config.Announce{ 63 Telegram: config.Telegram{ 64 MessageTemplate: "test", 65 ChatID: "{{ .Env.CHAT_ID }}", 66 }, 67 }, 68 }) 69 require.EqualError(t, Pipe{}.Announce(ctx), "telegram: strconv.ParseInt: parsing \"test\": invalid syntax") 70 }) 71 } 72 73 func TestAnnounceMissingEnv(t *testing.T) { 74 ctx := testctx.NewWithCfg(config.Project{ 75 Env: []string{"CHAT_ID=10"}, 76 Announce: config.Announce{ 77 Telegram: config.Telegram{ 78 ChatID: "{{ .Env.CHAT_ID }}", 79 }, 80 }, 81 }) 82 require.NoError(t, Pipe{}.Default(ctx)) 83 require.EqualError(t, Pipe{}.Announce(ctx), `telegram: env: environment variable "TELEGRAM_TOKEN" should not be empty`) 84 } 85 86 func TestSkip(t *testing.T) { 87 t.Run("skip", func(t *testing.T) { 88 require.True(t, Pipe{}.Skip(testctx.New())) 89 }) 90 91 t.Run("dont skip", func(t *testing.T) { 92 ctx := testctx.NewWithCfg(config.Project{ 93 Announce: config.Announce{ 94 Telegram: config.Telegram{ 95 Enabled: true, 96 }, 97 }, 98 }) 99 require.False(t, Pipe{}.Skip(ctx)) 100 }) 101 } 102 103 func TestGetMessageDetails(t *testing.T) { 104 t.Run("default message template", func(t *testing.T) { 105 ctx := testctx.NewWithCfg( 106 config.Project{ 107 ProjectName: "foo", 108 Announce: config.Announce{ 109 Telegram: config.Telegram{ 110 ChatID: "1230212", 111 }, 112 }, 113 }, 114 testctx.WithCurrentTag("v1.0.0"), 115 ) 116 require.NoError(t, Pipe{}.Default(ctx)) 117 msg, _, err := getMessageDetails(ctx) 118 require.NoError(t, err) 119 require.Equal(t, "foo v1\\.0\\.0 is out! Check it out at ", msg) 120 }) 121 }