stripe-ruby-mock 1.8.4.4 → 1.8.4.5
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +19 -1
- data/lib/stripe_mock.rb +1 -0
- data/lib/stripe_mock/api/card_tokens.rb +13 -0
- data/lib/stripe_mock/client.rb +4 -0
- data/lib/stripe_mock/data.rb +3 -5
- data/lib/stripe_mock/instance.rb +16 -0
- data/lib/stripe_mock/request_handlers/customers.rb +8 -4
- data/lib/stripe_mock/server.rb +4 -0
- data/lib/stripe_mock/version.rb +1 -1
- data/spec/readme_spec.rb +9 -0
- data/spec/shared_stripe_examples/card_token_examples.rb +15 -0
- data/spec/support/stripe_examples.rb +2 -0
- metadata +4 -1
data/README.md
CHANGED
@@ -5,7 +5,9 @@
|
|
5
5
|
|
6
6
|
## Install
|
7
7
|
|
8
|
-
|
8
|
+
In your gemfile:
|
9
|
+
|
10
|
+
gem 'stripe-ruby-mock', '>= 1.8.4.4'
|
9
11
|
|
10
12
|
## Features
|
11
13
|
|
@@ -212,6 +214,22 @@ it "can override default webhook values" do
|
|
212
214
|
end
|
213
215
|
```
|
214
216
|
|
217
|
+
## Generating Card Tokens
|
218
|
+
|
219
|
+
Sometimes you need to check if your code reads a stripe card correctly. If so, you can specifically
|
220
|
+
assign card data to a generated card token:
|
221
|
+
|
222
|
+
```ruby
|
223
|
+
it "generates a stripe card token" do
|
224
|
+
card_token = StripeMock.generate_card_token(last4: "9191", exp_year: 1984)
|
225
|
+
|
226
|
+
cus = Stripe::Customer.create(card: card_token)
|
227
|
+
card = cus.cards.data.first
|
228
|
+
expect(card.last4).to eq("9191")
|
229
|
+
expect(card.exp_year).to eq(1984)
|
230
|
+
end
|
231
|
+
```
|
232
|
+
|
215
233
|
## Debugging
|
216
234
|
|
217
235
|
To enable debug messages:
|
data/lib/stripe_mock.rb
CHANGED
@@ -22,6 +22,7 @@ require 'stripe_mock/server'
|
|
22
22
|
require 'stripe_mock/api/instance'
|
23
23
|
require 'stripe_mock/api/client'
|
24
24
|
require 'stripe_mock/api/server'
|
25
|
+
require 'stripe_mock/api/card_tokens'
|
25
26
|
require 'stripe_mock/api/errors'
|
26
27
|
require 'stripe_mock/api/webhooks'
|
27
28
|
require 'stripe_mock/api/strict'
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module StripeMock
|
2
|
+
|
3
|
+
def self.generate_card_token(card_params)
|
4
|
+
if @state == 'local'
|
5
|
+
instance.generate_card_token(card_params)
|
6
|
+
elsif @state == 'remote'
|
7
|
+
client.generate_card_token(card_params)
|
8
|
+
else
|
9
|
+
raise UnstartedStateError
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
data/lib/stripe_mock/client.rb
CHANGED
data/lib/stripe_mock/data.rb
CHANGED
@@ -1,11 +1,9 @@
|
|
1
1
|
module StripeMock
|
2
2
|
module Data
|
3
3
|
|
4
|
-
def self.test_customer(params)
|
4
|
+
def self.test_customer(cards, params)
|
5
5
|
cus_id = params[:id] || "test_cus_default"
|
6
|
-
|
7
|
-
cards = []
|
8
|
-
cards << test_card(id: card_id, customer: cus_id) if card_id
|
6
|
+
cards.each {|card| card[:customer] = cus_id}
|
9
7
|
{
|
10
8
|
email: 'stripe_mock@example.com',
|
11
9
|
description: 'an auto-generated stripe customer data mock',
|
@@ -23,7 +21,7 @@ module StripeMock
|
|
23
21
|
url: "/v1/customers/#{cus_id}/cards",
|
24
22
|
data: cards
|
25
23
|
},
|
26
|
-
default_card:
|
24
|
+
default_card: nil
|
27
25
|
}.merge(params)
|
28
26
|
end
|
29
27
|
|
data/lib/stripe_mock/instance.rb
CHANGED
@@ -28,6 +28,7 @@ module StripeMock
|
|
28
28
|
@customers = {}
|
29
29
|
@charges = {}
|
30
30
|
@plans = {}
|
31
|
+
@card_tokens = {}
|
31
32
|
|
32
33
|
@id_counter = 0
|
33
34
|
@error_queue = ErrorQueue.new
|
@@ -64,6 +65,21 @@ module StripeMock
|
|
64
65
|
end
|
65
66
|
end
|
66
67
|
|
68
|
+
def generate_card_token(card_params)
|
69
|
+
token = new_id 'tok'
|
70
|
+
card_params[:id] = new_id 'cc'
|
71
|
+
@card_tokens[token] = Data.test_card(card_params)
|
72
|
+
token
|
73
|
+
end
|
74
|
+
|
75
|
+
def get_card_by_token(token)
|
76
|
+
if token.nil? || @card_tokens[token].nil?
|
77
|
+
Data.test_card :id => new_id('cc')
|
78
|
+
else
|
79
|
+
@card_tokens.delete(token)
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
67
83
|
private
|
68
84
|
|
69
85
|
def assert_existance(type, id, obj, message=nil)
|
@@ -13,8 +13,12 @@ module StripeMock
|
|
13
13
|
|
14
14
|
def new_customer(route, method_url, params, headers)
|
15
15
|
params[:id] ||= new_id('cus')
|
16
|
-
|
17
|
-
|
16
|
+
cards = []
|
17
|
+
if params[:card]
|
18
|
+
cards << get_card_by_token(params.delete(:card))
|
19
|
+
params[:default_card] = cards.first[:id]
|
20
|
+
end
|
21
|
+
customers[ params[:id] ] = Data.test_customer(cards, params)
|
18
22
|
end
|
19
23
|
|
20
24
|
def update_subscription(route, method_url, params, headers)
|
@@ -49,7 +53,7 @@ module StripeMock
|
|
49
53
|
assert_existance :customer, $1, customers[$1]
|
50
54
|
|
51
55
|
card_id = new_id('cc') if params.delete(:card)
|
52
|
-
cus = customers[$1] ||= Data.test_customer(:id => $1)
|
56
|
+
cus = customers[$1] ||= Data.test_customer([], :id => $1)
|
53
57
|
cus.merge!(params)
|
54
58
|
|
55
59
|
if card_id
|
@@ -70,7 +74,7 @@ module StripeMock
|
|
70
74
|
def get_customer(route, method_url, params, headers)
|
71
75
|
route =~ method_url
|
72
76
|
assert_existance :customer, $1, customers[$1]
|
73
|
-
customers[$1] ||= Data.test_customer(:id => $1)
|
77
|
+
customers[$1] ||= Data.test_customer([], :id => $1)
|
74
78
|
end
|
75
79
|
|
76
80
|
def list_customers(route, method_url, params, headers)
|
data/lib/stripe_mock/server.rb
CHANGED
data/lib/stripe_mock/version.rb
CHANGED
data/spec/readme_spec.rb
CHANGED
@@ -60,4 +60,13 @@ describe 'README examples' do
|
|
60
60
|
expect(event.data.object.email).to eq('joe@example.com')
|
61
61
|
end
|
62
62
|
|
63
|
+
it "generates a stripe card token" do
|
64
|
+
card_token = StripeMock.generate_card_token(last4: "9191", exp_year: 1984)
|
65
|
+
|
66
|
+
cus = Stripe::Customer.create(card: card_token)
|
67
|
+
card = cus.cards.data.first
|
68
|
+
expect(card.last4).to eq("9191")
|
69
|
+
expect(card.exp_year).to eq(1984)
|
70
|
+
end
|
71
|
+
|
63
72
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
shared_examples 'Card Token Mocking' do
|
4
|
+
|
5
|
+
it "generates a card token" do
|
6
|
+
card_token = StripeMock.generate_card_token(last4: "9191", exp_month: 99, exp_year: 3005)
|
7
|
+
|
8
|
+
cus = Stripe::Customer.create(card: card_token)
|
9
|
+
card = cus.cards.data.first
|
10
|
+
expect(card.last4).to eq("9191")
|
11
|
+
expect(card.exp_month).to eq(99)
|
12
|
+
expect(card.exp_year).to eq(3005)
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
|
2
2
|
def require_stripe_examples
|
3
|
+
require 'shared_stripe_examples/card_token_examples'
|
3
4
|
require 'shared_stripe_examples/charge_examples'
|
4
5
|
require 'shared_stripe_examples/customer_examples'
|
5
6
|
require 'shared_stripe_examples/error_mock_examples'
|
@@ -8,6 +9,7 @@ def require_stripe_examples
|
|
8
9
|
end
|
9
10
|
|
10
11
|
def it_behaves_like_stripe(&block)
|
12
|
+
it_behaves_like 'Card Token Mocking', &block
|
11
13
|
it_behaves_like 'Charge API', &block
|
12
14
|
it_behaves_like 'Customer API', &block
|
13
15
|
it_behaves_like 'Invoice Item API', &block
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stripe-ruby-mock
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.8.4.
|
4
|
+
version: 1.8.4.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -123,6 +123,7 @@ files:
|
|
123
123
|
- Rakefile
|
124
124
|
- bin/stripe-mock-server
|
125
125
|
- lib/stripe_mock.rb
|
126
|
+
- lib/stripe_mock/api/card_tokens.rb
|
126
127
|
- lib/stripe_mock/api/client.rb
|
127
128
|
- lib/stripe_mock/api/debug.rb
|
128
129
|
- lib/stripe_mock/api/errors.rb
|
@@ -188,6 +189,7 @@ files:
|
|
188
189
|
- spec/instance_spec.rb
|
189
190
|
- spec/readme_spec.rb
|
190
191
|
- spec/server_spec.rb
|
192
|
+
- spec/shared_stripe_examples/card_token_examples.rb
|
191
193
|
- spec/shared_stripe_examples/charge_examples.rb
|
192
194
|
- spec/shared_stripe_examples/customer_examples.rb
|
193
195
|
- spec/shared_stripe_examples/error_mock_examples.rb
|
@@ -231,6 +233,7 @@ test_files:
|
|
231
233
|
- spec/instance_spec.rb
|
232
234
|
- spec/readme_spec.rb
|
233
235
|
- spec/server_spec.rb
|
236
|
+
- spec/shared_stripe_examples/card_token_examples.rb
|
234
237
|
- spec/shared_stripe_examples/charge_examples.rb
|
235
238
|
- spec/shared_stripe_examples/customer_examples.rb
|
236
239
|
- spec/shared_stripe_examples/error_mock_examples.rb
|