Skip to content

Commit 68995ab

Browse files
committed
Implement retrieve token. Closes stripe-ruby-mock#54
1 parent 52b429f commit 68995ab

File tree

3 files changed

+43
-6
lines changed

3 files changed

+43
-6
lines changed

lib/stripe_mock/request_handlers/tokens.rb

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,31 @@ module RequestHandlers
33
module Tokens
44

55
def Tokens.included(klass)
6-
klass.add_handler 'post /v1/tokens', :create_token
6+
klass.add_handler 'post /v1/tokens', :create_token
7+
klass.add_handler 'get /v1/tokens/(.*)', :get_token
78
end
89

910
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)
11+
# "Sanitize" card number
12+
params[:card][:last4] = params[:card][:number][-4,4]
13+
token_id = generate_card_token(params[:card])
14+
card = @card_tokens[token_id]
15+
16+
Data.mock_token(params.merge :id => token_id, :card => card)
1317
end
1418

19+
def get_token(route, method_url, params, headers)
20+
route =~ method_url
21+
# A Stripe token can be either a bank token or a card token
22+
bank_or_card = @bank_tokens[$1] || @card_tokens[$1]
23+
assert_existance :token, $1, bank_or_card
24+
25+
if bank_or_card[:object] == 'card'
26+
Data.mock_token(:id => $1, :card => bank_or_card)
27+
elsif bank_or_card[:object] == 'bank_account'
28+
Data.mock_token(:id => $1, :bank_account => bank_or_card)
29+
end
30+
end
1531
end
1632
end
1733
end

spec/shared_stripe_examples/bank_token_examples.rb

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,5 +36,16 @@
3636
expect(recipient.active_account.bank_name).to eq("Bank Token Mocking")
3737
end
3838

39-
end
39+
it "retrieves a created token" do
40+
bank_token = StripeMock.generate_bank_token(
41+
:bank_name => "Cha-ching Banking",
42+
:last4 => "3939"
43+
)
44+
token = Stripe::Token.retrieve(bank_token)
4045

46+
expect(token.id).to eq(bank_token)
47+
expect(token.bank_account.last4).to eq("3939")
48+
expect(token.bank_account.bank_name).to eq("Cha-ching Banking")
49+
end
50+
51+
end

spec/shared_stripe_examples/card_token_examples.rb

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,16 @@
2626
expect(card.exp_month).to eq(11)
2727
expect(card.exp_year).to eq(2099)
2828
end
29+
30+
it "retrieves a created token" do
31+
card_token = StripeMock.generate_card_token(last4: "2323", exp_month: 33, exp_year: 2222)
32+
token = Stripe::Token.retrieve(card_token)
33+
34+
expect(token.id).to eq(card_token)
35+
expect(token.card.last4).to eq("2323")
36+
expect(token.card.exp_month).to eq(33)
37+
expect(token.card.exp_year).to eq(2222)
38+
end
2939
end
3040

3141
describe 'Stripe::Token' do
@@ -47,7 +57,7 @@
4757
expect(card.exp_year).to eq(2017)
4858
end
4959

50-
it "generated and reads a card token for update customer" do
60+
it "generates and reads a card token for update customer" do
5161
card_token = Stripe::Token.create({
5262
card: {
5363
number: "1111222233334444",

0 commit comments

Comments
 (0)