fix(webhooks): fix HasEvent logic

* fix premature return in the check which skips all following events when the first one was false
* add test cases

Closes: #1354
This commit is contained in:
Stefan Jacobi
2024-02-19 10:55:14 +01:00
parent cfd11cd194
commit ae7bae5091
2 changed files with 23 additions and 1 deletions

View File

@ -34,7 +34,9 @@ type BaseWebhook struct {
func (bh *BaseWebhook) HasEvent(evt events.Event) bool { func (bh *BaseWebhook) HasEvent(evt events.Event) bool {
for _, event := range bh.Events { for _, event := range bh.Events {
return strings.HasPrefix(string(evt), string(event)) if strings.HasPrefix(string(evt), string(event)) {
return true
}
} }
return false return false

View File

@ -20,6 +20,26 @@ func TestBaseWebhook_HasEvent(t *testing.T) {
require.True(t, baseHook.HasEvent(events.EmailCreate)) require.True(t, baseHook.HasEvent(events.EmailCreate))
} }
func TestWebhooks_HasEvent_WithMultipleEvents(t *testing.T) {
baseHook := BaseWebhook{
Logger: nil,
Callback: "http://ipsum.lorem",
Events: events.Events{events.UserCreate, events.UserUpdate},
}
require.True(t, baseHook.HasEvent(events.UserUpdate))
}
func TestWebhooks_HasSubEvent_WithMultipleEvents(t *testing.T) {
baseHook := BaseWebhook{
Logger: nil,
Callback: "http://ipsum.lorem",
Events: events.Events{events.UserCreate, events.UserUpdate},
}
require.True(t, baseHook.HasEvent(events.EmailCreate))
}
func TestBaseWebhook_HasSubEvent(t *testing.T) { func TestBaseWebhook_HasSubEvent(t *testing.T) {
baseHook := BaseWebhook{ baseHook := BaseWebhook{
Logger: nil, Logger: nil,