stripe-ruby-mock 1.8.7.1 → 1.8.7.2
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +1 -1
- data/lib/stripe_mock.rb +1 -0
- data/lib/stripe_mock/api/webhooks.rb +10 -1
- data/lib/stripe_mock/client.rb +4 -0
- data/lib/stripe_mock/instance.rb +17 -10
- data/lib/stripe_mock/request_handlers/events.rb +18 -0
- data/lib/stripe_mock/server.rb +4 -0
- data/lib/stripe_mock/version.rb +1 -1
- data/spec/{webhook_spec.rb → shared_stripe_examples/webhook_event_examples.rb} +36 -3
- data/spec/support/stripe_examples.rb +2 -0
- metadata +5 -4
data/README.md
CHANGED
data/lib/stripe_mock.rb
CHANGED
@@ -32,6 +32,7 @@ require 'stripe_mock/api/debug'
|
|
32
32
|
require 'stripe_mock/request_handlers/charges.rb'
|
33
33
|
require 'stripe_mock/request_handlers/cards.rb'
|
34
34
|
require 'stripe_mock/request_handlers/customers.rb'
|
35
|
+
require 'stripe_mock/request_handlers/events.rb'
|
35
36
|
require 'stripe_mock/request_handlers/invoices.rb'
|
36
37
|
require 'stripe_mock/request_handlers/invoice_items.rb'
|
37
38
|
require 'stripe_mock/request_handlers/plans.rb'
|
@@ -16,8 +16,17 @@ module StripeMock
|
|
16
16
|
json = Stripe::Util.symbolize_names(json)
|
17
17
|
params = Stripe::Util.symbolize_names(params)
|
18
18
|
json[:data][:object] = Util.rmerge(json[:data][:object], params)
|
19
|
+
json.delete(:id)
|
19
20
|
|
20
|
-
|
21
|
+
if @state == 'local'
|
22
|
+
event_data = instance.generate_event(json)
|
23
|
+
elsif @state == 'remote'
|
24
|
+
event_data = client.generate_event(json)
|
25
|
+
else
|
26
|
+
raise UnstartedStateError
|
27
|
+
end
|
28
|
+
|
29
|
+
Stripe::Event.construct_from(event_data)
|
21
30
|
end
|
22
31
|
|
23
32
|
module Webhooks
|
data/lib/stripe_mock/client.rb
CHANGED
@@ -56,6 +56,10 @@ module StripeMock
|
|
56
56
|
timeout_wrap { @pipe.generate_card_token(card_params) }
|
57
57
|
end
|
58
58
|
|
59
|
+
def generate_event(event_data)
|
60
|
+
timeout_wrap { Stripe::Util.symbolize_names @pipe.generate_event(event_data) }
|
61
|
+
end
|
62
|
+
|
59
63
|
def clear_server_data
|
60
64
|
timeout_wrap { @pipe.clear_data }
|
61
65
|
end
|
data/lib/stripe_mock/instance.rb
CHANGED
@@ -18,29 +18,31 @@ module StripeMock
|
|
18
18
|
include StripeMock::RequestHandlers::Charges
|
19
19
|
include StripeMock::RequestHandlers::Cards
|
20
20
|
include StripeMock::RequestHandlers::Customers
|
21
|
+
include StripeMock::RequestHandlers::Events
|
21
22
|
include StripeMock::RequestHandlers::Invoices
|
22
23
|
include StripeMock::RequestHandlers::InvoiceItems
|
23
24
|
include StripeMock::RequestHandlers::Plans
|
24
25
|
include StripeMock::RequestHandlers::Recipients
|
25
26
|
|
26
27
|
|
27
|
-
attr_reader :
|
28
|
-
:recipients
|
29
|
-
|
30
|
-
attr_accessor :debug, :strict
|
28
|
+
attr_reader :bank_tokens, :charges, :customers, :events,
|
29
|
+
:invoices, :plans, :recipients
|
30
|
+
|
31
|
+
attr_accessor :error_queue, :debug, :strict
|
31
32
|
|
32
33
|
def initialize
|
34
|
+
@bank_tokens = {}
|
35
|
+
@card_tokens = {}
|
33
36
|
@customers = {}
|
34
|
-
@recipients = {}
|
35
37
|
@charges = {}
|
36
|
-
@
|
38
|
+
@events = {}
|
37
39
|
@invoices = {}
|
38
|
-
@
|
39
|
-
@
|
40
|
+
@plans = {}
|
41
|
+
@recipients = {}
|
40
42
|
|
41
|
-
@id_counter = 0
|
42
|
-
@error_queue = ErrorQueue.new
|
43
43
|
@debug = false
|
44
|
+
@error_queue = ErrorQueue.new
|
45
|
+
@id_counter = 0
|
44
46
|
@strict = true
|
45
47
|
end
|
46
48
|
|
@@ -86,6 +88,11 @@ module StripeMock
|
|
86
88
|
token
|
87
89
|
end
|
88
90
|
|
91
|
+
def generate_event(event_data)
|
92
|
+
event_data[:id] ||= new_id 'evt'
|
93
|
+
@events[ event_data[:id] ] = event_data
|
94
|
+
end
|
95
|
+
|
89
96
|
def get_bank_by_token(token)
|
90
97
|
if token.nil? || @bank_tokens[token].nil?
|
91
98
|
Data.mock_bank_account
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module StripeMock
|
2
|
+
module RequestHandlers
|
3
|
+
module Events
|
4
|
+
|
5
|
+
def Events.included(klass)
|
6
|
+
klass.add_handler 'get /v1/events/(.*)', :retrieve_event
|
7
|
+
end
|
8
|
+
|
9
|
+
def retrieve_event(route, method_url, params, headers)
|
10
|
+
route =~ method_url
|
11
|
+
event = events[$1]
|
12
|
+
assert_existance :event, $1, event
|
13
|
+
event
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
data/lib/stripe_mock/server.rb
CHANGED
@@ -54,6 +54,10 @@ module StripeMock
|
|
54
54
|
@instance.generate_bank_token(recipient_params)
|
55
55
|
end
|
56
56
|
|
57
|
+
def generate_event(event_data)
|
58
|
+
@instance.generate_event(event_data)
|
59
|
+
end
|
60
|
+
|
57
61
|
def debug?; @instance.debug; end
|
58
62
|
def strict?; @instance.strict; end
|
59
63
|
def ping; true; end
|
data/lib/stripe_mock/version.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
|
3
|
+
shared_examples 'Webhook Events API' do
|
4
4
|
|
5
5
|
it "matches the list of webhooks with the folder of fixtures" do
|
6
6
|
events = StripeMock::Webhooks.event_list.to_set
|
@@ -15,7 +15,7 @@ describe 'Webhook Generation' do
|
|
15
15
|
it "first looks in spec/fixtures/stripe_webhooks/ for fixtures by default" do
|
16
16
|
event = StripeMock.mock_webhook_event('account.updated')
|
17
17
|
expect(event).to be_a(Stripe::Event)
|
18
|
-
expect(event.id).to
|
18
|
+
expect(event.id).to match /^test_evt_[0-9]+/
|
19
19
|
expect(event.type).to eq('account.updated')
|
20
20
|
end
|
21
21
|
|
@@ -26,16 +26,49 @@ describe 'Webhook Generation' do
|
|
26
26
|
end
|
27
27
|
|
28
28
|
it "allows configuring the project fixture folder" do
|
29
|
+
original_path = StripeMock.webhook_fixture_path
|
30
|
+
|
29
31
|
StripeMock.webhook_fixture_path = './spec/_dummy/webhooks/'
|
30
32
|
expect(StripeMock.webhook_fixture_path).to eq('./spec/_dummy/webhooks/')
|
31
33
|
|
32
34
|
event = StripeMock.mock_webhook_event('dummy.event')
|
33
35
|
expect(event.val).to eq('success')
|
36
|
+
|
37
|
+
StripeMock.webhook_fixture_path = original_path
|
34
38
|
end
|
35
39
|
|
36
|
-
it "generates an event" do
|
40
|
+
it "generates an event and stores it in memory" do
|
37
41
|
event = StripeMock.mock_webhook_event('customer.created')
|
38
42
|
expect(event).to be_a(Stripe::Event)
|
43
|
+
expect(event.id).to_not be_nil
|
44
|
+
|
45
|
+
data = test_data_source(:events)
|
46
|
+
expect(data[event.id]).to_not be_nil
|
47
|
+
expect(data[event.id][:id]).to eq(event.id)
|
48
|
+
expect(data[event.id][:type]).to eq('customer.created')
|
49
|
+
end
|
50
|
+
|
51
|
+
it "generates an id for a new event" do
|
52
|
+
event_a = StripeMock.mock_webhook_event('customer.created')
|
53
|
+
event_b = StripeMock.mock_webhook_event('customer.created')
|
54
|
+
expect(event_a.id).to_not be_nil
|
55
|
+
expect(event_a.id).to_not eq(event_b.id)
|
56
|
+
|
57
|
+
data = test_data_source(:events)
|
58
|
+
expect(data[event_a.id]).to_not be_nil
|
59
|
+
expect(data[event_a.id][:id]).to eq(event_a.id)
|
60
|
+
|
61
|
+
expect(data[event_b.id]).to_not be_nil
|
62
|
+
expect(data[event_b.id][:id]).to eq(event_b.id)
|
63
|
+
end
|
64
|
+
|
65
|
+
it "retrieves an eveng using the event resource" do
|
66
|
+
webhook_event = StripeMock.mock_webhook_event('plan.created')
|
67
|
+
expect(webhook_event.id).to_not be_nil
|
68
|
+
|
69
|
+
event = Stripe::Event.retrieve(webhook_event.id)
|
70
|
+
expect(event).to_not be_nil
|
71
|
+
expect(event.type).to eq 'plan.created'
|
39
72
|
end
|
40
73
|
|
41
74
|
it "takes a hash and deep merges into the data object" do
|
@@ -10,6 +10,7 @@ def require_stripe_examples
|
|
10
10
|
require 'shared_stripe_examples/invoice_item_examples'
|
11
11
|
require 'shared_stripe_examples/plan_examples'
|
12
12
|
require 'shared_stripe_examples/recipient_examples'
|
13
|
+
require 'shared_stripe_examples/webhook_event_examples'
|
13
14
|
end
|
14
15
|
|
15
16
|
def it_behaves_like_stripe(&block)
|
@@ -23,4 +24,5 @@ def it_behaves_like_stripe(&block)
|
|
23
24
|
it_behaves_like 'Plan API', &block
|
24
25
|
it_behaves_like 'Recipient API', &block
|
25
26
|
it_behaves_like 'Stripe Error Mocking', &block
|
27
|
+
it_behaves_like 'Webhook Events API', &block
|
26
28
|
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.7.
|
4
|
+
version: 1.8.7.2
|
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-
|
12
|
+
date: 2013-12-09 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: stripe
|
@@ -146,6 +146,7 @@ files:
|
|
146
146
|
- lib/stripe_mock/request_handlers/cards.rb
|
147
147
|
- lib/stripe_mock/request_handlers/charges.rb
|
148
148
|
- lib/stripe_mock/request_handlers/customers.rb
|
149
|
+
- lib/stripe_mock/request_handlers/events.rb
|
149
150
|
- lib/stripe_mock/request_handlers/invoice_items.rb
|
150
151
|
- lib/stripe_mock/request_handlers/invoices.rb
|
151
152
|
- lib/stripe_mock/request_handlers/plans.rb
|
@@ -205,11 +206,11 @@ files:
|
|
205
206
|
- spec/shared_stripe_examples/invoice_item_examples.rb
|
206
207
|
- spec/shared_stripe_examples/plan_examples.rb
|
207
208
|
- spec/shared_stripe_examples/recipient_examples.rb
|
209
|
+
- spec/shared_stripe_examples/webhook_event_examples.rb
|
208
210
|
- spec/spec_helper.rb
|
209
211
|
- spec/stripe_mock_spec.rb
|
210
212
|
- spec/support/stripe_examples.rb
|
211
213
|
- spec/util_spec.rb
|
212
|
-
- spec/webhook_spec.rb
|
213
214
|
- stripe-ruby-mock.gemspec
|
214
215
|
homepage: https://github.com/rebelidealist/stripe-ruby-mock
|
215
216
|
licenses:
|
@@ -253,8 +254,8 @@ test_files:
|
|
253
254
|
- spec/shared_stripe_examples/invoice_item_examples.rb
|
254
255
|
- spec/shared_stripe_examples/plan_examples.rb
|
255
256
|
- spec/shared_stripe_examples/recipient_examples.rb
|
257
|
+
- spec/shared_stripe_examples/webhook_event_examples.rb
|
256
258
|
- spec/spec_helper.rb
|
257
259
|
- spec/stripe_mock_spec.rb
|
258
260
|
- spec/support/stripe_examples.rb
|
259
261
|
- spec/util_spec.rb
|
260
|
-
- spec/webhook_spec.rb
|