Skip to content

Commit

Permalink
Fixes tests for Stripe 5.19.0
Browse files Browse the repository at this point in the history
As of 5.19.0, the compute_signature method was made public and they
split the timestamp into a separate param (which must be a Time). This
version checks compute_signature based on the number of params it takes
since doing a version check felt odd. Now that it is public, the method
shouldn't change it's API.

1: stripe/stripe-ruby#915
  • Loading branch information
lightDev0405 authored and lightDev0405 committed May 12, 2020
1 parent 536ffc3 commit 8bff857
Showing 1 changed file with 13 additions and 4 deletions.
17 changes: 13 additions & 4 deletions spec/controllers/webhook_controller_spec.rb
Expand Up @@ -12,10 +12,19 @@ def stub_event(identifier)

def generate_signature(params, secret)
payload = params.to_json
timestamp = Time.now.to_i
signature = Stripe::Webhook::Signature.send(:compute_signature, "#{timestamp}.#{payload}", secret)

"t=#{timestamp},v1=#{signature}"
timestamp = Time.now

# compute_signature was private until version 5.19.0 when it was made
# public and had it's API changed to split timestamp to a separate field.
signer = Stripe::Webhook::Signature.method(:compute_signature)
signature =
if signer.arity == 3
signer.call(timestamp, payload, secret)
else
signer.call("#{timestamp.to_i}.#{payload}", secret)
end

"t=#{timestamp.to_i},v1=#{signature}"
end

def webhook(signature, params)
Expand Down

0 comments on commit 8bff857

Please sign in to comment.