Skip to content

Commit 52b429f

Browse files
committed
Merge pull request stripe-ruby-mock#56 from gyardley/token
Implemented Stripe::Token.create for stripe-ruby-mock#52
2 parents 560bd31 + f69b0eb commit 52b429f

File tree

5 files changed

+51
-3
lines changed

5 files changed

+51
-3
lines changed

lib/stripe_mock.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
require 'stripe_mock/request_handlers/invoice_items.rb'
3838
require 'stripe_mock/request_handlers/plans.rb'
3939
require 'stripe_mock/request_handlers/recipients.rb'
40+
require 'stripe_mock/request_handlers/tokens.rb'
4041
require 'stripe_mock/instance'
4142

4243
module StripeMock

lib/stripe_mock/data.rb

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -261,6 +261,34 @@ def self.mock_recipient_array
261261
}
262262
end
263263

264+
def self.mock_token(params={})
265+
{
266+
:id => 'tok_default',
267+
:livemode => false,
268+
:used => false,
269+
:object => 'token',
270+
:type => 'card',
271+
:card => {
272+
:id => 'card_default',
273+
:object => 'card',
274+
:last4 => '2222',
275+
:type => 'Visa',
276+
:exp_month => 9,
277+
:exp_year => 2017,
278+
:fingerprint => 'JRRLXGh38NiYygM7',
279+
:customer => nil,
280+
:country => 'US',
281+
:name => nil,
282+
:address_line1 => nil,
283+
:address_line2 => nil,
284+
:address_city => nil,
285+
:address_state => nil,
286+
:address_zip => nil,
287+
:address_country => nil
288+
}
289+
}.merge(params)
290+
end
291+
264292
def self.mock_transfer(params={})
265293
{
266294
:status => 'pending',

lib/stripe_mock/instance.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ def self.handler_for_method_url(method_url)
2323
include StripeMock::RequestHandlers::InvoiceItems
2424
include StripeMock::RequestHandlers::Plans
2525
include StripeMock::RequestHandlers::Recipients
26+
include StripeMock::RequestHandlers::Tokens
2627

2728

2829
attr_reader :bank_tokens, :charges, :customers, :events,
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
module StripeMock
2+
module RequestHandlers
3+
module Tokens
4+
5+
def Tokens.included(klass)
6+
klass.add_handler 'post /v1/tokens', :create_token
7+
end
8+
9+
def create_token(route, method_url, params, headers)
10+
card = Data.mock_card(params[:card].merge(last4: params[:card][:number][-4,4], customer: nil))
11+
id = generate_card_token(card)
12+
Data.mock_token(:id => id, :card => card)
13+
end
14+
15+
end
16+
end
17+
end

spec/shared_stripe_examples/card_token_examples.rb

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,10 @@
2828
end
2929
end
3030

31-
describe 'Stripe::Token', :pending => true do
31+
describe 'Stripe::Token' do
3232

3333
it "generates and reads a card token for create customer" do
34+
3435
card_token = Stripe::Token.create({
3536
card: {
3637
number: "4222222222222222",
@@ -39,7 +40,7 @@
3940
}
4041
})
4142

42-
cus = Stripe::Customer.create(card: card_token)
43+
cus = Stripe::Customer.create(card: card_token.id)
4344
card = cus.cards.data.first
4445
expect(card.last4).to eq("2222")
4546
expect(card.exp_month).to eq(9)
@@ -56,7 +57,7 @@
5657
})
5758

5859
cus = Stripe::Customer.create()
59-
cus.card = card_token
60+
cus.card = card_token.id
6061
cus.save
6162

6263
card = cus.cards.data.first

0 commit comments

Comments
 (0)