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
data/spec/capital_spec.rb CHANGED
@@ -6,6 +6,88 @@ RSpec.describe Adyen::Capital do
6
6
  let(:service) { 'Capital' }
7
7
  let(:version) { client.capital.version }
8
8
 
9
+ describe 'DynamicOffersApi' do
10
+ let(:dynamic_offer_id) { 'DO00000000000000000000001' }
11
+
12
+ it 'calculates a preliminary offer from a dynamic offer' do
13
+ response_body = json_from_file('mocks/responses/Capital/calculate-preliminary-offer-from-dynamic-offer.json')
14
+ request_payload = { "amount" => { "currency" => "EUR", "value" => 10000 } }
15
+
16
+ url = client.service_url(service, "dynamicOffers/#{dynamic_offer_id}/calculate", version)
17
+
18
+ WebMock.stub_request(:post, url)
19
+ .with(
20
+ body: request_payload,
21
+ headers: { 'x-api-key' => client.api_key }
22
+ )
23
+ .to_return(body: response_body)
24
+
25
+ result = client.capital.dynamic_offers_api.calculate_preliminary_offer_from_dynamic_offer(request_payload, dynamic_offer_id)
26
+
27
+ expect(result.status).to eq(200)
28
+ expect(result.response).to eq(JSON.parse(response_body))
29
+ expect(result.response).to be_a(Adyen::HashWithAccessors)
30
+ expect(result.response['id']).to eq(dynamic_offer_id)
31
+ end
32
+
33
+ it 'creates a static offer from a dynamic offer' do
34
+ response_body = json_from_file('mocks/responses/Capital/create-static-offer-from-dynamic-offer.json')
35
+ request_payload = { "amount" => { "currency" => "EUR", "value" => 10000 } }
36
+
37
+ url = client.service_url(service, "dynamicOffers/#{dynamic_offer_id}/grantOffer", version)
38
+
39
+ WebMock.stub_request(:post, url)
40
+ .with(
41
+ body: request_payload,
42
+ headers: { 'x-api-key' => client.api_key }
43
+ )
44
+ .to_return(body: response_body)
45
+
46
+ result = client.capital.dynamic_offers_api.create_static_offer_from_dynamic_offer(request_payload, dynamic_offer_id)
47
+
48
+ expect(result.status).to eq(200)
49
+ expect(result.response).to eq(JSON.parse(response_body))
50
+ expect(result.response).to be_a(Adyen::HashWithAccessors)
51
+ expect(result.response['id']).to eq('GO00000000000000000000002')
52
+ end
53
+
54
+ it 'gets all dynamic offers' do
55
+ response_body = json_from_file('mocks/responses/Capital/get-all-dynamic-offers.json')
56
+
57
+ url = client.service_url(service, 'dynamicOffers', version)
58
+
59
+ WebMock.stub_request(:get, url)
60
+ .with(headers: { 'x-api-key' => client.api_key })
61
+ .to_return(body: response_body)
62
+
63
+ result = client.capital.dynamic_offers_api.get_all_dynamic_offers
64
+
65
+ expect(result.status).to eq(200)
66
+ expect(result.response).to eq(JSON.parse(response_body))
67
+ expect(result.response).to be_a(Adyen::HashWithAccessors)
68
+ expect(result.response['dynamicOffers'].first['id']).to eq(dynamic_offer_id)
69
+ end
70
+
71
+ it 'gets all dynamic offers with query params' do
72
+ response_body = json_from_file('mocks/responses/Capital/get-all-dynamic-offers.json')
73
+ account_holder_id = 'AH00000000000000000000001'
74
+
75
+ url = client.service_url(service, 'dynamicOffers', version)
76
+
77
+ WebMock.stub_request(:get, url)
78
+ .with(
79
+ query: { 'accountHolderId' => account_holder_id },
80
+ headers: { 'x-api-key' => client.api_key }
81
+ )
82
+ .to_return(body: response_body)
83
+
84
+ result = client.capital.dynamic_offers_api.get_all_dynamic_offers(query_params: { 'accountHolderId' => account_holder_id })
85
+
86
+ expect(result.status).to eq(200)
87
+ expect(result.response).to eq(JSON.parse(response_body))
88
+ end
89
+ end
90
+
9
91
  describe 'GrantAccountsApi' do
10
92
  it 'gets grant account information' do
11
93
  response_body = json_from_file('mocks/responses/Capital/get-grant-account-success.json')
@@ -12,7 +12,7 @@ RSpec.describe "Adyen::Checkout OAuth authentication", service: "checkout" do
12
12
  end
13
13
 
14
14
  # must be created manually because every field in the response is an array
15
- it "makes a payment_methods call", focus: true do
15
+ it "makes a payment_methods call" do
16
16
  request_body = JSON.parse(json_from_file("mocks/requests/Checkout/payment_methods.json"))
17
17
 
18
18
  response_body = json_from_file("mocks/responses/Checkout/payment_methods.json")
@@ -67,8 +67,8 @@ RSpec.describe "Adyen::Checkout OAuth authentication", service: "checkout" do
67
67
  to be_a Adyen::HashWithAccessors
68
68
  expect(response_hash).
69
69
  to be_a_kind_of Hash
70
- expect(response_hash["balance"]).
71
- to eq("100")
70
+ expect(response_hash["balance"]["value"]).
71
+ to eq(100)
72
72
  end
73
73
 
74
74
  # must be created manually due to payments/details format
@@ -118,14 +118,15 @@ RSpec.describe "Adyen::Checkout OAuth authentication", service: "checkout" do
118
118
  headers: @auth_header
119
119
  ).
120
120
  to_return(
121
- body: response_body
121
+ body: response_body,
122
+ status: 201
122
123
  )
123
124
 
124
125
  result = @shared_values[:client].checkout.payment_links_api.payment_links(request_body)
125
126
  response_hash = result.response
126
127
 
127
128
  expect(result.status).
128
- to eq(200)
129
+ to eq(201)
129
130
  expect(response_hash).
130
131
  to eq(JSON.parse(response_body))
131
132
  expect(response_hash).
@@ -256,7 +257,7 @@ RSpec.describe "Adyen::Checkout OAuth authentication", service: "checkout" do
256
257
  expect(response_hash).
257
258
  to be_a_kind_of Hash
258
259
  expect(response_hash["resultCode"]).
259
- to eq("cancelled")
260
+ to eq("Received")
260
261
  end
261
262
 
262
263
  it "makes an applePay/sessions call" do
@@ -315,6 +316,214 @@ RSpec.describe "Adyen::Checkout OAuth authentication", service: "checkout" do
315
316
  to be_a_kind_of Hash
316
317
  end
317
318
 
319
+ it "makes an update_session PATCH call" do
320
+ request_body = JSON.parse(json_from_file("mocks/requests/Checkout/update_session.json"))
321
+
322
+ response_body = json_from_file("mocks/responses/Checkout/update_session.json")
323
+
324
+ url = @shared_values[:client].service_url(@shared_values[:service], "sessions/CS0123456789ABCDEF", @shared_values[:client].checkout.version)
325
+ WebMock.stub_request(:patch, url).
326
+ with(
327
+ body: request_body,
328
+ headers: @auth_header
329
+ ).
330
+ to_return(body: response_body)
331
+
332
+ result = @shared_values[:client].checkout.payments_api.update_session(request_body, "CS0123456789ABCDEF")
333
+ response_hash = result.response
334
+
335
+ expect(result.status).
336
+ to eq(200)
337
+ expect(response_hash).
338
+ to eq(JSON.parse(response_body))
339
+ expect(response_hash).
340
+ to be_a Adyen::HashWithAccessors
341
+ expect(response_hash).
342
+ to be_a_kind_of Hash
343
+ end
344
+
345
+ it "makes a cardDetails call" do
346
+ request_body = JSON.parse(json_from_file("mocks/requests/Checkout/card_details.json"))
347
+
348
+ response_body = json_from_file("mocks/responses/Checkout/card_details.json")
349
+
350
+ url = @shared_values[:client].service_url(@shared_values[:service], "cardDetails", @shared_values[:client].checkout.version)
351
+ WebMock.stub_request(:post, url).
352
+ with(
353
+ body: request_body,
354
+ headers: @auth_header
355
+ ).
356
+ to_return(body: response_body)
357
+
358
+ result = @shared_values[:client].checkout.payments_api.card_details(request_body)
359
+ response_hash = result.response
360
+
361
+ expect(result.status).
362
+ to eq(200)
363
+ expect(response_hash).
364
+ to eq(JSON.parse(response_body))
365
+ expect(response_hash).
366
+ to be_a Adyen::HashWithAccessors
367
+ expect(response_hash).
368
+ to be_a_kind_of Hash
369
+ end
370
+
371
+ it "makes a donationCampaigns call" do
372
+ request_body = JSON.parse(json_from_file("mocks/requests/Checkout/donation_campaigns.json"))
373
+
374
+ response_body = json_from_file("mocks/responses/Checkout/donation_campaigns.json")
375
+
376
+ url = @shared_values[:client].service_url(@shared_values[:service], "donationCampaigns", @shared_values[:client].checkout.version)
377
+ WebMock.stub_request(:post, url).
378
+ with(
379
+ body: request_body,
380
+ headers: @auth_header
381
+ ).
382
+ to_return(body: response_body)
383
+
384
+ result = @shared_values[:client].checkout.donations_api.donation_campaigns(request_body)
385
+ response_hash = result.response
386
+
387
+ expect(result.status).
388
+ to eq(200)
389
+ expect(response_hash).
390
+ to eq(JSON.parse(response_body))
391
+ expect(response_hash).
392
+ to be_a Adyen::HashWithAccessors
393
+ expect(response_hash).
394
+ to be_a_kind_of Hash
395
+ end
396
+
397
+ it "makes a donations call" do
398
+ request_body = JSON.parse(json_from_file("mocks/requests/Checkout/donations.json"))
399
+
400
+ response_body = json_from_file("mocks/responses/Checkout/donations.json")
401
+
402
+ url = @shared_values[:client].service_url(@shared_values[:service], "donations", @shared_values[:client].checkout.version)
403
+ WebMock.stub_request(:post, url).
404
+ with(
405
+ body: request_body,
406
+ headers: @auth_header
407
+ ).
408
+ to_return(body: response_body)
409
+
410
+ result = @shared_values[:client].checkout.donations_api.donations(request_body)
411
+ response_hash = result.response
412
+
413
+ expect(result.status).
414
+ to eq(200)
415
+ expect(response_hash).
416
+ to eq(JSON.parse(response_body))
417
+ expect(response_hash).
418
+ to be_a Adyen::HashWithAccessors
419
+ expect(response_hash).
420
+ to be_a_kind_of Hash
421
+ end
422
+
423
+ it "makes a payments call" do
424
+ request_body = JSON.parse(json_from_file("mocks/requests/Checkout/payments.json"))
425
+
426
+ response_body = json_from_file("mocks/responses/Checkout/payments.json")
427
+
428
+ url = @shared_values[:client].service_url(@shared_values[:service], "payments", @shared_values[:client].checkout.version)
429
+ WebMock.stub_request(:post, url).
430
+ with(
431
+ body: request_body,
432
+ headers: @auth_header
433
+ ).
434
+ to_return(body: response_body)
435
+
436
+ result = @shared_values[:client].checkout.payments_api.payments(request_body)
437
+ response_hash = result.response
438
+
439
+ expect(result.status).
440
+ to eq(200)
441
+ expect(response_hash).
442
+ to eq(JSON.parse(response_body))
443
+ expect(response_hash).
444
+ to be_a Adyen::HashWithAccessors
445
+ expect(response_hash).
446
+ to be_a_kind_of Hash
447
+ end
448
+
449
+ it "makes a reversals call" do
450
+ request_body = JSON.parse(json_from_file("mocks/requests/Checkout/reversals.json"))
451
+
452
+ response_body = json_from_file("mocks/responses/Checkout/reversals.json")
453
+
454
+ url = @shared_values[:client].service_url(@shared_values[:service], "payments/8535678901234567/reversals", @shared_values[:client].checkout.version)
455
+ WebMock.stub_request(:post, url).
456
+ with(
457
+ body: request_body,
458
+ headers: @auth_header
459
+ ).
460
+ to_return(body: response_body, status: 201)
461
+
462
+ result = @shared_values[:client].checkout.modifications_api.refund_or_cancel_payment(request_body, "8535678901234567")
463
+ response_hash = result.response
464
+
465
+ expect(result.status).
466
+ to eq(201)
467
+ expect(response_hash).
468
+ to eq(JSON.parse(response_body))
469
+ expect(response_hash).
470
+ to be_a Adyen::HashWithAccessors
471
+ expect(response_hash).
472
+ to be_a_kind_of Hash
473
+ end
474
+
475
+ it "makes a paypal/updateOrder call" do
476
+ request_body = JSON.parse(json_from_file("mocks/requests/Checkout/paypal_update_order.json"))
477
+
478
+ response_body = json_from_file("mocks/responses/Checkout/paypal_update_order.json")
479
+
480
+ url = @shared_values[:client].service_url(@shared_values[:service], "paypal/updateOrder", @shared_values[:client].checkout.version)
481
+ WebMock.stub_request(:post, url).
482
+ with(
483
+ body: request_body,
484
+ headers: @auth_header
485
+ ).
486
+ to_return(body: response_body)
487
+
488
+ result = @shared_values[:client].checkout.utility_api.updates_order_for_paypal_express_checkout(request_body)
489
+ response_hash = result.response
490
+
491
+ expect(result.status).
492
+ to eq(200)
493
+ expect(response_hash).
494
+ to eq(JSON.parse(response_body))
495
+ expect(response_hash).
496
+ to be_a Adyen::HashWithAccessors
497
+ expect(response_hash).
498
+ to be_a_kind_of Hash
499
+ end
500
+
501
+ it "makes a storedPaymentMethods POST call" do
502
+ request_body = JSON.parse(json_from_file("mocks/requests/Checkout/create_stored_payment_method.json"))
503
+
504
+ response_body = json_from_file("mocks/responses/Checkout/create_stored_payment_method.json")
505
+
506
+ url = @shared_values[:client].service_url(@shared_values[:service], "storedPaymentMethods", @shared_values[:client].checkout.version)
507
+ WebMock.stub_request(:post, url).
508
+ with(
509
+ body: request_body,
510
+ headers: @auth_header
511
+ ).
512
+ to_return(body: response_body, status: 201)
513
+
514
+ result = @shared_values[:client].checkout.recurring_api.stored_payment_methods(request_body)
515
+ response_hash = result.response
516
+
517
+ expect(result.status).
518
+ to eq(201)
519
+ expect(response_hash).
520
+ to eq(JSON.parse(response_body))
521
+ expect(response_hash).
522
+ to be_a Adyen::HashWithAccessors
523
+ expect(response_hash).
524
+ to be_a_kind_of Hash
525
+ end
526
+
318
527
  it "makes a capture call" do
319
528
  request_body = JSON.parse(json_from_file("mocks/requests/Checkout/capture.json"))
320
529
 
@@ -530,14 +739,15 @@ RSpec.describe "Adyen::Checkout OAuth authentication", service: "checkout" do
530
739
  headers: @auth_header
531
740
  ).
532
741
  to_return(
533
- body: "{}"
742
+ status: 204,
743
+ body: ""
534
744
  )
535
745
 
536
746
  result = @shared_values[:client].checkout.recurring_api.delete_token_for_stored_payment_details("RL8FW7WZM6KXWD82", query_params:{"merchantAccount" => "TestMerchantAccount", "shopperReference" => "test-1234"})
537
747
  response_hash = result.response
538
748
 
539
749
  expect(result.status).
540
- to eq(200)
750
+ to eq(204)
541
751
  end
542
752
 
543
753
  it "tests sending the application headers" do
@@ -554,7 +764,7 @@ RSpec.describe "Adyen::Checkout OAuth authentication", service: "checkout" do
554
764
 
555
765
  result = @shared_values[:client].checkout.recurring_api.get_tokens_for_stored_payment_details(query_params:{"merchantAccount" => "TestMerchantAccount", "shopperReference" => "test-1234"})
556
766
  expect(
557
- a_request(:get, "http://localhost:3001/v71/storedPaymentMethods?merchantAccount=TestMerchantAccount&shopperReference=test-1234")
767
+ a_request(:get, "http://localhost:3001/v72/storedPaymentMethods?merchantAccount=TestMerchantAccount&shopperReference=test-1234")
558
768
  .with(headers: {
559
769
  'Accept' => '*/*',
560
770
  'Accept-Encoding' => 'gzip;q=1.0,deflate;q=0.6,identity;q=0.3',
@@ -580,7 +790,7 @@ RSpec.describe "Adyen::Checkout OAuth authentication", service: "checkout" do
580
790
  url = adyen.service_url("Checkout", "paymentMethods", @shared_values[:client].checkout.version)
581
791
 
582
792
  expect(url).
583
- to eq("https://prefix-checkout-live.adyenpayments.com/checkout/v71/paymentMethods")
793
+ to eq("https://prefix-checkout-live.adyenpayments.com/checkout/v72/paymentMethods")
584
794
 
585
795
  end
586
796
  end