21 lines
988 B
Go
21 lines
988 B
Go
|
|
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)
|
||
|
|
}
|