stripe-ruby-mock 1.8.4.4 → 1.8.4.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|