veza/veza-backend-api/internal/services/hyperswitch/webhook_test.go

44 lines
1.1 KiB
Go

package hyperswitch
import (
"crypto/hmac"
"crypto/sha512"
"encoding/hex"
"testing"
)
func TestVerifyWebhookSignature(t *testing.T) {
secret := "test_webhook_secret"
payload := []byte(`{"payment_id":"pay_123","status":"succeeded"}`)
mac := hmac.New(sha512.New, []byte(secret))
mac.Write(payload)
validSig := hex.EncodeToString(mac.Sum(nil))
t.Run("valid signature", func(t *testing.T) {
err := VerifyWebhookSignature(payload, validSig, secret)
if err != nil {
t.Errorf("expected nil, got %v", err)
}
})
t.Run("invalid signature", func(t *testing.T) {
err := VerifyWebhookSignature(payload, "invalid_sig", secret)
if err == nil {
t.Error("expected error for invalid signature")
}
})
t.Run("empty secret", func(t *testing.T) {
err := VerifyWebhookSignature(payload, validSig, "")
if err == nil {
t.Error("expected error when secret is empty")
}
})
t.Run("empty signature header", func(t *testing.T) {
err := VerifyWebhookSignature(payload, "", secret)
if err == nil {
t.Error("expected error when signature header is empty")
}
})
}