diff --git a/selfservice/hook/web_hook.go b/selfservice/hook/web_hook.go index 9871124f1a4..b3b5da1b509 100644 --- a/selfservice/hook/web_hook.go +++ b/selfservice/hook/web_hook.go @@ -263,6 +263,9 @@ func (e *WebHook) execute(data *templateContext) error { } } + if body == nil { + body = bytes.NewReader(make([]byte, 0)) + } if err = doHttpCall(conf.method, conf.url, conf.auth, body); err != nil { return fmt.Errorf("failed to call web hook %w", err) } @@ -271,7 +274,7 @@ func (e *WebHook) execute(data *templateContext) error { func createBody(l *logrusx.Logger, templateURI string, data *templateContext) (*bytes.Reader, error) { if len(templateURI) == 0 { - return nil, nil + return bytes.NewReader(make([]byte, 0)), nil } f := fetcher.NewFetcher() diff --git a/selfservice/hook/web_hook_test.go b/selfservice/hook/web_hook_test.go index 185515a06c9..27b3166fdda 100644 --- a/selfservice/hook/web_hook_test.go +++ b/selfservice/hook/web_hook_test.go @@ -178,6 +178,12 @@ func TestJsonNetSupport(t *testing.T) { require.Len(t, hook.Entries, 1) assert.Contains(t, hook.LastEntry().Message, "support for filepaths without a 'file://' scheme will be dropped") }) + + t.Run("case=return non nil body reader on empty templateURI", func(t *testing.T) { + body, err := createBody(l, "", nil) + assert.NotNil(t, body) + assert.Nil(t, err) + }) } func TestWebHookConfig(t *testing.T) {