money_mover 0.0.3

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.
Files changed (56) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +1 -0
  3. data/.rspec +2 -0
  4. data/Gemfile +17 -0
  5. data/Gemfile.lock +80 -0
  6. data/lib/money_mover/dwolla/account_client.rb +9 -0
  7. data/lib/money_mover/dwolla/account_token.rb +24 -0
  8. data/lib/money_mover/dwolla/api_connection.rb +18 -0
  9. data/lib/money_mover/dwolla/api_server_response.rb +31 -0
  10. data/lib/money_mover/dwolla/application_client.rb +9 -0
  11. data/lib/money_mover/dwolla/application_token.rb +25 -0
  12. data/lib/money_mover/dwolla/client.rb +24 -0
  13. data/lib/money_mover/dwolla/config.rb +33 -0
  14. data/lib/money_mover/dwolla/environment_urls.rb +35 -0
  15. data/lib/money_mover/dwolla/error_handler.rb +30 -0
  16. data/lib/money_mover/dwolla/models/account_funding_source.rb +28 -0
  17. data/lib/money_mover/dwolla/models/api_resource.rb +70 -0
  18. data/lib/money_mover/dwolla/models/customer.rb +53 -0
  19. data/lib/money_mover/dwolla/models/document.rb +22 -0
  20. data/lib/money_mover/dwolla/models/funding_source.rb +30 -0
  21. data/lib/money_mover/dwolla/models/micro_deposit_initiation.rb +19 -0
  22. data/lib/money_mover/dwolla/models/micro_deposit_verification.rb +31 -0
  23. data/lib/money_mover/dwolla/models/receive_only_business_customer.rb +27 -0
  24. data/lib/money_mover/dwolla/models/receive_only_customer.rb +19 -0
  25. data/lib/money_mover/dwolla/models/root_account.rb +27 -0
  26. data/lib/money_mover/dwolla/models/transfer.rb +33 -0
  27. data/lib/money_mover/dwolla/models/unverified_business_customer.rb +43 -0
  28. data/lib/money_mover/dwolla/models/unverified_customer.rb +27 -0
  29. data/lib/money_mover/dwolla/models/verified_business_customer.rb +53 -0
  30. data/lib/money_mover/dwolla/models/webhook_subscription.rb +36 -0
  31. data/lib/money_mover/dwolla/token.rb +26 -0
  32. data/lib/money_mover/dwolla.rb +44 -0
  33. data/lib/money_mover/standalone_errors.rb +12 -0
  34. data/lib/money_mover/version.rb +3 -0
  35. data/lib/money_mover.rb +15 -0
  36. data/money_mover.gemspec +27 -0
  37. data/spec/integration/money_mover/dwolla/customers/create_spec.rb +75 -0
  38. data/spec/integration/money_mover/dwolla/customers/find_spec.rb +71 -0
  39. data/spec/integration/money_mover/dwolla/customers/funding-sources/create_spec.rb +40 -0
  40. data/spec/integration/money_mover/dwolla/documents/create_spec.rb +62 -0
  41. data/spec/integration/money_mover/dwolla/funding-sources/micro-deposits/initiation_spec.rb +52 -0
  42. data/spec/integration/money_mover/dwolla/funding-sources/micro-deposits/verification_spec.rb +77 -0
  43. data/spec/integration/money_mover/dwolla/transfers/create_spec.rb +80 -0
  44. data/spec/lib/money_mover/dwolla/client_spec.rb +101 -0
  45. data/spec/lib/money_mover/dwolla/config_spec.rb +20 -0
  46. data/spec/lib/money_mover/dwolla/error_handler_spec.rb +78 -0
  47. data/spec/lib/money_mover/dwolla/funding_source_spec.rb +94 -0
  48. data/spec/lib/money_mover/dwolla/microdeposits_initiation_spec.rb +36 -0
  49. data/spec/lib/money_mover/dwolla/root_account_spec.rb +86 -0
  50. data/spec/lib/money_mover/dwolla/token_spec.rb +101 -0
  51. data/spec/lib/money_mover/dwolla/transfer_spec.rb +94 -0
  52. data/spec/lib/money_mover/dwolla/webhook_subscription_spec.rb +199 -0
  53. data/spec/spec_helper.rb +121 -0
  54. data/spec/support/dwolla_helper.rb +330 -0
  55. data/spec/support/fixtures/sample.jpg +0 -0
  56. metadata +196 -0
@@ -0,0 +1,330 @@
1
+ require 'webmock'
2
+
3
+ class TestConfigProvider
4
+ def access_token
5
+ "X7JyEzy6F85MeDZERFE2cgiLbm9TXIbQNmr16cCfI6y1CtPrak"
6
+ end
7
+
8
+ def refresh_token
9
+ "Qlj3SFaIGPJmeFrPEJsPI6smKwdXLsPYAYi83lXkqeb8q0MX1P"
10
+ end
11
+
12
+ def application_token
13
+ "SF8Vxx6H644lekdVKAAHFnqRCFy8WGqltzitpii6w2MVaZp1Nw"
14
+ end
15
+
16
+ def environment
17
+ :sandbox
18
+ end
19
+
20
+ def api_key
21
+ "IkvGNVjFLJTBZeWsqFdHMppbuG2g4kTY1WFxz1HUjusxZ71eMz"
22
+ end
23
+
24
+ def api_secret_key
25
+ "lB9gPl6xyqLIiKF9al1K8e2sXhNyvjkrsTMUFKs176oXsSo2K9"
26
+ end
27
+
28
+ def webhook_secret_key
29
+ "20f2f952eb91071ab655d5522d7d246177b3fbbe8fe878df80be36a0fa2c4c6f7d1e981038d55aae40e5325d6377b0b4be78375c6566c74a7c9fdba7008daf58"
30
+ end
31
+
32
+ def webhook_callback_url
33
+ "http://buildpay.sprouti.com/ach/events"
34
+ end
35
+
36
+ def account_token_provider
37
+ TestDwollaTokenProvider
38
+ end
39
+ end
40
+
41
+ class TestDwollaTokenProvider
42
+ def access_token
43
+ "X7JyEzy6F85MeDZERFE2cgiLbm9TXIbQNmr16cCfI6y1CtPrak"
44
+ end
45
+
46
+ def refresh_token
47
+ "Qlj3SFaIGPJmeFrPEJsPI6smKwdXLsPYAYi83lXkqeb8q0MX1P"
48
+ end
49
+ end
50
+
51
+ class DwollaHelper
52
+ include WebMock::API
53
+
54
+ def initialize
55
+ @config_provider = TestConfigProvider.new
56
+ end
57
+
58
+ def access_token
59
+ @config_provider.access_token
60
+ end
61
+
62
+ def refresh_token
63
+ @config_provider.refresh_token
64
+ end
65
+
66
+ def application_token
67
+ @config_provider.application_token
68
+ end
69
+
70
+ def api_key
71
+ @config_provider.api_key
72
+ end
73
+
74
+ def api_secret_key
75
+ @config_provider.api_secret_key
76
+ end
77
+
78
+ def webhook_secret_key
79
+ @config_provider.webhook_secret_key
80
+ end
81
+
82
+ def webhook_callback_url
83
+ @config_provider.webhook_callback_url
84
+ end
85
+
86
+ def api_url
87
+ "https://api-uat.dwolla.com"
88
+ end
89
+
90
+ def api_endpoint
91
+ api_url
92
+ end
93
+
94
+ def customers_endpoint
95
+ 'customers'
96
+ end
97
+
98
+ def customer_endpoint(customer_token)
99
+ [ customers_endpoint, customer_token ].join '/'
100
+ end
101
+
102
+ def customer_funding_sources_endpoint(customer_token)
103
+ [ customer_endpoint(customer_token), 'funding-sources' ].join '/'
104
+ end
105
+
106
+ def customer_funding_source_endpoint(customer_token, funding_source_token)
107
+ [ customer_funding_sources_endpoint(customer_token), funding_source_token ].join '/'
108
+ end
109
+
110
+ def request_headers
111
+ {
112
+ 'Accept'=>'application/vnd.dwolla.v1.hal+json',
113
+ #'Accept-Encoding'=>'gzip, deflate',
114
+ 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3',
115
+ 'Authorization'=>"Bearer #{access_token}",
116
+ #'Content-Type'=>'application/json',
117
+ }
118
+ end
119
+
120
+ def customer_created_response(customer_token)
121
+ resource_created_response customer_endpoint(customer_token)
122
+ end
123
+
124
+ def transfer_created_response(transfer_token)
125
+ resource_created_response transfer_endpoint(transfer_token)
126
+ end
127
+
128
+ def customer_document_created_response(resource_token)
129
+ resource_created_response document_endpoint(resource_token)
130
+ end
131
+
132
+ def customer_funding_source_created_response(customer_token, funding_source_token)
133
+ resource_created_response customer_funding_source_endpoint(customer_token, funding_source_token)
134
+ end
135
+
136
+ def customer_documents_endpoint(customer_token)
137
+ [ customer_endpoint(customer_token), "documents" ].join '/'
138
+ end
139
+
140
+ def funding_sources_endpoint
141
+ "funding-sources"
142
+ end
143
+
144
+ def documents_endpoint
145
+ "documents"
146
+ end
147
+
148
+ def document_endpoint(resource_token)
149
+ [ documents_endpoint, resource_token ].join '/'
150
+ end
151
+
152
+ def funding_source_endpoint(funding_source_token)
153
+ [ funding_sources_endpoint, funding_source_token ].join '/'
154
+ end
155
+
156
+ def funding_source_microdeposits_endpoint(funding_source_token)
157
+ [ funding_source_endpoint(funding_source_token), "micro-deposits" ].join '/'
158
+ end
159
+
160
+ def transfers_endpoint
161
+ "transfers"
162
+ end
163
+
164
+ def transfer_endpoint(transfer_token)
165
+ [ transfers_endpoint, transfer_token ].join '/'
166
+ end
167
+
168
+ def resource_created_response(resource_location)
169
+ {
170
+ status: 201,
171
+ body: "",
172
+ headers: {
173
+ location: resource_location
174
+ }
175
+ }
176
+ end
177
+
178
+ def resource_create_error_response(response_body)
179
+ {
180
+ status: 400,
181
+ body: response_body.to_json,
182
+ headers: {"Content-Type" => "application/json"}
183
+ }
184
+ end
185
+
186
+ def stub_create_customer_request(params, response)
187
+ stub_post_request customers_endpoint, params, response
188
+ end
189
+
190
+ def stub_create_customer_funding_source_request(customer_token, params, response)
191
+ stub_post_request customer_funding_sources_endpoint(customer_token), params, response
192
+ end
193
+
194
+ def stub_find_customer_request(customer_token, response)
195
+ stub_get_request customer_endpoint(customer_token), response
196
+ end
197
+
198
+ def stub_funding_source_microdeposits_request(funding_source_token, create_params, response)
199
+ stub_post_request funding_source_microdeposits_endpoint(funding_source_token), create_params, response
200
+ end
201
+
202
+ def stub_create_transfer_request(params, response)
203
+ stub_post_request transfers_endpoint, params, response
204
+ end
205
+
206
+ def stub_create_customer_document_request(customer_token, params, response)
207
+ stub_post_request customer_documents_endpoint(customer_token), params, response
208
+ end
209
+
210
+ def stub_get_request(url, response)
211
+ stub_request(:get, build_dwolla_url(url)).with(headers: request_headers).to_return(response)
212
+ end
213
+
214
+ def stub_post_request(url, params, response)
215
+ stub_request(:post, build_dwolla_url(url)).with(body: params, headers: request_headers).to_return(response)
216
+ end
217
+
218
+ def build_dwolla_url(url)
219
+ [ api_endpoint, url ].join '/'
220
+ end
221
+
222
+ # taken from ach_helper
223
+
224
+ def get_token_url
225
+ "https://uat.dwolla.com/oauth/v2/token"
226
+ end
227
+
228
+ def error_response(body_json = {})
229
+ {
230
+ status: 400,
231
+ body: body_json.to_json,
232
+ headers: {"Content-Type" => "application/json"}
233
+ }
234
+ end
235
+
236
+ def stub_get_token_request(token_response = nil)
237
+ token_response ||= {
238
+ "access_token": application_token,
239
+ "token_type": "bearer",
240
+ "expires_in": 3600,
241
+ "scope": "AccountInfoFull|ManageAccount|Contacts|Transactions|Balance|Send|Request|Funding"
242
+ }
243
+
244
+ req_body = {
245
+ grant_type: "client_credentials",
246
+ client_id: api_key,
247
+ client_secret: api_secret_key
248
+ }
249
+
250
+ stub_request(:post, get_token_url).
251
+ with(:body => req_body).
252
+ to_return(status: 200, body: token_response.to_json, headers: {"Content-Type" => "application/json"})
253
+ end
254
+
255
+ def stub_refresh_token_request(token_response)
256
+ req_body = {
257
+ grant_type: "refresh_token",
258
+ client_id: api_key,
259
+ client_secret: api_secret_key,
260
+ refresh_token: refresh_token
261
+ }
262
+
263
+ req_headers = {
264
+ 'Accept'=>'application/vnd.dwolla.v1.hal+json',
265
+ 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3',
266
+ 'User-Agent'=>'Faraday v0.9.2'
267
+ }
268
+
269
+ stub_request(:post, get_token_url).with(body: req_body, headers: req_headers).
270
+ to_return(:status => 200, :body => token_response.to_json, headers: {"Content-Type" => "application/json"})
271
+ end
272
+
273
+ def webhook_subscriptions_url
274
+ "#{api_url}/webhook-subscriptions"
275
+ end
276
+
277
+ def webhook_subscription_url(webhook_token)
278
+ "#{api_url}/webhook-subscriptions/#{webhook_token}"
279
+ end
280
+
281
+ def stub_get_webhook_subscriptions_request(stub_response)
282
+ stub_request(:get, webhook_subscriptions_url).
283
+ with(headers: dwolla_application_request_headers).
284
+ to_return(body: stub_response.to_json, headers: {"Content-Type" => "application/json"})
285
+ end
286
+
287
+ def stub_create_webhook_subscription_request(stub_params, stub_response)
288
+ stub_request(:post, webhook_subscriptions_url).
289
+ with(headers: dwolla_application_request_headers, body: stub_params).
290
+ to_return(stub_response)
291
+ end
292
+
293
+ def stub_delete_webhook_subscription_request(subscription_id, stub_response)
294
+ stub_request(:delete, webhook_subscription_url(subscription_id)).
295
+ with(headers: dwolla_application_request_headers).
296
+ to_return(stub_response)
297
+ end
298
+
299
+ def dwolla_application_request_headers
300
+ {
301
+ 'Accept'=>'application/vnd.dwolla.v1.hal+json',
302
+ 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3',
303
+ 'Authorization'=>"Bearer #{application_token}",
304
+ 'User-Agent'=>'Faraday v0.9.2'
305
+ }
306
+ end
307
+
308
+ def create_webhook_success_response(webhook_token)
309
+ resource_created_response webhook_subscription_url(webhook_token)
310
+ end
311
+
312
+ def resource_deleted_response
313
+ {
314
+ status: 200,
315
+ body: ""
316
+ }
317
+ end
318
+
319
+ def create_customer_success_response(customer_token)
320
+ resource_created_response customer_url(customer_token)
321
+ end
322
+
323
+ def customers_url
324
+ "#{api_url}/customers"
325
+ end
326
+
327
+ def customer_url(customer_token)
328
+ "#{customers_url}/#{customer_token}"
329
+ end
330
+ end
Binary file
metadata ADDED
@@ -0,0 +1,196 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: money_mover
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.3
5
+ platform: ruby
6
+ authors:
7
+ - Daniel Errante
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-07-21 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: faraday
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.9'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 0.9.0
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '0.9'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 0.9.0
33
+ - !ruby/object:Gem::Dependency
34
+ name: faraday_middleware
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '0.9'
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 0.9.0
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '0.9'
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 0.9.0
53
+ - !ruby/object:Gem::Dependency
54
+ name: activemodel
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: '4.2'
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: 4.2.6
63
+ type: :runtime
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '4.2'
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: 4.2.6
73
+ - !ruby/object:Gem::Dependency
74
+ name: activesupport
75
+ requirement: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - "~>"
78
+ - !ruby/object:Gem::Version
79
+ version: '4.2'
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: 4.2.6
83
+ type: :runtime
84
+ prerelease: false
85
+ version_requirements: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '4.2'
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ version: 4.2.6
93
+ description: Moves Money with ACH integrations (dwolla, stripe)
94
+ email: danoph@gmail.com
95
+ executables: []
96
+ extensions: []
97
+ extra_rdoc_files: []
98
+ files:
99
+ - ".gitignore"
100
+ - ".rspec"
101
+ - Gemfile
102
+ - Gemfile.lock
103
+ - lib/money_mover.rb
104
+ - lib/money_mover/dwolla.rb
105
+ - lib/money_mover/dwolla/account_client.rb
106
+ - lib/money_mover/dwolla/account_token.rb
107
+ - lib/money_mover/dwolla/api_connection.rb
108
+ - lib/money_mover/dwolla/api_server_response.rb
109
+ - lib/money_mover/dwolla/application_client.rb
110
+ - lib/money_mover/dwolla/application_token.rb
111
+ - lib/money_mover/dwolla/client.rb
112
+ - lib/money_mover/dwolla/config.rb
113
+ - lib/money_mover/dwolla/environment_urls.rb
114
+ - lib/money_mover/dwolla/error_handler.rb
115
+ - lib/money_mover/dwolla/models/account_funding_source.rb
116
+ - lib/money_mover/dwolla/models/api_resource.rb
117
+ - lib/money_mover/dwolla/models/customer.rb
118
+ - lib/money_mover/dwolla/models/document.rb
119
+ - lib/money_mover/dwolla/models/funding_source.rb
120
+ - lib/money_mover/dwolla/models/micro_deposit_initiation.rb
121
+ - lib/money_mover/dwolla/models/micro_deposit_verification.rb
122
+ - lib/money_mover/dwolla/models/receive_only_business_customer.rb
123
+ - lib/money_mover/dwolla/models/receive_only_customer.rb
124
+ - lib/money_mover/dwolla/models/root_account.rb
125
+ - lib/money_mover/dwolla/models/transfer.rb
126
+ - lib/money_mover/dwolla/models/unverified_business_customer.rb
127
+ - lib/money_mover/dwolla/models/unverified_customer.rb
128
+ - lib/money_mover/dwolla/models/verified_business_customer.rb
129
+ - lib/money_mover/dwolla/models/webhook_subscription.rb
130
+ - lib/money_mover/dwolla/token.rb
131
+ - lib/money_mover/standalone_errors.rb
132
+ - lib/money_mover/version.rb
133
+ - money_mover.gemspec
134
+ - spec/integration/money_mover/dwolla/customers/create_spec.rb
135
+ - spec/integration/money_mover/dwolla/customers/find_spec.rb
136
+ - spec/integration/money_mover/dwolla/customers/funding-sources/create_spec.rb
137
+ - spec/integration/money_mover/dwolla/documents/create_spec.rb
138
+ - spec/integration/money_mover/dwolla/funding-sources/micro-deposits/initiation_spec.rb
139
+ - spec/integration/money_mover/dwolla/funding-sources/micro-deposits/verification_spec.rb
140
+ - spec/integration/money_mover/dwolla/transfers/create_spec.rb
141
+ - spec/lib/money_mover/dwolla/client_spec.rb
142
+ - spec/lib/money_mover/dwolla/config_spec.rb
143
+ - spec/lib/money_mover/dwolla/error_handler_spec.rb
144
+ - spec/lib/money_mover/dwolla/funding_source_spec.rb
145
+ - spec/lib/money_mover/dwolla/microdeposits_initiation_spec.rb
146
+ - spec/lib/money_mover/dwolla/root_account_spec.rb
147
+ - spec/lib/money_mover/dwolla/token_spec.rb
148
+ - spec/lib/money_mover/dwolla/transfer_spec.rb
149
+ - spec/lib/money_mover/dwolla/webhook_subscription_spec.rb
150
+ - spec/spec_helper.rb
151
+ - spec/support/dwolla_helper.rb
152
+ - spec/support/fixtures/sample.jpg
153
+ homepage: https://github.com/danoph/money_mover
154
+ licenses:
155
+ - MIT
156
+ metadata: {}
157
+ post_install_message:
158
+ rdoc_options: []
159
+ require_paths:
160
+ - lib
161
+ required_ruby_version: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - ">="
164
+ - !ruby/object:Gem::Version
165
+ version: 1.9.3
166
+ required_rubygems_version: !ruby/object:Gem::Requirement
167
+ requirements:
168
+ - - ">="
169
+ - !ruby/object:Gem::Version
170
+ version: '0'
171
+ requirements: []
172
+ rubyforge_project:
173
+ rubygems_version: 2.5.1
174
+ signing_key:
175
+ specification_version: 4
176
+ summary: Money Mover
177
+ test_files:
178
+ - spec/integration/money_mover/dwolla/customers/create_spec.rb
179
+ - spec/integration/money_mover/dwolla/customers/find_spec.rb
180
+ - spec/integration/money_mover/dwolla/customers/funding-sources/create_spec.rb
181
+ - spec/integration/money_mover/dwolla/documents/create_spec.rb
182
+ - spec/integration/money_mover/dwolla/funding-sources/micro-deposits/initiation_spec.rb
183
+ - spec/integration/money_mover/dwolla/funding-sources/micro-deposits/verification_spec.rb
184
+ - spec/integration/money_mover/dwolla/transfers/create_spec.rb
185
+ - spec/lib/money_mover/dwolla/client_spec.rb
186
+ - spec/lib/money_mover/dwolla/config_spec.rb
187
+ - spec/lib/money_mover/dwolla/error_handler_spec.rb
188
+ - spec/lib/money_mover/dwolla/funding_source_spec.rb
189
+ - spec/lib/money_mover/dwolla/microdeposits_initiation_spec.rb
190
+ - spec/lib/money_mover/dwolla/root_account_spec.rb
191
+ - spec/lib/money_mover/dwolla/token_spec.rb
192
+ - spec/lib/money_mover/dwolla/transfer_spec.rb
193
+ - spec/lib/money_mover/dwolla/webhook_subscription_spec.rb
194
+ - spec/spec_helper.rb
195
+ - spec/support/dwolla_helper.rb
196
+ - spec/support/fixtures/sample.jpg