thread-master/apps/backend/internal/module/billing/stripe_provider_test.go

21 lines
988 B
Go
Raw Normal View History

2026-07-15 15:23:59 +00:00
package billing
import (
"testing"
"time"
"github.com/stretchr/testify/require"
"github.com/stripe/stripe-go/v82/webhook"
)
func TestStripeOfficialSignatureVerifier(t *testing.T) {
payload := []byte(`{"id":"evt_1","object":"event","api_version":"2025-06-30.basil","created":123,"type":"customer.subscription.updated","data":{"object":{"id":"sub_1","customer":"cus_1","status":"active","items":{"data":[{"price":{"id":"price_pro"},"current_period_start":10,"current_period_end":20}]}}}}`)
signed := webhook.GenerateTestSignedPayload(&webhook.UnsignedPayload{Payload: payload, Secret: "whsec_test", Timestamp: time.Now()})
e, err := NewStripeProvider("sk_test_unused").VerifyEvent(signed.Payload, signed.Header, "whsec_test")
require.NoError(t, err)
require.Equal(t, "price_pro", e.PriceID)
require.Equal(t, "cus_1", e.CustomerID)
_, err = NewStripeProvider("sk_test_unused").VerifyEvent(signed.Payload, signed.Header, "wrong")
require.ErrorIs(t, err, ErrInvalidSignature)
}