mirror of
https://github.com/goreleaser/goreleaser.git
synced 2025-03-17 20:47:50 +02:00
fix(announce): move default status codes to Default, more tests
building on #5317
This commit is contained in:
parent
77bbddf64b
commit
c7f4e903e7
@ -46,6 +46,9 @@ func (p Pipe) Default(ctx *context.Context) error {
|
|||||||
if ctx.Config.Announce.Webhook.ContentType == "" {
|
if ctx.Config.Announce.Webhook.ContentType == "" {
|
||||||
ctx.Config.Announce.Webhook.ContentType = DefaultContentType
|
ctx.Config.Announce.Webhook.ContentType = DefaultContentType
|
||||||
}
|
}
|
||||||
|
if len(ctx.Config.Announce.Webhook.ExpectedStatusCodes) == 0 {
|
||||||
|
ctx.Config.Announce.Webhook.ExpectedStatusCodes = defaultExepctedStatusCodes
|
||||||
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -76,11 +79,6 @@ func (p Pipe) Announce(ctx *context.Context) error {
|
|||||||
return fmt.Errorf("webhook: %w", err)
|
return fmt.Errorf("webhook: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
expectedStatusCodes := ctx.Config.Announce.Webhook.ExpectedStatusCodes
|
|
||||||
if len(expectedStatusCodes) == 0 {
|
|
||||||
expectedStatusCodes = defaultExepctedStatusCodes
|
|
||||||
}
|
|
||||||
|
|
||||||
log.Infof("posting: '%s'", msg)
|
log.Infof("posting: '%s'", msg)
|
||||||
customTransport := http.DefaultTransport.(*http.Transport).Clone()
|
customTransport := http.DefaultTransport.(*http.Transport).Clone()
|
||||||
|
|
||||||
@ -117,7 +115,7 @@ func (p Pipe) Announce(ctx *context.Context) error {
|
|||||||
}
|
}
|
||||||
defer resp.Body.Close()
|
defer resp.Body.Close()
|
||||||
|
|
||||||
if !slices.Contains(expectedStatusCodes, resp.StatusCode) {
|
if !slices.Contains(ctx.Config.Announce.Webhook.ExpectedStatusCodes, resp.StatusCode) {
|
||||||
io.Copy(io.Discard, resp.Body)
|
io.Copy(io.Discard, resp.Body)
|
||||||
return fmt.Errorf("request failed with status %v", resp.Status)
|
return fmt.Errorf("request failed with status %v", resp.Status)
|
||||||
}
|
}
|
||||||
|
@ -27,6 +27,7 @@ func TestNoEndpoint(t *testing.T) {
|
|||||||
Webhook: config.Webhook{},
|
Webhook: config.Webhook{},
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
require.NoError(t, Pipe{}.Default(ctx))
|
||||||
require.EqualError(t, Pipe{}.Announce(ctx), `webhook: no endpoint url`)
|
require.EqualError(t, Pipe{}.Announce(ctx), `webhook: no endpoint url`)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -50,6 +51,7 @@ func TestAnnounceInvalidMessageTemplate(t *testing.T) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
require.NoError(t, Pipe{}.Default(ctx))
|
||||||
testlib.RequireTemplateError(t, Pipe{}.Announce(ctx))
|
testlib.RequireTemplateError(t, Pipe{}.Announce(ctx))
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -87,6 +89,7 @@ func TestAnnounceWebhook(t *testing.T) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
require.NoError(t, Pipe{}.Default(ctx))
|
||||||
require.NoError(t, Pipe{}.Announce(ctx))
|
require.NoError(t, Pipe{}.Announce(ctx))
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -118,6 +121,7 @@ func TestAnnounceTLSWebhook(t *testing.T) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
require.NoError(t, Pipe{}.Default(ctx))
|
||||||
require.NoError(t, Pipe{}.Announce(ctx))
|
require.NoError(t, Pipe{}.Announce(ctx))
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -145,6 +149,7 @@ func TestAnnounceTLSCheckCertWebhook(t *testing.T) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
require.NoError(t, Pipe{}.Default(ctx))
|
||||||
require.Error(t, Pipe{}.Announce(ctx))
|
require.Error(t, Pipe{}.Announce(ctx))
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -182,6 +187,7 @@ func TestAnnounceBasicAuthWebhook(t *testing.T) {
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
t.Setenv("BASIC_AUTH_HEADER_VALUE", fmt.Sprintf("Basic %s", base64.StdEncoding.EncodeToString([]byte("user:pass"))))
|
t.Setenv("BASIC_AUTH_HEADER_VALUE", fmt.Sprintf("Basic %s", base64.StdEncoding.EncodeToString([]byte("user:pass"))))
|
||||||
|
require.NoError(t, Pipe{}.Default(ctx))
|
||||||
require.NoError(t, Pipe{}.Announce(ctx))
|
require.NoError(t, Pipe{}.Announce(ctx))
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -220,6 +226,7 @@ func TestAnnounceAdditionalHeadersWebhook(t *testing.T) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
require.NoError(t, Pipe{}.Default(ctx))
|
||||||
require.NoError(t, Pipe{}.Announce(ctx))
|
require.NoError(t, Pipe{}.Announce(ctx))
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -253,6 +260,7 @@ func TestAnnounceExepectedStatusCodesWebhook(t *testing.T) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
require.NoError(t, Pipe{}.Default(ctx))
|
||||||
require.NoError(t, Pipe{}.Announce(ctx))
|
require.NoError(t, Pipe{}.Announce(ctx))
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -272,3 +280,33 @@ func TestSkip(t *testing.T) {
|
|||||||
require.False(t, Pipe{}.Skip(ctx))
|
require.False(t, Pipe{}.Skip(ctx))
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestDefault(t *testing.T) {
|
||||||
|
t.Run("empty", func(t *testing.T) {
|
||||||
|
ctx := testctx.NewWithCfg(config.Project{
|
||||||
|
Announce: config.Announce{
|
||||||
|
Webhook: config.Webhook{},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
require.NoError(t, Pipe{}.Default(ctx))
|
||||||
|
actual := ctx.Config.Announce.Webhook
|
||||||
|
require.NotEmpty(t, actual.MessageTemplate)
|
||||||
|
require.NotEmpty(t, actual.ContentType)
|
||||||
|
require.NotEmpty(t, actual.ExpectedStatusCodes)
|
||||||
|
})
|
||||||
|
t.Run("not empty", func(t *testing.T) {
|
||||||
|
expected := config.Webhook{
|
||||||
|
MessageTemplate: "foo",
|
||||||
|
ContentType: "text",
|
||||||
|
ExpectedStatusCodes: []int{200},
|
||||||
|
}
|
||||||
|
ctx := testctx.NewWithCfg(config.Project{
|
||||||
|
Announce: config.Announce{
|
||||||
|
Webhook: expected,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
require.NoError(t, Pipe{}.Default(ctx))
|
||||||
|
actual := ctx.Config.Announce.Webhook
|
||||||
|
require.Equal(t, expected, actual)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user