adyen-ruby-api-library 11.2.0 → 12.0.0

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 (214) hide show
  1. checksums.yaml +4 -4
  2. data/.github/CODEOWNERS +1 -1
  3. data/.github/workflows/codeql.yml +4 -4
  4. data/.github/workflows/release.yml +1 -1
  5. data/.github/workflows/ruby.yml +3 -3
  6. data/.github/workflows/rubygems_release.yml +1 -1
  7. data/.github/workflows/stale.yml +1 -1
  8. data/Gemfile +2 -2
  9. data/README.md +30 -7
  10. data/VERSION +1 -1
  11. data/adyen-ruby-api-library.gemspec +1 -1
  12. data/lib/adyen/client.rb +10 -16
  13. data/lib/adyen/deprecation.rb +34 -0
  14. data/lib/adyen/services/balanceControl/balance_control_api.rb +3 -3
  15. data/lib/adyen/services/balancePlatform/account_holders_api.rb +14 -18
  16. data/lib/adyen/services/balancePlatform/authorized_card_users_api.rb +4 -12
  17. data/lib/adyen/services/balancePlatform/balance_accounts_api.rb +5 -65
  18. data/lib/adyen/services/balancePlatform/balances_api.rb +5 -15
  19. data/lib/adyen/services/balancePlatform/bank_account_validation_api.rb +1 -3
  20. data/lib/adyen/services/balancePlatform/card_orders_api.rb +2 -6
  21. data/lib/adyen/services/balancePlatform/custom_payout_schedules_sweeps_api.rb +56 -0
  22. data/lib/adyen/services/balancePlatform/direct_debit_mandates_api.rb +48 -0
  23. data/lib/adyen/services/balancePlatform/grant_accounts_api.rb +3 -3
  24. data/lib/adyen/services/balancePlatform/grant_offers_api.rb +6 -6
  25. data/lib/adyen/services/balancePlatform/manage_card_pin_api.rb +3 -9
  26. data/lib/adyen/services/balancePlatform/manage_sca_devices_api.rb +6 -18
  27. data/lib/adyen/services/balancePlatform/managed_payout_schedules_api.rb +80 -0
  28. data/lib/adyen/services/balancePlatform/network_tokens_api.rb +2 -6
  29. data/lib/adyen/services/balancePlatform/payment_instrument_groups_api.rb +3 -9
  30. data/lib/adyen/services/balancePlatform/payment_instruments_api.rb +9 -27
  31. data/lib/adyen/services/balancePlatform/platform_api.rb +3 -9
  32. data/lib/adyen/services/balancePlatform/recurring_top_ups_api.rb +48 -0
  33. data/lib/adyen/services/balancePlatform/sca_association_management_api.rb +3 -9
  34. data/lib/adyen/services/balancePlatform/sca_device_management_api.rb +11 -9
  35. data/lib/adyen/services/balancePlatform/transaction_rules_api.rb +4 -12
  36. data/lib/adyen/services/balancePlatform/transfer_limits_balance_account_level_api.rb +6 -18
  37. data/lib/adyen/services/balancePlatform/transfer_limits_balance_platform_level_api.rb +4 -12
  38. data/lib/adyen/services/balancePlatform/transfer_routes_api.rb +1 -3
  39. data/lib/adyen/services/balancePlatform.rb +20 -0
  40. data/lib/adyen/services/binLookup/bin_lookup_api.rb +2 -6
  41. data/lib/adyen/services/capital/dynamic_offers_api.rb +40 -0
  42. data/lib/adyen/services/capital/grant_accounts_api.rb +1 -3
  43. data/lib/adyen/services/capital/grant_offers_api.rb +4 -8
  44. data/lib/adyen/services/capital/grants_api.rb +6 -18
  45. data/lib/adyen/services/capital.rb +5 -0
  46. data/lib/adyen/services/checkout/donations_api.rb +2 -6
  47. data/lib/adyen/services/checkout/modifications_api.rb +6 -18
  48. data/lib/adyen/services/checkout/orders_api.rb +3 -9
  49. data/lib/adyen/services/checkout/payment_links_api.rb +3 -9
  50. data/lib/adyen/services/checkout/payments_api.rb +14 -18
  51. data/lib/adyen/services/checkout/recurring_api.rb +4 -12
  52. data/lib/adyen/services/checkout/utility_api.rb +6 -12
  53. data/lib/adyen/services/checkout.rb +1 -1
  54. data/lib/adyen/services/dataProtection/data_protection_api.rb +1 -3
  55. data/lib/adyen/services/disputes/disputes_api.rb +5 -15
  56. data/lib/adyen/services/legalEntityManagement/business_lines_api.rb +4 -12
  57. data/lib/adyen/services/legalEntityManagement/documents_api.rb +4 -12
  58. data/lib/adyen/services/legalEntityManagement/hosted_onboarding_api.rb +3 -9
  59. data/lib/adyen/services/legalEntityManagement/legal_entities_api.rb +7 -21
  60. data/lib/adyen/services/legalEntityManagement/pci_questionnaires_api.rb +5 -15
  61. data/lib/adyen/services/legalEntityManagement/tax_e_delivery_consent_api.rb +2 -6
  62. data/lib/adyen/services/legalEntityManagement/terms_of_service_api.rb +5 -15
  63. data/lib/adyen/services/legalEntityManagement/transfer_instruments_api.rb +4 -12
  64. data/lib/adyen/services/management/account_company_level_api.rb +3 -9
  65. data/lib/adyen/services/management/account_merchant_level_api.rb +4 -12
  66. data/lib/adyen/services/management/account_store_level_api.rb +8 -24
  67. data/lib/adyen/services/management/allowed_origins_company_level_api.rb +4 -12
  68. data/lib/adyen/services/management/allowed_origins_merchant_level_api.rb +4 -12
  69. data/lib/adyen/services/management/android_files_company_level_api.rb +6 -18
  70. data/lib/adyen/services/management/api_credentials_company_level_api.rb +4 -12
  71. data/lib/adyen/services/management/api_credentials_merchant_level_api.rb +4 -12
  72. data/lib/adyen/services/management/api_key_company_level_api.rb +1 -3
  73. data/lib/adyen/services/management/api_key_merchant_level_api.rb +1 -3
  74. data/lib/adyen/services/management/client_key_company_level_api.rb +1 -3
  75. data/lib/adyen/services/management/client_key_merchant_level_api.rb +1 -3
  76. data/lib/adyen/services/management/donation_campaigns_api.rb +64 -0
  77. data/lib/adyen/services/management/my_api_credential_api.rb +6 -18
  78. data/lib/adyen/services/management/payment_methods_merchant_level_api.rb +6 -18
  79. data/lib/adyen/services/management/payout_settings_merchant_level_api.rb +5 -15
  80. data/lib/adyen/services/management/split_configuration_merchant_level_api.rb +9 -27
  81. data/lib/adyen/services/management/terminal_actions_company_level_api.rb +2 -6
  82. data/lib/adyen/services/management/terminal_actions_terminal_level_api.rb +1 -3
  83. data/lib/adyen/services/management/terminal_orders_company_level_api.rb +10 -30
  84. data/lib/adyen/services/management/terminal_orders_merchant_level_api.rb +10 -30
  85. data/lib/adyen/services/management/terminal_settings_company_level_api.rb +4 -12
  86. data/lib/adyen/services/management/terminal_settings_merchant_level_api.rb +4 -12
  87. data/lib/adyen/services/management/terminal_settings_store_level_api.rb +8 -24
  88. data/lib/adyen/services/management/terminal_settings_terminal_level_api.rb +4 -12
  89. data/lib/adyen/services/management/terminals_terminal_level_api.rb +2 -6
  90. data/lib/adyen/services/management/users_company_level_api.rb +4 -12
  91. data/lib/adyen/services/management/users_merchant_level_api.rb +4 -12
  92. data/lib/adyen/services/management/webhooks_company_level_api.rb +7 -21
  93. data/lib/adyen/services/management/webhooks_merchant_level_api.rb +7 -21
  94. data/lib/adyen/services/management.rb +5 -0
  95. data/lib/adyen/services/payment/modifications_api.rb +10 -24
  96. data/lib/adyen/services/payment/payments_api.rb +5 -15
  97. data/lib/adyen/services/paymentsApp/payments_app_api.rb +5 -15
  98. data/lib/adyen/services/payout/initialization_api.rb +3 -9
  99. data/lib/adyen/services/payout/instant_payouts_api.rb +1 -3
  100. data/lib/adyen/services/payout/reviewing_api.rb +2 -6
  101. data/lib/adyen/services/posMobile/pos_mobile_api.rb +6 -3
  102. data/lib/adyen/services/posTerminalManagement.rb +10 -0
  103. data/lib/adyen/services/recurring/recurring_api.rb +10 -18
  104. data/lib/adyen/services/service.rb +12 -2
  105. data/lib/adyen/services/sessionAuthentication/session_authentication_api.rb +1 -3
  106. data/lib/adyen/services/storedValue/stored_value_api.rb +6 -18
  107. data/lib/adyen/services/transfers/capital_api.rb +9 -9
  108. data/lib/adyen/services/transfers/cash_out_api.rb +24 -0
  109. data/lib/adyen/services/transfers/transactions_api.rb +2 -6
  110. data/lib/adyen/services/transfers/transfers_api.rb +6 -18
  111. data/lib/adyen/services/transfers.rb +5 -0
  112. data/lib/adyen/utils/hmac_validator.rb +15 -18
  113. data/lib/adyen/version.rb +1 -1
  114. data/sdk-generation-log/balancecontrol.json +8 -0
  115. data/sdk-generation-log/balanceplatform.json +8 -0
  116. data/sdk-generation-log/binlookup.json +8 -0
  117. data/sdk-generation-log/capital.json +8 -0
  118. data/sdk-generation-log/checkout.json +8 -0
  119. data/sdk-generation-log/dataprotection.json +8 -0
  120. data/sdk-generation-log/disputes.json +8 -0
  121. data/sdk-generation-log/legalentitymanagement.json +8 -0
  122. data/sdk-generation-log/management.json +8 -0
  123. data/sdk-generation-log/payment.json +8 -0
  124. data/sdk-generation-log/paymentsapp.json +8 -0
  125. data/sdk-generation-log/payout.json +8 -0
  126. data/sdk-generation-log/posmobile.json +8 -0
  127. data/sdk-generation-log/recurring.json +8 -0
  128. data/sdk-generation-log/sessionauthentication.json +8 -0
  129. data/sdk-generation-log/storedvalue.json +8 -0
  130. data/sdk-generation-log/transfers.json +8 -0
  131. data/spec/balance_control_spec.rb +41 -0
  132. data/spec/balance_platform_spec.rb +609 -4
  133. data/spec/capital_spec.rb +82 -0
  134. data/spec/checkout-oauth_spec.rb +220 -10
  135. data/spec/checkout_spec.rb +245 -10
  136. data/spec/client_spec.rb +23 -5
  137. data/spec/deprecation_spec.rb +112 -0
  138. data/spec/management_spec.rb +184 -0
  139. data/spec/mocks/requests/BalancePlatform/apply_managed_schedule.json +14 -0
  140. data/spec/mocks/requests/BalancePlatform/begin_sca_device_registration.json +4 -0
  141. data/spec/mocks/requests/BalancePlatform/create_recurring_top_up.json +21 -0
  142. data/spec/mocks/requests/BalancePlatform/create_sweep.json +10 -0
  143. data/spec/mocks/requests/BalancePlatform/finish_sca_device_registration.json +3 -0
  144. data/spec/mocks/requests/BalancePlatform/submit_sca_association.json +8 -0
  145. data/spec/mocks/requests/BalancePlatform/update_balance_account_managed_schedule.json +5 -0
  146. data/spec/mocks/requests/BalancePlatform/update_mandate.json +14 -0
  147. data/spec/mocks/requests/BalancePlatform/update_recurring_top_ups.json +3 -0
  148. data/spec/mocks/requests/BalancePlatform/update_sweep.json +6 -0
  149. data/spec/mocks/requests/Checkout/amount_updates.json +1 -1
  150. data/spec/mocks/requests/Checkout/card_details.json +3 -0
  151. data/spec/mocks/requests/Checkout/create_stored_payment_method.json +10 -0
  152. data/spec/mocks/requests/Checkout/donation_campaigns.json +4 -0
  153. data/spec/mocks/requests/Checkout/donations.json +9 -0
  154. data/spec/mocks/requests/Checkout/orders.json +5 -3
  155. data/spec/mocks/requests/Checkout/payment-details.json +2 -14
  156. data/spec/mocks/requests/Checkout/payment_methods_balance.json +5 -2
  157. data/spec/mocks/requests/Checkout/payments.json +9 -10
  158. data/spec/mocks/requests/Checkout/paypal_update_order.json +5 -0
  159. data/spec/mocks/requests/Checkout/reversals.json +3 -0
  160. data/spec/mocks/requests/Checkout/update_session.json +7 -0
  161. data/spec/mocks/requests/Management/create_donation_campaign.json +7 -0
  162. data/spec/mocks/requests/Management/list_nonprofits.json +5 -0
  163. data/spec/mocks/requests/Management/update_donation_campaign.json +6 -0
  164. data/spec/mocks/requests/Transfers/initiate_cashout.json +12 -0
  165. data/spec/mocks/responses/BalancePlatform/apply_managed_schedule.json +17 -0
  166. data/spec/mocks/responses/BalancePlatform/begin_sca_device_registration.json +8 -0
  167. data/spec/mocks/responses/BalancePlatform/create_recurring_top_up.json +23 -0
  168. data/spec/mocks/responses/BalancePlatform/create_sweep.json +12 -0
  169. data/spec/mocks/responses/BalancePlatform/finish_sca_device_registration.json +7 -0
  170. data/spec/mocks/responses/BalancePlatform/get_all_sweeps_for_balance_account.json +31 -0
  171. data/spec/mocks/responses/BalancePlatform/get_balance_account_managed_schedule_by_id.json +17 -0
  172. data/spec/mocks/responses/BalancePlatform/get_balance_account_managed_schedules.json +26 -0
  173. data/spec/mocks/responses/BalancePlatform/get_balance_platform_managed_schedule_by_id.json +27 -0
  174. data/spec/mocks/responses/BalancePlatform/get_balance_platform_managed_schedules.json +31 -0
  175. data/spec/mocks/responses/BalancePlatform/get_list_of_mandates.json +19 -0
  176. data/spec/mocks/responses/BalancePlatform/get_mandate_by_id.json +14 -0
  177. data/spec/mocks/responses/BalancePlatform/get_payout_schedule_executions.json +21 -0
  178. data/spec/mocks/responses/BalancePlatform/get_recurring_top_ups.json +35 -0
  179. data/spec/mocks/responses/BalancePlatform/get_sweep.json +12 -0
  180. data/spec/mocks/responses/BalancePlatform/get_tax_form_summary.json +17 -0
  181. data/spec/mocks/responses/BalancePlatform/submit_sca_association.json +10 -0
  182. data/spec/mocks/responses/BalancePlatform/update_balance_account_managed_schedule.json +18 -0
  183. data/spec/mocks/responses/BalancePlatform/update_recurring_top_ups.json +23 -0
  184. data/spec/mocks/responses/BalancePlatform/update_sweep.json +12 -0
  185. data/spec/mocks/responses/Capital/calculate-preliminary-offer-from-dynamic-offer.json +16 -0
  186. data/spec/mocks/responses/Capital/create-static-offer-from-dynamic-offer.json +9 -0
  187. data/spec/mocks/responses/Capital/get-all-dynamic-offers.json +18 -0
  188. data/spec/mocks/responses/Checkout/amount_updates.json +1 -1
  189. data/spec/mocks/responses/Checkout/card_details.json +5 -0
  190. data/spec/mocks/responses/Checkout/create_stored_payment_method.json +5 -0
  191. data/spec/mocks/responses/Checkout/donation_campaigns.json +1 -0
  192. data/spec/mocks/responses/Checkout/donations.json +5 -0
  193. data/spec/mocks/responses/Checkout/orders.json +6 -1
  194. data/spec/mocks/responses/Checkout/orders_cancel.json +1 -1
  195. data/spec/mocks/responses/Checkout/payment-details.json +2 -13
  196. data/spec/mocks/responses/Checkout/payment_links.json +3 -0
  197. data/spec/mocks/responses/Checkout/payment_methods.json +2 -2
  198. data/spec/mocks/responses/Checkout/payment_methods_balance.json +5 -1
  199. data/spec/mocks/responses/Checkout/payments.json +4 -94
  200. data/spec/mocks/responses/Checkout/paypal_update_order.json +4 -0
  201. data/spec/mocks/responses/Checkout/reversals.json +6 -0
  202. data/spec/mocks/responses/Checkout/update_session.json +3 -0
  203. data/spec/mocks/responses/Management/donation_campaign.json +13 -0
  204. data/spec/mocks/responses/Management/list_donation_campaigns.json +19 -0
  205. data/spec/mocks/responses/Management/list_nonprofits.json +34 -0
  206. data/spec/mocks/responses/Transfers/initiate_cashout.json +31 -0
  207. data/spec/service_spec.rb +40 -0
  208. data/spec/spec_helper.rb +2 -2
  209. data/spec/transfers_spec.rb +28 -0
  210. data/spec/utils/consumer_smoke.rb +23 -0
  211. data/spec/utils/hmac_validator_spec.rb +55 -0
  212. data/templates/api-small.mustache +4 -4
  213. data/templates/api.mustache +4 -4
  214. metadata +84 -2
@@ -2,6 +2,8 @@ require 'spec_helper'
2
2
  require 'json'
3
3
 
4
4
  RSpec.describe Adyen::BalancePlatform, service: 'balancePlatform' do
5
+ SWEEPS_ENDPOINT = 'balanceAccounts/balanceAccountID/sweeps/sweepID'
6
+
5
7
  before(:all) do
6
8
  @shared_values = {
7
9
  client: create_client(:api_key),
@@ -88,17 +90,112 @@ RSpec.describe Adyen::BalancePlatform, service: 'balancePlatform' do
88
90
  it 'makes a balance_account/sweeps DELETE call' do
89
91
  url = @shared_values[:client].service_url(
90
92
  @shared_values[:service],
91
- 'balanceAccounts/balanceAccountID/sweeps/sweepID',
93
+ SWEEPS_ENDPOINT,
92
94
  @shared_values[:client].balance_platform.version
93
95
  )
94
96
  WebMock.stub_request(:delete, url)
95
97
  .with(headers: { 'x-api-key' => @shared_values[:client].api_key })
96
- .to_return(body: '{}')
98
+ .to_return(status: 204, body: '')
99
+
100
+ result = @shared_values[:client].balance_platform.custom_payout_schedules_sweeps_api.delete_sweep('balanceAccountID', 'sweepID')
101
+
102
+ expect(result.status).to eq(204)
103
+ end
104
+
105
+ it 'makes a create_sweep POST call' do
106
+ request_body = JSON.parse(json_from_file('mocks/requests/BalancePlatform/create_sweep.json'))
107
+ response_body = json_from_file('mocks/responses/BalancePlatform/create_sweep.json')
108
+
109
+ url = @shared_values[:client].service_url(
110
+ @shared_values[:service],
111
+ 'balanceAccounts/balanceAccountID/sweeps',
112
+ @shared_values[:client].balance_platform.version
113
+ )
114
+ WebMock.stub_request(:post, url)
115
+ .with(
116
+ body: request_body,
117
+ headers: { 'x-api-key' => @shared_values[:client].api_key }
118
+ )
119
+ .to_return(body: response_body)
120
+
121
+ result = @shared_values[:client].balance_platform.custom_payout_schedules_sweeps_api.create_sweep(request_body, 'balanceAccountID')
122
+ response_hash = result.response
123
+
124
+ expect(result.status).to eq(200)
125
+ expect(response_hash).to eq(JSON.parse(response_body))
126
+ expect(response_hash).to be_a Adyen::HashWithAccessors
127
+ expect(response_hash).to be_a_kind_of Hash
128
+ end
129
+
130
+ it 'makes a get_all_sweeps_for_balance_account GET call' do
131
+ response_body = json_from_file('mocks/responses/BalancePlatform/get_all_sweeps_for_balance_account.json')
132
+
133
+ url = @shared_values[:client].service_url(
134
+ @shared_values[:service],
135
+ 'balanceAccounts/balanceAccountID/sweeps',
136
+ @shared_values[:client].balance_platform.version
137
+ )
138
+ WebMock.stub_request(:get, url)
139
+ .with(
140
+ query: { 'limit' => 5, 'offset' => 10 },
141
+ headers: { 'x-api-key' => @shared_values[:client].api_key }
142
+ )
143
+ .to_return(body: response_body)
144
+
145
+ result = @shared_values[:client].balance_platform.custom_payout_schedules_sweeps_api
146
+ .get_all_sweeps_for_balance_account('balanceAccountID', query_params: { 'limit' => 5, 'offset' => 10 })
147
+ response_hash = result.response
148
+
149
+ expect(result.status).to eq(200)
150
+ expect(response_hash).to eq(JSON.parse(response_body))
151
+ expect(response_hash).to be_a Adyen::HashWithAccessors
152
+ expect(response_hash).to be_a_kind_of Hash
153
+ end
154
+
155
+ it 'makes a get_sweep GET call' do
156
+ response_body = json_from_file('mocks/responses/BalancePlatform/get_sweep.json')
157
+
158
+ url = @shared_values[:client].service_url(
159
+ @shared_values[:service],
160
+ SWEEPS_ENDPOINT,
161
+ @shared_values[:client].balance_platform.version
162
+ )
163
+ WebMock.stub_request(:get, url)
164
+ .with(headers: { 'x-api-key' => @shared_values[:client].api_key })
165
+ .to_return(body: response_body)
166
+
167
+ result = @shared_values[:client].balance_platform.custom_payout_schedules_sweeps_api.get_sweep('balanceAccountID', 'sweepID')
168
+ response_hash = result.response
97
169
 
98
- result = @shared_values[:client].balance_platform.balance_accounts_api.delete_sweep('balanceAccountID', 'sweepID')
99
- result.response
170
+ expect(result.status).to eq(200)
171
+ expect(response_hash).to eq(JSON.parse(response_body))
172
+ expect(response_hash).to be_a Adyen::HashWithAccessors
173
+ expect(response_hash).to be_a_kind_of Hash
174
+ end
175
+
176
+ it 'makes an update_sweep PATCH call' do
177
+ request_body = JSON.parse(json_from_file('mocks/requests/BalancePlatform/update_sweep.json'))
178
+ response_body = json_from_file('mocks/responses/BalancePlatform/update_sweep.json')
179
+
180
+ url = @shared_values[:client].service_url(
181
+ @shared_values[:service],
182
+ SWEEPS_ENDPOINT,
183
+ @shared_values[:client].balance_platform.version
184
+ )
185
+ WebMock.stub_request(:patch, url)
186
+ .with(
187
+ body: request_body,
188
+ headers: { 'x-api-key' => @shared_values[:client].api_key }
189
+ )
190
+ .to_return(body: response_body)
191
+
192
+ result = @shared_values[:client].balance_platform.custom_payout_schedules_sweeps_api.update_sweep(request_body, 'balanceAccountID', 'sweepID')
193
+ response_hash = result.response
100
194
 
101
195
  expect(result.status).to eq(200)
196
+ expect(response_hash).to eq(JSON.parse(response_body))
197
+ expect(response_hash).to be_a Adyen::HashWithAccessors
198
+ expect(response_hash).to be_a_kind_of Hash
102
199
  end
103
200
 
104
201
  ## balancePlatform level transferLimits
@@ -384,6 +481,117 @@ RSpec.describe Adyen::BalancePlatform, service: 'balancePlatform' do
384
481
  expect(response_hash).to be_a_kind_of Hash
385
482
  end
386
483
 
484
+ it 'makes a get_tax_form_summary GET call' do
485
+ response_body = json_from_file('mocks/responses/BalancePlatform/get_tax_form_summary.json')
486
+ account_holder_id = 'AH3227C223222C5GKR23686TF'
487
+
488
+ url = @shared_values[:client].service_url(
489
+ @shared_values[:service],
490
+ "accountHolders/#{account_holder_id}/taxFormSummary",
491
+ @shared_values[:client].balance_platform.version
492
+ )
493
+ WebMock.stub_request(:get, url)
494
+ .with(headers: { 'x-api-key' => @shared_values[:client].api_key })
495
+ .to_return(body: response_body)
496
+
497
+ result = @shared_values[:client].balance_platform.account_holders_api
498
+ .get_tax_form_summary(account_holder_id)
499
+ response_hash = result.response
500
+
501
+ expect(result.status).to eq(200)
502
+ expect(response_hash).to eq(JSON.parse(response_body))
503
+ expect(response_hash).to be_a Adyen::HashWithAccessors
504
+ expect(response_hash).to be_a_kind_of Hash
505
+ end
506
+
507
+ ## directDebitMandates
508
+ it 'makes a get_list_of_mandates GET call' do
509
+ response_body = json_from_file('mocks/responses/BalancePlatform/get_list_of_mandates.json')
510
+
511
+ url = @shared_values[:client].service_url(
512
+ @shared_values[:service],
513
+ 'mandates',
514
+ @shared_values[:client].balance_platform.version
515
+ )
516
+ WebMock.stub_request(:get, url)
517
+ .with(headers: { 'x-api-key' => @shared_values[:client].api_key })
518
+ .to_return(body: response_body)
519
+
520
+ result = @shared_values[:client].balance_platform.direct_debit_mandates_api.get_list_of_mandates
521
+ response_hash = result.response
522
+
523
+ expect(result.status).to eq(200)
524
+ expect(response_hash).to eq(JSON.parse(response_body))
525
+ expect(response_hash).to be_a Adyen::HashWithAccessors
526
+ expect(response_hash).to be_a_kind_of Hash
527
+ end
528
+
529
+ it 'makes a get_mandate_by_id GET call' do
530
+ response_body = json_from_file('mocks/responses/BalancePlatform/get_mandate_by_id.json')
531
+ mandate_id = 'MNDT7QXPLKT9R333640TX334709E'
532
+
533
+ url = @shared_values[:client].service_url(
534
+ @shared_values[:service],
535
+ "mandates/#{mandate_id}",
536
+ @shared_values[:client].balance_platform.version
537
+ )
538
+ WebMock.stub_request(:get, url)
539
+ .with(headers: { 'x-api-key' => @shared_values[:client].api_key })
540
+ .to_return(body: response_body)
541
+
542
+ result = @shared_values[:client].balance_platform.direct_debit_mandates_api.get_mandate_by_id(mandate_id)
543
+ response_hash = result.response
544
+
545
+ expect(result.status).to eq(200)
546
+ expect(response_hash).to eq(JSON.parse(response_body))
547
+ expect(response_hash).to be_a Adyen::HashWithAccessors
548
+ expect(response_hash).to be_a_kind_of Hash
549
+ end
550
+
551
+ it 'makes a cancel_mandate POST call' do
552
+ mandate_id = 'MNDT7QXPLKT9R333640TX334709E'
553
+
554
+ url = @shared_values[:client].service_url(
555
+ @shared_values[:service],
556
+ "mandates/#{mandate_id}/cancel",
557
+ @shared_values[:client].balance_platform.version
558
+ )
559
+ WebMock.stub_request(:post, url)
560
+ .with(headers: { 'x-api-key' => @shared_values[:client].api_key })
561
+ .to_return(status: 202, body: '')
562
+
563
+ result = @shared_values[:client].balance_platform.direct_debit_mandates_api.cancel_mandate(mandate_id)
564
+
565
+ expect(result.status).to eq(202)
566
+ end
567
+
568
+ it 'makes an update_mandate PATCH call' do
569
+ request_body = JSON.parse(json_from_file('mocks/requests/BalancePlatform/update_mandate.json'))
570
+ response_body = json_from_file('mocks/responses/BalancePlatform/get_mandate_by_id.json')
571
+ mandate_id = 'MNDT7QXPLKT9R333640TX334709E'
572
+
573
+ url = @shared_values[:client].service_url(
574
+ @shared_values[:service],
575
+ "mandates/#{mandate_id}",
576
+ @shared_values[:client].balance_platform.version
577
+ )
578
+ WebMock.stub_request(:patch, url)
579
+ .with(
580
+ body: request_body,
581
+ headers: { 'x-api-key' => @shared_values[:client].api_key }
582
+ )
583
+ .to_return(body: response_body)
584
+
585
+ result = @shared_values[:client].balance_platform.direct_debit_mandates_api
586
+ .update_mandate(request_body, mandate_id)
587
+ response_hash = result.response
588
+
589
+ expect(result.status).to eq(200)
590
+ expect(response_hash).to eq(JSON.parse(response_body))
591
+ expect(response_hash).to be_a Adyen::HashWithAccessors
592
+ expect(response_hash).to be_a_kind_of Hash
593
+ end
594
+
387
595
  ## authorisedCardUsers
388
596
  it 'makes a get_all_authorised_card_users GET call' do
389
597
  response_body = json_from_file('mocks/responses/BalancePlatform/get_all_authorised_card_users.json')
@@ -407,4 +615,401 @@ RSpec.describe Adyen::BalancePlatform, service: 'balancePlatform' do
407
615
  expect(response_hash).to be_a Adyen::HashWithAccessors
408
616
  expect(response_hash).to be_a_kind_of Hash
409
617
  end
618
+
619
+ ## managed payout schedules
620
+ it 'makes an apply_managed_schedule POST call' do
621
+ request_body = JSON.parse(json_from_file('mocks/requests/BalancePlatform/apply_managed_schedule.json'))
622
+ response_body = json_from_file('mocks/responses/BalancePlatform/apply_managed_schedule.json')
623
+ balance_account_id = 'YOUR_BALANCE_ACCOUNT_ID'
624
+
625
+ url = @shared_values[:client].service_url(
626
+ @shared_values[:service],
627
+ "balanceAccounts/#{balance_account_id}/payoutSchedules",
628
+ @shared_values[:client].balance_platform.version
629
+ )
630
+ WebMock.stub_request(:post, url)
631
+ .with(
632
+ body: request_body,
633
+ headers: { 'x-api-key' => @shared_values[:client].api_key }
634
+ )
635
+ .to_return(body: response_body)
636
+
637
+ result = @shared_values[:client].balance_platform.managed_payout_schedules_api
638
+ .apply_managed_schedule(request_body, balance_account_id)
639
+ response_hash = result.response
640
+
641
+ expect(result.status).to eq(200)
642
+ expect(response_hash).to eq(JSON.parse(response_body))
643
+ expect(response_hash).to be_a Adyen::HashWithAccessors
644
+ expect(response_hash).to be_a_kind_of Hash
645
+ end
646
+
647
+ it 'makes a get_balance_account_managed_schedules GET call' do
648
+ response_body = json_from_file('mocks/responses/BalancePlatform/get_balance_account_managed_schedules.json')
649
+ balance_account_id = 'YOUR_BALANCE_ACCOUNT_ID'
650
+
651
+ url = @shared_values[:client].service_url(
652
+ @shared_values[:service],
653
+ "balanceAccounts/#{balance_account_id}/payoutSchedules",
654
+ @shared_values[:client].balance_platform.version
655
+ )
656
+ WebMock.stub_request(:get, url)
657
+ .with(headers: { 'x-api-key' => @shared_values[:client].api_key })
658
+ .to_return(body: response_body)
659
+
660
+ result = @shared_values[:client].balance_platform.managed_payout_schedules_api
661
+ .get_balance_account_managed_schedules(balance_account_id)
662
+ response_hash = result.response
663
+
664
+ expect(result.status).to eq(200)
665
+ expect(response_hash).to eq(JSON.parse(response_body))
666
+ expect(response_hash).to be_a Adyen::HashWithAccessors
667
+ expect(response_hash).to be_a_kind_of Hash
668
+ end
669
+
670
+ it 'makes a get_balance_account_managed_schedule_by_id GET call' do
671
+ response_body = json_from_file('mocks/responses/BalancePlatform/get_balance_account_managed_schedule_by_id.json')
672
+ balance_account_id = 'YOUR_BALANCE_ACCOUNT_ID'
673
+ payout_schedule_id = 'PSAC00000000000000000000000001'
674
+
675
+ url = @shared_values[:client].service_url(
676
+ @shared_values[:service],
677
+ "balanceAccounts/#{balance_account_id}/payoutSchedules/#{payout_schedule_id}",
678
+ @shared_values[:client].balance_platform.version
679
+ )
680
+ WebMock.stub_request(:get, url)
681
+ .with(headers: { 'x-api-key' => @shared_values[:client].api_key })
682
+ .to_return(body: response_body)
683
+
684
+ result = @shared_values[:client].balance_platform.managed_payout_schedules_api
685
+ .get_balance_account_managed_schedule_by_id(balance_account_id, payout_schedule_id)
686
+ response_hash = result.response
687
+
688
+ expect(result.status).to eq(200)
689
+ expect(response_hash).to eq(JSON.parse(response_body))
690
+ expect(response_hash).to be_a Adyen::HashWithAccessors
691
+ expect(response_hash).to be_a_kind_of Hash
692
+ end
693
+
694
+ it 'makes an update_balance_account_managed_schedule PATCH call' do
695
+ request_body = JSON.parse(json_from_file('mocks/requests/BalancePlatform/update_balance_account_managed_schedule.json'))
696
+ response_body = json_from_file('mocks/responses/BalancePlatform/update_balance_account_managed_schedule.json')
697
+ balance_account_id = 'YOUR_BALANCE_ACCOUNT_ID'
698
+ payout_schedule_id = 'PSAC00000000000000000000000001'
699
+
700
+ url = @shared_values[:client].service_url(
701
+ @shared_values[:service],
702
+ "balanceAccounts/#{balance_account_id}/payoutSchedules/#{payout_schedule_id}",
703
+ @shared_values[:client].balance_platform.version
704
+ )
705
+ WebMock.stub_request(:patch, url)
706
+ .with(
707
+ body: request_body,
708
+ headers: { 'x-api-key' => @shared_values[:client].api_key }
709
+ )
710
+ .to_return(body: response_body)
711
+
712
+ result = @shared_values[:client].balance_platform.managed_payout_schedules_api
713
+ .update_balance_account_managed_schedule(request_body, balance_account_id, payout_schedule_id)
714
+ response_hash = result.response
715
+
716
+ expect(result.status).to eq(200)
717
+ expect(response_hash).to eq(JSON.parse(response_body))
718
+ expect(response_hash).to be_a Adyen::HashWithAccessors
719
+ expect(response_hash).to be_a_kind_of Hash
720
+ end
721
+
722
+ it 'makes a delete_balance_account_managed_schedule DELETE call' do
723
+ balance_account_id = 'YOUR_BALANCE_ACCOUNT_ID'
724
+ payout_schedule_id = 'PSAC00000000000000000000000001'
725
+
726
+ url = @shared_values[:client].service_url(
727
+ @shared_values[:service],
728
+ "balanceAccounts/#{balance_account_id}/payoutSchedules/#{payout_schedule_id}",
729
+ @shared_values[:client].balance_platform.version
730
+ )
731
+ WebMock.stub_request(:delete, url)
732
+ .with(headers: { 'x-api-key' => @shared_values[:client].api_key })
733
+ .to_return(status: 204, body: '')
734
+
735
+ result = @shared_values[:client].balance_platform.managed_payout_schedules_api
736
+ .delete_balance_account_managed_schedule(balance_account_id, payout_schedule_id)
737
+
738
+ expect(result.status).to eq(204)
739
+ end
740
+
741
+ it 'makes a get_payout_schedule_executions GET call' do
742
+ response_body = json_from_file('mocks/responses/BalancePlatform/get_payout_schedule_executions.json')
743
+ balance_account_id = 'YOUR_BALANCE_ACCOUNT_ID'
744
+ payout_schedule_id = 'PSAC00000000000000000000000001'
745
+
746
+ url = @shared_values[:client].service_url(
747
+ @shared_values[:service],
748
+ "balanceAccounts/#{balance_account_id}/payoutSchedules/#{payout_schedule_id}/executions",
749
+ @shared_values[:client].balance_platform.version
750
+ )
751
+ WebMock.stub_request(:get, url)
752
+ .with(
753
+ query: { 'results' => 'succeeded,failed', 'offset' => 0 },
754
+ headers: { 'x-api-key' => @shared_values[:client].api_key }
755
+ )
756
+ .to_return(body: response_body)
757
+
758
+ result = @shared_values[:client].balance_platform.managed_payout_schedules_api
759
+ .get_payout_schedule_executions(
760
+ balance_account_id,
761
+ payout_schedule_id,
762
+ query_params: { 'results' => 'succeeded,failed', 'offset' => 0 }
763
+ )
764
+ response_hash = result.response
765
+
766
+ expect(result.status).to eq(200)
767
+ expect(response_hash).to eq(JSON.parse(response_body))
768
+ expect(response_hash).to be_a Adyen::HashWithAccessors
769
+ expect(response_hash).to be_a_kind_of Hash
770
+ end
771
+
772
+ it 'makes a get_balance_platform_managed_schedules GET call' do
773
+ response_body = json_from_file('mocks/responses/BalancePlatform/get_balance_platform_managed_schedules.json')
774
+ balance_platform_id = 'YOUR_BALANCE_PLATFORM_ID'
775
+
776
+ url = @shared_values[:client].service_url(
777
+ @shared_values[:service],
778
+ "balancePlatforms/#{balance_platform_id}/payoutSchedules",
779
+ @shared_values[:client].balance_platform.version
780
+ )
781
+ WebMock.stub_request(:get, url)
782
+ .with(headers: { 'x-api-key' => @shared_values[:client].api_key })
783
+ .to_return(body: response_body)
784
+
785
+ result = @shared_values[:client].balance_platform.managed_payout_schedules_api
786
+ .get_balance_platform_managed_schedules(balance_platform_id)
787
+ response_hash = result.response
788
+
789
+ expect(result.status).to eq(200)
790
+ expect(response_hash).to eq(JSON.parse(response_body))
791
+ expect(response_hash).to be_a Adyen::HashWithAccessors
792
+ expect(response_hash).to be_a_kind_of Hash
793
+ end
794
+
795
+ it 'makes a get_balance_platform_managed_schedule_by_id GET call' do
796
+ response_body = json_from_file('mocks/responses/BalancePlatform/get_balance_platform_managed_schedule_by_id.json')
797
+ balance_platform_id = 'YOUR_BALANCE_PLATFORM_ID'
798
+ payout_schedule_id = 'PSPC00000000000000000000000001'
799
+
800
+ url = @shared_values[:client].service_url(
801
+ @shared_values[:service],
802
+ "balancePlatforms/#{balance_platform_id}/payoutSchedules/#{payout_schedule_id}",
803
+ @shared_values[:client].balance_platform.version
804
+ )
805
+ WebMock.stub_request(:get, url)
806
+ .with(headers: { 'x-api-key' => @shared_values[:client].api_key })
807
+ .to_return(body: response_body)
808
+
809
+ result = @shared_values[:client].balance_platform.managed_payout_schedules_api
810
+ .get_balance_platform_managed_schedule_by_id(balance_platform_id, payout_schedule_id)
811
+ response_hash = result.response
812
+
813
+ expect(result.status).to eq(200)
814
+ expect(response_hash).to eq(JSON.parse(response_body))
815
+ expect(response_hash).to be_a Adyen::HashWithAccessors
816
+ expect(response_hash).to be_a_kind_of Hash
817
+ end
818
+
819
+ ## recurringTopUps
820
+ it 'makes a create_recurring_top_up POST call' do
821
+ request_body = JSON.parse(json_from_file('mocks/requests/BalancePlatform/create_recurring_top_up.json'))
822
+ response_body = json_from_file('mocks/responses/BalancePlatform/create_recurring_top_up.json')
823
+ balance_account_id = 'BA3227C223222B5BLP6JQC3FD'
824
+
825
+ url = @shared_values[:client].service_url(
826
+ @shared_values[:service],
827
+ "balanceAccounts/#{balance_account_id}/recurringTopUps",
828
+ @shared_values[:client].balance_platform.version
829
+ )
830
+ WebMock.stub_request(:post, url)
831
+ .with(
832
+ body: request_body,
833
+ headers: { 'x-api-key' => @shared_values[:client].api_key }
834
+ )
835
+ .to_return(body: response_body)
836
+
837
+ result = @shared_values[:client].balance_platform.recurring_top_ups_api
838
+ .create_recurring_top_up(request_body, balance_account_id)
839
+ response_hash = result.response
840
+
841
+ expect(result.status).to eq(200)
842
+ expect(response_hash).to eq(JSON.parse(response_body))
843
+ expect(response_hash).to be_a Adyen::HashWithAccessors
844
+ expect(response_hash).to be_a_kind_of Hash
845
+ end
846
+
847
+ it 'makes a get_recurring_top_ups GET call' do
848
+ response_body = json_from_file('mocks/responses/BalancePlatform/get_recurring_top_ups.json')
849
+ balance_account_id = 'BA3227C223222B5BLP6JQC3FD'
850
+
851
+ url = @shared_values[:client].service_url(
852
+ @shared_values[:service],
853
+ "balanceAccounts/#{balance_account_id}/recurringTopUps",
854
+ @shared_values[:client].balance_platform.version
855
+ )
856
+ WebMock.stub_request(:get, url)
857
+ .with(headers: { 'x-api-key' => @shared_values[:client].api_key })
858
+ .to_return(body: response_body)
859
+
860
+ result = @shared_values[:client].balance_platform.recurring_top_ups_api
861
+ .get_recurring_top_ups(balance_account_id)
862
+ response_hash = result.response
863
+
864
+ expect(result.status).to eq(200)
865
+ expect(response_hash).to eq(JSON.parse(response_body))
866
+ expect(response_hash).to be_a Adyen::HashWithAccessors
867
+ expect(response_hash).to be_a_kind_of Hash
868
+ end
869
+
870
+ it 'makes an update_recurring_top_ups PATCH call' do
871
+ request_body = JSON.parse(json_from_file('mocks/requests/BalancePlatform/update_recurring_top_ups.json'))
872
+ response_body = json_from_file('mocks/responses/BalancePlatform/update_recurring_top_ups.json')
873
+ balance_account_id = 'BA3227C223222B5BLP6JQC3FD'
874
+ top_up_id = 'TUPC0000000000000000000001'
875
+
876
+ url = @shared_values[:client].service_url(
877
+ @shared_values[:service],
878
+ "balanceAccounts/#{balance_account_id}/recurringTopUps/#{top_up_id}",
879
+ @shared_values[:client].balance_platform.version
880
+ )
881
+ WebMock.stub_request(:patch, url)
882
+ .with(
883
+ body: request_body,
884
+ headers: { 'x-api-key' => @shared_values[:client].api_key }
885
+ )
886
+ .to_return(body: response_body)
887
+
888
+ result = @shared_values[:client].balance_platform.recurring_top_ups_api
889
+ .update_recurring_top_ups(request_body, balance_account_id, top_up_id)
890
+ response_hash = result.response
891
+
892
+ expect(result.status).to eq(200)
893
+ expect(response_hash).to eq(JSON.parse(response_body))
894
+ expect(response_hash).to be_a Adyen::HashWithAccessors
895
+ expect(response_hash).to be_a_kind_of Hash
896
+ end
897
+
898
+ it 'makes a delete_recurring_top_up DELETE call' do
899
+ balance_account_id = 'BA3227C223222B5BLP6JQC3FD'
900
+ top_up_id = 'TUPC0000000000000000000001'
901
+
902
+ url = @shared_values[:client].service_url(
903
+ @shared_values[:service],
904
+ "balanceAccounts/#{balance_account_id}/recurringTopUps/#{top_up_id}",
905
+ @shared_values[:client].balance_platform.version
906
+ )
907
+ WebMock.stub_request(:delete, url)
908
+ .with(headers: { 'x-api-key' => @shared_values[:client].api_key })
909
+ .to_return(status: 204, body: '')
910
+
911
+ result = @shared_values[:client].balance_platform.recurring_top_ups_api
912
+ .delete_recurring_top_up(balance_account_id, top_up_id)
913
+
914
+ expect(result.status).to eq(204)
915
+ end
916
+
917
+ ## scaDeviceManagement
918
+ it 'makes a begin_sca_device_registration POST call' do
919
+ request_body = JSON.parse(json_from_file('mocks/requests/BalancePlatform/begin_sca_device_registration.json'))
920
+ response_body = json_from_file('mocks/responses/BalancePlatform/begin_sca_device_registration.json')
921
+
922
+ url = @shared_values[:client].service_url(
923
+ @shared_values[:service],
924
+ 'scaDevices',
925
+ @shared_values[:client].balance_platform.version
926
+ )
927
+ WebMock.stub_request(:post, url)
928
+ .with(
929
+ body: request_body,
930
+ headers: { 'x-api-key' => @shared_values[:client].api_key }
931
+ )
932
+ .to_return(status: 201, body: response_body)
933
+
934
+ result = @shared_values[:client].balance_platform.sca_device_management_api
935
+ .begin_sca_device_registration(request_body)
936
+ response_hash = result.response
937
+
938
+ expect(result.status).to eq(201)
939
+ expect(response_hash).to eq(JSON.parse(response_body))
940
+ expect(response_hash).to be_a Adyen::HashWithAccessors
941
+ expect(response_hash).to be_a_kind_of Hash
942
+ end
943
+
944
+ it 'makes a delete_sca_device DELETE call' do
945
+ device_id = 'BSDR42XV3223223S5N6CDQDGH53M8H'
946
+
947
+ url = @shared_values[:client].service_url(
948
+ @shared_values[:service],
949
+ "scaDevices/#{device_id}",
950
+ @shared_values[:client].balance_platform.version
951
+ )
952
+ WebMock.stub_request(:delete, url)
953
+ .with(headers: { 'x-api-key' => @shared_values[:client].api_key })
954
+ .to_return(status: 204, body: '')
955
+
956
+ result = @shared_values[:client].balance_platform.sca_device_management_api
957
+ .delete_sca_device(device_id)
958
+
959
+ expect(result.status).to eq(204)
960
+ end
961
+
962
+ it 'makes a finish_sca_device_registration PATCH call' do
963
+ request_body = JSON.parse(json_from_file('mocks/requests/BalancePlatform/finish_sca_device_registration.json'))
964
+ response_body = json_from_file('mocks/responses/BalancePlatform/finish_sca_device_registration.json')
965
+ device_id = 'BSDR42XV3223223S5N6CDQDGH53M8H'
966
+
967
+ url = @shared_values[:client].service_url(
968
+ @shared_values[:service],
969
+ "scaDevices/#{device_id}",
970
+ @shared_values[:client].balance_platform.version
971
+ )
972
+ WebMock.stub_request(:patch, url)
973
+ .with(
974
+ body: request_body,
975
+ headers: { 'x-api-key' => @shared_values[:client].api_key }
976
+ )
977
+ .to_return(body: response_body)
978
+
979
+ result = @shared_values[:client].balance_platform.sca_device_management_api
980
+ .finish_sca_device_registration(request_body, device_id)
981
+ response_hash = result.response
982
+
983
+ expect(result.status).to eq(200)
984
+ expect(response_hash).to eq(JSON.parse(response_body))
985
+ expect(response_hash).to be_a Adyen::HashWithAccessors
986
+ expect(response_hash).to be_a_kind_of Hash
987
+ end
988
+
989
+ it 'makes a submit_sca_association POST call' do
990
+ request_body = JSON.parse(json_from_file('mocks/requests/BalancePlatform/submit_sca_association.json'))
991
+ response_body = json_from_file('mocks/responses/BalancePlatform/submit_sca_association.json')
992
+ device_id = 'BSDR42XV3223223S5N6CDQDGH53M8H'
993
+
994
+ url = @shared_values[:client].service_url(
995
+ @shared_values[:service],
996
+ "scaDevices/#{device_id}/scaAssociations",
997
+ @shared_values[:client].balance_platform.version
998
+ )
999
+ WebMock.stub_request(:post, url)
1000
+ .with(
1001
+ body: request_body,
1002
+ headers: { 'x-api-key' => @shared_values[:client].api_key }
1003
+ )
1004
+ .to_return(status: 201, body: response_body)
1005
+
1006
+ result = @shared_values[:client].balance_platform.sca_device_management_api
1007
+ .submit_sca_association(request_body, device_id)
1008
+ response_hash = result.response
1009
+
1010
+ expect(result.status).to eq(201)
1011
+ expect(response_hash).to eq(JSON.parse(response_body))
1012
+ expect(response_hash).to be_a Adyen::HashWithAccessors
1013
+ expect(response_hash).to be_a_kind_of Hash
1014
+ end
410
1015
  end