44 lines
1.1 KiB
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")
|
|
}
|
|
})
|
|
}
|