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) }