stripe-ruby-mock 1.8.3.8 → 1.8.3.9
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +19 -13
- data/lib/stripe_mock.rb +1 -0
- data/lib/stripe_mock/api/client.rb +2 -2
- data/lib/stripe_mock/api/debug.rb +11 -0
- data/lib/stripe_mock/client.rb +12 -2
- data/lib/stripe_mock/instance.rb +4 -4
- data/lib/stripe_mock/request_handlers/customers.rb +5 -0
- data/lib/stripe_mock/request_handlers/plans.rb +5 -0
- data/lib/stripe_mock/server.rb +4 -0
- data/lib/stripe_mock/version.rb +1 -1
- data/spec/instance_spec.rb +18 -1
- data/spec/server_spec.rb +17 -5
- data/spec/shared_stripe_examples/customers.rb +9 -0
- data/spec/shared_stripe_examples/plans.rb +10 -0
- metadata +3 -2
data/README.md
CHANGED
@@ -116,11 +116,10 @@ describe MyApp do
|
|
116
116
|
|
117
117
|
after do
|
118
118
|
StripeMock.stop_client
|
119
|
-
#
|
120
119
|
# Alternatively:
|
121
|
-
#
|
122
|
-
#
|
123
|
-
#
|
120
|
+
# @client.close!
|
121
|
+
# -- Or --
|
122
|
+
# StripeMock.stop_client(:clear_server_data => true)
|
124
123
|
end
|
125
124
|
end
|
126
125
|
```
|
@@ -133,7 +132,6 @@ Here are some other neat things you can do with the client:
|
|
133
132
|
```ruby
|
134
133
|
@client.state #=> 'ready'
|
135
134
|
|
136
|
-
@client.set_server_debug(true)
|
137
135
|
@client.get_server_data(:customers) # Also works for :charges, :plans, etc.
|
138
136
|
@client.clear_server_data
|
139
137
|
|
@@ -196,22 +194,30 @@ Also, you can override values whenever you create any webhook event:
|
|
196
194
|
|
197
195
|
```ruby
|
198
196
|
it "can override default webhook values" do
|
197
|
+
# NOTE: given hash values get merged directly into event.data.object
|
199
198
|
event = StripeMock.mock_webhook_event('customer.created', {
|
200
|
-
:
|
201
|
-
|
202
|
-
:id => 'cus_my_custom_value',
|
203
|
-
:email => 'joe@example.com'
|
204
|
-
}
|
205
|
-
}
|
199
|
+
:id => 'cus_my_custom_value',
|
200
|
+
:email => 'joe@example.com'
|
206
201
|
})
|
207
202
|
# Alternatively:
|
208
|
-
# event.data.object.id = '
|
203
|
+
# event.data.object.id = 'cus_my_custom_value'
|
209
204
|
# event.data.object.email = 'joe@example.com'
|
210
|
-
expect(event.data.object.id).to eq('
|
205
|
+
expect(event.data.object.id).to eq('cus_my_custom_value')
|
211
206
|
expect(event.data.object.email).to eq('joe@example.com')
|
212
207
|
end
|
213
208
|
```
|
214
209
|
|
210
|
+
## Debugging
|
211
|
+
|
212
|
+
To enable debug messages:
|
213
|
+
|
214
|
+
StripeMock.toggle_debug(true)
|
215
|
+
|
216
|
+
This will **only last for the session**; Once you call `StripeMock.stop` or `StripeMock.stop_client`,
|
217
|
+
debug will be toggled off.
|
218
|
+
|
219
|
+
If you always want debug to be on (it's quite verbose), you should put this in a `before` block.
|
220
|
+
|
215
221
|
## TODO
|
216
222
|
|
217
223
|
* Cover all stripe urls/methods
|
data/lib/stripe_mock.rb
CHANGED
@@ -23,6 +23,7 @@ require 'stripe_mock/api/client'
|
|
23
23
|
require 'stripe_mock/api/server'
|
24
24
|
require 'stripe_mock/api/errors'
|
25
25
|
require 'stripe_mock/api/webhooks'
|
26
|
+
require 'stripe_mock/api/debug'
|
26
27
|
|
27
28
|
require 'stripe_mock/request_handlers/charges.rb'
|
28
29
|
require 'stripe_mock/request_handlers/customers.rb'
|
@@ -16,8 +16,8 @@ module StripeMock
|
|
16
16
|
@state = 'ready'
|
17
17
|
|
18
18
|
alias_stripe_method :request, @original_request_method
|
19
|
-
@client.
|
20
|
-
@client.
|
19
|
+
@client.clear_server_data if opts[:clear_server_data] == true
|
20
|
+
@client.cleanup
|
21
21
|
@client = nil
|
22
22
|
true
|
23
23
|
end
|
data/lib/stripe_mock/client.rb
CHANGED
@@ -28,15 +28,25 @@ module StripeMock
|
|
28
28
|
timeout_wrap { @pipe.set_debug(toggle) }
|
29
29
|
end
|
30
30
|
|
31
|
+
def server_debug?
|
32
|
+
timeout_wrap { @pipe.debug? }
|
33
|
+
end
|
34
|
+
|
31
35
|
def clear_server_data
|
32
|
-
timeout_wrap { @pipe.
|
36
|
+
timeout_wrap { @pipe.clear_data }
|
33
37
|
end
|
34
38
|
|
35
39
|
def close!
|
36
|
-
|
40
|
+
self.cleanup
|
37
41
|
StripeMock.stop_client(:clear_server_data => false)
|
38
42
|
end
|
39
43
|
|
44
|
+
def cleanup
|
45
|
+
return if @state == 'closed'
|
46
|
+
set_server_debug(false)
|
47
|
+
@state = 'closed'
|
48
|
+
end
|
49
|
+
|
40
50
|
def timeout_wrap
|
41
51
|
raise ClosedClientConnectionError if @state == 'closed'
|
42
52
|
yield
|
data/lib/stripe_mock/instance.rb
CHANGED
@@ -50,13 +50,13 @@ module StripeMock
|
|
50
50
|
handler = @@handlers.find {|h| method_url =~ h[:route] }
|
51
51
|
|
52
52
|
if handler
|
53
|
-
self.send(handler[:name], handler[:route], method_url, params, headers)
|
54
|
-
|
55
|
-
|
53
|
+
res = self.send(handler[:name], handler[:route], method_url, params, headers)
|
54
|
+
puts "[StripeMock res] #{res}" if @debug == true
|
55
|
+
[res, api_key]
|
56
56
|
else
|
57
57
|
puts "WARNING: Unrecognized method + url: [#{method} #{url}]"
|
58
58
|
puts " params: #{params}"
|
59
|
-
{}
|
59
|
+
[{}, api_key]
|
60
60
|
end
|
61
61
|
end
|
62
62
|
|
@@ -8,6 +8,7 @@ module StripeMock
|
|
8
8
|
klass.add_handler 'delete /v1/customers/(.*)/subscription', :cancel_subscription
|
9
9
|
klass.add_handler 'post /v1/customers/(.*)', :update_customer
|
10
10
|
klass.add_handler 'get /v1/customers/(.*)', :get_customer
|
11
|
+
klass.add_handler 'get /v1/customers', :list_customers
|
11
12
|
end
|
12
13
|
|
13
14
|
def new_customer(route, method_url, params, headers)
|
@@ -34,6 +35,10 @@ module StripeMock
|
|
34
35
|
customers[$1] ||= Data.test_customer(:id => $1)
|
35
36
|
end
|
36
37
|
|
38
|
+
def list_customers(route, method_url, params, headers)
|
39
|
+
customers.values
|
40
|
+
end
|
41
|
+
|
37
42
|
end
|
38
43
|
end
|
39
44
|
end
|
@@ -5,6 +5,7 @@ module StripeMock
|
|
5
5
|
def Plans.included(klass)
|
6
6
|
klass.add_handler 'post /v1/plans', :new_plan
|
7
7
|
klass.add_handler 'get /v1/plans/(.*)', :get_plan
|
8
|
+
klass.add_handler 'get /v1/plans', :list_plans
|
8
9
|
end
|
9
10
|
|
10
11
|
def new_plan(route, method_url, params, headers)
|
@@ -17,6 +18,10 @@ module StripeMock
|
|
17
18
|
plans[$1] ||= Data.test_plan(:id => $1)
|
18
19
|
end
|
19
20
|
|
21
|
+
def list_plans(route, method_url, params, headers)
|
22
|
+
plans.values
|
23
|
+
end
|
24
|
+
|
20
25
|
end
|
21
26
|
end
|
22
27
|
end
|
data/lib/stripe_mock/server.rb
CHANGED
data/lib/stripe_mock/version.rb
CHANGED
data/spec/instance_spec.rb
CHANGED
@@ -15,9 +15,26 @@ describe StripeMock::Instance do
|
|
15
15
|
"id" => "str_abcde",
|
16
16
|
:name => "String Plan"
|
17
17
|
}
|
18
|
-
res = StripeMock.instance.mock_request('post', '/v1/plans', 'api_key', string_params)
|
18
|
+
res, api_key = StripeMock.instance.mock_request('post', '/v1/plans', 'api_key', string_params)
|
19
19
|
expect(res[:id]).to eq('str_abcde')
|
20
20
|
expect(res[:name]).to eq('String Plan')
|
21
21
|
end
|
22
22
|
|
23
|
+
it "can toggle debug" do
|
24
|
+
StripeMock.toggle_debug(true)
|
25
|
+
expect(StripeMock.instance.debug).to eq(true)
|
26
|
+
StripeMock.toggle_debug(false)
|
27
|
+
expect(StripeMock.instance.debug).to eq(false)
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should toggle off debug when mock session ends" do
|
31
|
+
StripeMock.toggle_debug(true)
|
32
|
+
|
33
|
+
StripeMock.stop
|
34
|
+
expect(StripeMock.instance).to be_nil
|
35
|
+
|
36
|
+
StripeMock.start
|
37
|
+
expect(StripeMock.instance.debug).to eq(false)
|
38
|
+
end
|
39
|
+
|
23
40
|
end
|
data/spec/server_spec.rb
CHANGED
@@ -20,7 +20,7 @@ describe 'StripeMock Server' do
|
|
20
20
|
@client = StripeMock.start_client
|
21
21
|
end
|
22
22
|
|
23
|
-
after { StripeMock.stop_client }
|
23
|
+
after { StripeMock.stop_client(:clear_server_data => true) }
|
24
24
|
|
25
25
|
|
26
26
|
it "uses an RPC client for mock requests" do
|
@@ -54,15 +54,27 @@ describe 'StripeMock Server' do
|
|
54
54
|
|
55
55
|
|
56
56
|
it "returns a response with symbolized hash keys" do
|
57
|
-
response = StripeMock.redirect_to_mock_server('get', '/v1/plans/x', 'xxx')
|
57
|
+
response, api_key = StripeMock.redirect_to_mock_server('get', '/v1/plans/x', 'xxx')
|
58
58
|
response.keys.each {|k| expect(k).to be_a(Symbol) }
|
59
59
|
end
|
60
60
|
|
61
61
|
|
62
62
|
it "can toggle debug" do
|
63
|
-
StripeMock.
|
64
|
-
|
65
|
-
StripeMock.
|
63
|
+
StripeMock.toggle_debug(true)
|
64
|
+
expect(@client.server_debug?).to eq(true)
|
65
|
+
StripeMock.toggle_debug(false)
|
66
|
+
expect(@client.server_debug?).to eq(false)
|
67
|
+
end
|
68
|
+
|
69
|
+
|
70
|
+
it "should toggle off debug when mock session ends" do
|
71
|
+
StripeMock.toggle_debug(true)
|
72
|
+
|
73
|
+
StripeMock.stop_client
|
74
|
+
expect(StripeMock.client).to be_nil
|
75
|
+
|
76
|
+
StripeMock.start_client
|
77
|
+
expect(StripeMock.client.server_debug?).to eq(false)
|
66
78
|
end
|
67
79
|
|
68
80
|
|
@@ -48,6 +48,15 @@ shared_examples 'Customer API' do
|
|
48
48
|
expect(customer.description).to_not be_nil
|
49
49
|
end
|
50
50
|
|
51
|
+
it "retrieves all customers" do
|
52
|
+
Stripe::Customer.create({ email: 'one@one.com' })
|
53
|
+
Stripe::Customer.create({ email: 'two@two.com' })
|
54
|
+
|
55
|
+
all = Stripe::Customer.all
|
56
|
+
expect(all.length).to eq(2)
|
57
|
+
all.map(&:email).should include('one@one.com', 'two@two.com')
|
58
|
+
end
|
59
|
+
|
51
60
|
it "updates a stripe customer" do
|
52
61
|
original = Stripe::Customer.retrieve("test_customer_update")
|
53
62
|
email = original.email
|
@@ -68,4 +68,14 @@ shared_examples 'Plan API' do
|
|
68
68
|
expect(plan.interval).to_not be_nil
|
69
69
|
end
|
70
70
|
|
71
|
+
it "retrieves all plans" do
|
72
|
+
Stripe::Plan.create({ id: 'Plan One', amount: 54321 })
|
73
|
+
Stripe::Plan.create({ id: 'Plan Two', amount: 98765 })
|
74
|
+
|
75
|
+
all = Stripe::Plan.all
|
76
|
+
expect(all.length).to eq(2)
|
77
|
+
all.map(&:id).should include('Plan One', 'Plan Two')
|
78
|
+
all.map(&:amount).should include(54321, 98765)
|
79
|
+
end
|
80
|
+
|
71
81
|
end
|
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.3.
|
4
|
+
version: 1.8.3.9
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-06-
|
12
|
+
date: 2013-06-21 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: stripe
|
@@ -107,6 +107,7 @@ files:
|
|
107
107
|
- bin/stripe-mock-server
|
108
108
|
- lib/stripe_mock.rb
|
109
109
|
- lib/stripe_mock/api/client.rb
|
110
|
+
- lib/stripe_mock/api/debug.rb
|
110
111
|
- lib/stripe_mock/api/errors.rb
|
111
112
|
- lib/stripe_mock/api/instance.rb
|
112
113
|
- lib/stripe_mock/api/server.rb
|