adyen-ruby-api-library 7.0.0 → 7.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/CODEOWNERS +1 -1
- data/.github/release.yml +18 -0
- data/.github/workflows/gh_release.yml +16 -0
- data/.github/workflows/release_request.yml +15 -0
- data/.github/workflows/ruby.yml +1 -1
- data/.github/workflows/services.yml +28 -0
- data/.rubocop.yml +8 -0
- data/Gemfile +7 -7
- data/Makefile +14 -10
- data/README.md +13 -10
- data/Rakefile +3 -3
- data/adyen-ruby-api-library.gemspec +6 -3
- data/bin/console +2 -2
- data/lib/adyen/client.rb +96 -76
- data/lib/adyen/errors.rb +23 -18
- data/lib/adyen/hash_with_accessors.rb +12 -7
- data/lib/adyen/services/balanceControlService.rb +7 -14
- data/lib/adyen/services/balancePlatform/account_holders_api.rb +22 -38
- data/lib/adyen/services/balancePlatform/balance_accounts_api.rb +48 -79
- data/lib/adyen/services/balancePlatform/bank_account_validation_api.rb +6 -13
- data/lib/adyen/services/balancePlatform/grant_accounts_api.rb +6 -13
- data/lib/adyen/services/balancePlatform/grant_offers_api.rb +12 -22
- data/lib/adyen/services/balancePlatform/payment_instrument_groups_api.rb +16 -29
- data/lib/adyen/services/balancePlatform/payment_instruments_api.rb +26 -45
- data/lib/adyen/services/balancePlatform/platform_api.rb +12 -22
- data/lib/adyen/services/balancePlatform/transaction_rules_api.rb +21 -37
- data/lib/adyen/services/balancePlatform.rb +38 -40
- data/lib/adyen/services/binLookup.rb +12 -22
- data/lib/adyen/services/checkout/classic_checkout_sdk_api.rb +11 -21
- data/lib/adyen/services/checkout/modifications_api.rb +31 -53
- data/lib/adyen/services/checkout/orders_api.rb +16 -29
- data/lib/adyen/services/checkout/payment_links_api.rb +16 -29
- data/lib/adyen/services/checkout/payments_api.rb +40 -53
- data/lib/adyen/services/checkout/recurring_api.rb +13 -23
- data/lib/adyen/services/checkout/utility_api.rb +11 -21
- data/lib/adyen/services/checkout.rb +32 -34
- data/lib/adyen/services/dataProtection.rb +7 -14
- data/lib/adyen/services/dispute.rb +6 -5
- data/lib/adyen/services/legalEntityManagement/business_lines_api.rb +21 -37
- data/lib/adyen/services/legalEntityManagement/documents_api.rb +21 -37
- data/lib/adyen/services/legalEntityManagement/hosted_onboarding_api.rb +16 -29
- data/lib/adyen/services/legalEntityManagement/legal_entities_api.rb +26 -45
- data/lib/adyen/services/legalEntityManagement/pci_questionnaires_api.rb +21 -37
- data/lib/adyen/services/legalEntityManagement/terms_of_service_api.rb +25 -29
- data/lib/adyen/services/legalEntityManagement/transfer_instruments_api.rb +21 -37
- data/lib/adyen/services/legalEntityManagement.rb +32 -34
- data/lib/adyen/services/management/account_company_level_api.rb +18 -31
- data/lib/adyen/services/management/account_merchant_level_api.rb +22 -38
- data/lib/adyen/services/management/account_store_level_api.rb +43 -71
- data/lib/adyen/services/management/allowed_origins_company_level_api.rb +21 -37
- data/lib/adyen/services/management/allowed_origins_merchant_level_api.rb +21 -37
- data/lib/adyen/services/management/api_credentials_company_level_api.rb +22 -38
- data/lib/adyen/services/management/api_credentials_merchant_level_api.rb +22 -38
- data/lib/adyen/services/management/api_key_company_level_api.rb +6 -13
- data/lib/adyen/services/management/api_key_merchant_level_api.rb +6 -13
- data/lib/adyen/services/management/client_key_company_level_api.rb +6 -13
- data/lib/adyen/services/management/client_key_merchant_level_api.rb +6 -13
- data/lib/adyen/services/management/my_api_credential_api.rb +26 -45
- data/lib/adyen/services/management/payment_methods_merchant_level_api.rb +32 -54
- data/lib/adyen/services/management/payout_settings_merchant_level_api.rb +26 -45
- data/lib/adyen/services/management/split_configuration_merchant_level_api.rb +92 -0
- data/lib/adyen/services/management/terminal_actions_company_level_api.rb +24 -40
- data/lib/adyen/services/management/terminal_actions_terminal_level_api.rb +6 -13
- data/lib/adyen/services/management/terminal_orders_company_level_api.rb +55 -89
- data/lib/adyen/services/management/terminal_orders_merchant_level_api.rb +55 -89
- data/lib/adyen/services/management/terminal_settings_company_level_api.rb +23 -39
- data/lib/adyen/services/management/terminal_settings_merchant_level_api.rb +23 -39
- data/lib/adyen/services/management/terminal_settings_store_level_api.rb +45 -73
- data/lib/adyen/services/management/terminal_settings_terminal_level_api.rb +21 -37
- data/lib/adyen/services/management/terminals_terminal_level_api.rb +7 -14
- data/lib/adyen/services/management/users_company_level_api.rb +22 -38
- data/lib/adyen/services/management/users_merchant_level_api.rb +22 -38
- data/lib/adyen/services/management/webhooks_company_level_api.rb +37 -62
- data/lib/adyen/services/management/webhooks_merchant_level_api.rb +37 -62
- data/lib/adyen/services/management.rb +99 -96
- data/lib/adyen/services/marketpay.rb +42 -36
- data/lib/adyen/services/payment/general_api.rb +56 -0
- data/lib/adyen/services/payment/modifications_api.rb +83 -0
- data/lib/adyen/services/payment.rb +10 -158
- data/lib/adyen/services/payout/initialization_api.rb +16 -29
- data/lib/adyen/services/payout/instant_payouts_api.rb +6 -13
- data/lib/adyen/services/payout/reviewing_api.rb +11 -21
- data/lib/adyen/services/payout.rb +19 -21
- data/lib/adyen/services/posTerminalManagement.rb +27 -46
- data/lib/adyen/services/recurring.rb +32 -54
- data/lib/adyen/services/service.rb +5 -4
- data/lib/adyen/services/storedValue.rb +32 -54
- data/lib/adyen/services/transfers/capital_api.rb +38 -0
- data/lib/adyen/services/transfers/transactions_api.rb +12 -22
- data/lib/adyen/services/transfers/transfers_api.rb +6 -13
- data/lib/adyen/services/transfers.rb +20 -17
- data/lib/adyen/utils/hmac_validator.rb +9 -9
- data/lib/adyen/version.rb +3 -3
- data/lib/adyen-ruby-api-library.rb +21 -21
- data/spec/account_spec.rb +20 -20
- data/spec/balance_control_spec.rb +28 -29
- data/spec/balance_platform_spec.rb +108 -102
- data/spec/bin_lookup_spec.rb +50 -50
- data/spec/checkout_spec.rb +581 -515
- data/spec/client_spec.rb +118 -71
- data/spec/data_protection_spec.rb +4 -4
- data/spec/dispute_spec.rb +7 -7
- data/spec/errors_spec.rb +37 -17
- data/spec/fund_spec.rb +10 -10
- data/spec/hash_with_accessors_spec.rb +18 -8
- data/spec/hop_spec.rb +4 -4
- data/spec/lem_spec.rb +44 -49
- data/spec/management_spec.rb +46 -48
- data/spec/notification_spec.rb +9 -9
- data/spec/payments_spec.rb +31 -32
- data/spec/payouts_spec.rb +29 -32
- data/spec/pos_terminal_management_spec.rb +30 -32
- data/spec/recurring_spec.rb +8 -8
- data/spec/service_spec.rb +4 -0
- data/spec/spec_helper.rb +37 -35
- data/spec/stored_value_spec.rb +28 -27
- data/spec/transfers_spec.rb +48 -47
- data/spec/utils/hmac_validator_spec.rb +15 -14
- data/templates/api-single.mustache +13 -15
- data/templates/api-small.mustache +8 -15
- data/templates/api.mustache +7 -14
- metadata +27 -18
- data/.github/dependabot.yml +0 -8
- /data/spec/mocks/responses/Webhooks/{backslash_notification.json → backslash_webhook.json} +0 -0
- /data/spec/mocks/responses/Webhooks/{colon_notification.json → colon_webhook.json} +0 -0
- /data/spec/mocks/responses/Webhooks/{forwardslash_notification.json → forwardslash_webhook.json} +0 -0
- /data/spec/mocks/responses/Webhooks/{mixed_notification.json → mixed_webhook.json} +0 -0
data/spec/client_spec.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
RSpec.describe Adyen do
|
4
4
|
before(:all) do
|
@@ -7,119 +7,120 @@ RSpec.describe Adyen do
|
|
7
7
|
}
|
8
8
|
end
|
9
9
|
|
10
|
-
it
|
10
|
+
it 'creates Adyen client' do
|
11
11
|
@shared_values[:client] = Adyen::Client.new
|
12
12
|
expect(@shared_values[:client]).is_a? Adyen::Client
|
13
13
|
end
|
14
14
|
|
15
|
-
it
|
15
|
+
it 'sets env to :mock' do
|
16
16
|
@shared_values[:client].env = :test
|
17
|
-
expect(@shared_values[:client].env)
|
18
|
-
to eq(:test)
|
17
|
+
expect(@shared_values[:client].env)
|
18
|
+
.to eq(:test)
|
19
19
|
end
|
20
20
|
|
21
|
-
it
|
21
|
+
it 'sets the version number' do
|
22
22
|
@shared_values[:client].checkout.version = @shared_values[:version]
|
23
|
-
expect(@shared_values[:client].checkout.version)
|
24
|
-
to eq(@shared_values[:version])
|
23
|
+
expect(@shared_values[:client].checkout.version)
|
24
|
+
.to eq(@shared_values[:version])
|
25
25
|
end
|
26
26
|
|
27
|
-
it
|
28
|
-
expect{ @shared_values[:client].payment.authorise(
|
29
|
-
to raise_error(Adyen::AuthenticationError)
|
27
|
+
it 'fails payments call without WS user and password' do
|
28
|
+
expect { @shared_values[:client].payment.general_api.authorise('{}') }
|
29
|
+
.to raise_error(Adyen::AuthenticationError)
|
30
30
|
@shared_values[:client].ws_user = @shared_values[:ws_user]
|
31
|
-
expect{ @shared_values[:client].payment.authorise(
|
32
|
-
to raise_error(Adyen::AuthenticationError)
|
31
|
+
expect { @shared_values[:client].payment.general_api.authorise('{}') }
|
32
|
+
.to raise_error(Adyen::AuthenticationError)
|
33
33
|
end
|
34
34
|
|
35
|
-
it
|
36
|
-
expect{ @shared_values[:client].checkout.payments_api.payment_methods(
|
37
|
-
to raise_error(Adyen::AuthenticationError)
|
38
|
-
@shared_values[:client].api_key =
|
35
|
+
it 'fails a checkout call without api key' do
|
36
|
+
expect { @shared_values[:client].checkout.payments_api.payment_methods('{}') }
|
37
|
+
.to raise_error(Adyen::AuthenticationError)
|
38
|
+
@shared_values[:client].api_key = 'api_key'
|
39
39
|
end
|
40
40
|
|
41
|
-
it
|
42
|
-
client = Adyen::Client.new(env: :mock, mock_service_url_base:
|
43
|
-
expect(client.service_url_base(
|
44
|
-
to eq(
|
41
|
+
it 'uses the specified mock service URL' do
|
42
|
+
client = Adyen::Client.new(env: :mock, mock_service_url_base: 'https://mock.test')
|
43
|
+
expect(client.service_url_base('Account'))
|
44
|
+
.to eq('https://mock.test')
|
45
45
|
end
|
46
46
|
|
47
|
-
it
|
47
|
+
it 'generates localhost service URL when a mock port is specified' do
|
48
48
|
client = Adyen::Client.new(env: :mock, mock_port: 3005)
|
49
|
-
expect(client.service_url_base(
|
50
|
-
to eq(
|
49
|
+
expect(client.service_url_base('Account'))
|
50
|
+
.to eq('http://localhost:3005')
|
51
51
|
end
|
52
52
|
|
53
|
-
it
|
54
|
-
client = Adyen::Client.new(env: :mock, mock_port: 3005, mock_service_url_base:
|
55
|
-
expect(client.service_url_base(
|
56
|
-
to eq(
|
53
|
+
it 'prefers the mock service URL when both mock service URL and port are specified' do
|
54
|
+
client = Adyen::Client.new(env: :mock, mock_port: 3005, mock_service_url_base: 'https://this-url-wins.test')
|
55
|
+
expect(client.service_url_base('Account'))
|
56
|
+
.to eq('https://this-url-wins.test')
|
57
57
|
end
|
58
58
|
|
59
|
-
it
|
59
|
+
it 'generates the correct service URL base for CAL TEST' do
|
60
60
|
client = Adyen::Client.new(env: :test)
|
61
|
-
client.live_url_prefix =
|
62
|
-
expect(client.service_url_base(
|
63
|
-
to eq(
|
61
|
+
client.live_url_prefix = 'abcdef1234567890-TestCompany'
|
62
|
+
expect(client.service_url_base('Account'))
|
63
|
+
.to eq('https://cal-test.adyen.com/cal/services/Account')
|
64
64
|
end
|
65
65
|
|
66
|
-
it
|
66
|
+
it 'generates the correct service URL base for CAL LIVE' do
|
67
67
|
client = Adyen::Client.new(env: :live)
|
68
|
-
client.live_url_prefix =
|
69
|
-
expect(client.service_url_base(
|
70
|
-
to eq(
|
68
|
+
client.live_url_prefix = 'abcdef1234567890-TestCompany'
|
69
|
+
expect(client.service_url_base('Account'))
|
70
|
+
.to eq('https://cal-live.adyen.com/cal/services/Account')
|
71
71
|
end
|
72
72
|
|
73
|
-
it
|
73
|
+
it 'generates the correct service URL base for PAL TEST' do
|
74
74
|
client = Adyen::Client.new(env: :test)
|
75
|
-
client.live_url_prefix =
|
76
|
-
expect(client.service_url_base(
|
77
|
-
to eq(
|
75
|
+
client.live_url_prefix = 'abcdef1234567890-TestCompany'
|
76
|
+
expect(client.service_url_base('Payment'))
|
77
|
+
.to eq('https://pal-test.adyen.com/pal/servlet/Payment')
|
78
78
|
end
|
79
79
|
|
80
|
-
it
|
80
|
+
it 'generates the correct service URL base for PAL LIVE' do
|
81
81
|
client = Adyen::Client.new(env: :live)
|
82
|
-
client.live_url_prefix =
|
83
|
-
expect(client.service_url_base(
|
84
|
-
to eq(
|
82
|
+
client.live_url_prefix = 'abcdef1234567890-TestCompany'
|
83
|
+
expect(client.service_url_base('Payment'))
|
84
|
+
.to eq('https://abcdef1234567890-TestCompany-pal-live.adyenpayments.com/pal/servlet/Payment')
|
85
85
|
end
|
86
|
-
|
87
|
-
it
|
86
|
+
|
87
|
+
it 'generates the correct service URL PAL authorise TEST' do
|
88
88
|
client = Adyen::Client.new(env: :test)
|
89
|
-
expect(client.service_url(
|
90
|
-
to eq(
|
89
|
+
expect(client.service_url('Payment', 'authorise', '68'))
|
90
|
+
.to eq('https://pal-test.adyen.com/pal/servlet/Payment/v68/authorise')
|
91
91
|
end
|
92
92
|
|
93
|
-
it
|
93
|
+
it 'generates the correct service URL base for PAL LIVE' do
|
94
94
|
client = Adyen::Client.new(env: :live)
|
95
|
-
client.live_url_prefix =
|
96
|
-
expect(client.service_url(
|
97
|
-
to eq(
|
95
|
+
client.live_url_prefix = 'abcdef1234567890-TestCompany'
|
96
|
+
expect(client.service_url('Payment', 'authorise', '68'))
|
97
|
+
.to eq('https://abcdef1234567890-TestCompany-pal-live.adyenpayments.com/pal/servlet/Payment/v68/authorise')
|
98
98
|
end
|
99
99
|
|
100
|
-
it
|
100
|
+
it 'generates a new set of ConnectionOptions when none are provided' do
|
101
101
|
expect(Faraday::ConnectionOptions).to receive(:new).and_call_original
|
102
|
-
|
102
|
+
Adyen::Client.new(env: :test)
|
103
103
|
end
|
104
104
|
|
105
|
-
it
|
105
|
+
it 'uses the ConnectionOptions provided' do
|
106
106
|
connection_options = Faraday::ConnectionOptions.new
|
107
107
|
expect(Faraday::ConnectionOptions).not_to receive(:new)
|
108
|
-
|
108
|
+
Adyen::Client.new(env: :test, connection_options: connection_options)
|
109
109
|
end
|
110
110
|
|
111
|
-
it
|
111
|
+
it 'initiates a Faraday connection with the provided options' do
|
112
112
|
connection_options = Faraday::ConnectionOptions.new
|
113
113
|
expect(Faraday::ConnectionOptions).not_to receive(:new)
|
114
|
-
client = Adyen::Client.new(api_key:
|
114
|
+
client = Adyen::Client.new(api_key: 'api_key', env: :mock, connection_options: connection_options)
|
115
115
|
|
116
116
|
mock_faraday_connection = double(Faraday::Connection)
|
117
|
-
|
118
|
-
request_body = JSON.parse(json_from_file(
|
117
|
+
client.service_url(@shared_values[:service], 'payments/details', client.checkout.version)
|
118
|
+
request_body = JSON.parse(json_from_file('mocks/requests/Checkout/payment-details.json'))
|
119
119
|
mock_response = Faraday::Response.new(status: 200)
|
120
120
|
|
121
121
|
expect(Adyen::AdyenResult).to receive(:new)
|
122
|
-
expect(Faraday).to receive(:new).with(
|
122
|
+
expect(Faraday).to receive(:new).with('http://localhost:3001/v70/payments/details',
|
123
|
+
connection_options).and_return(mock_faraday_connection)
|
123
124
|
expect(mock_faraday_connection).to receive(:post).and_return(mock_response)
|
124
125
|
client.checkout.payments_api.payments_details(request_body)
|
125
126
|
end
|
@@ -133,7 +134,7 @@ RSpec.describe Adyen do
|
|
133
134
|
it "checks the creation of checkout url" do
|
134
135
|
client = Adyen::Client.new(api_key: "api_key", env: :live, live_url_prefix: "YourLiveUrlPrefix")
|
135
136
|
expect(client.service_url("Checkout", "paymentMethods", "70")).
|
136
|
-
to eq("https://YourLiveUrlPrefix-checkout-live.adyenpayments.com/v70/paymentMethods")
|
137
|
+
to eq("https://YourLiveUrlPrefix-checkout-live.adyenpayments.com/checkout/v70/paymentMethods")
|
137
138
|
end
|
138
139
|
it "checks the creation of lem url" do
|
139
140
|
client = Adyen::Client.new(api_key: "api_key", env: :live)
|
@@ -177,16 +178,62 @@ RSpec.describe Adyen do
|
|
177
178
|
to eq("https://pal-test.adyen.com/pal/servlet/StoredValue/v46/issue")
|
178
179
|
end
|
179
180
|
|
180
|
-
it
|
181
|
-
client = Adyen::Client.new(api_key:
|
182
|
-
expect(client.service_url(
|
183
|
-
|
181
|
+
it 'checks the creation of checkout url' do
|
182
|
+
client = Adyen::Client.new(api_key: 'api_key', env: :live, live_url_prefix: 'YourLiveUrlPrefix')
|
183
|
+
expect(client.service_url('Checkout', 'paymentMethods', '70'))
|
184
|
+
.to eq('https://YourLiveUrlPrefix-checkout-live.adyenpayments.com/checkout/v70/paymentMethods')
|
185
|
+
end
|
186
|
+
it 'checks the creation of lem url' do
|
187
|
+
client = Adyen::Client.new(api_key: 'api_key', env: :live)
|
188
|
+
expect(client.service_url('LegalEntityManagement', 'businessLines', '3'))
|
189
|
+
.to eq('https://kyc-live.adyen.com/lem/v3/businessLines')
|
184
190
|
end
|
185
191
|
|
186
|
-
it
|
187
|
-
client = Adyen::Client.new(api_key:
|
188
|
-
expect(client.service_url(
|
189
|
-
|
190
|
-
end
|
192
|
+
it 'checks the creation of balancePlatform url' do
|
193
|
+
client = Adyen::Client.new(api_key: 'api_key', env: :live)
|
194
|
+
expect(client.service_url('BalancePlatform', 'legalEntities', '1'))
|
195
|
+
.to eq('https://balanceplatform-api-live.adyen.com/bcl/v1/legalEntities')
|
196
|
+
end
|
197
|
+
|
198
|
+
it 'checks the creation of balancePlatform url' do
|
199
|
+
client = Adyen::Client.new(api_key: 'api_key', env: :test)
|
200
|
+
expect(client.service_url('BalancePlatform', 'legalEntities', '1'))
|
201
|
+
.to eq('https://balanceplatform-api-test.adyen.com/bcl/v1/legalEntities')
|
202
|
+
end
|
203
|
+
|
204
|
+
it 'checks the creation of transfers url' do
|
205
|
+
client = Adyen::Client.new(api_key: 'api_key', env: :test)
|
206
|
+
expect(client.service_url('Transfers', 'transactions', '1'))
|
207
|
+
.to eq('https://balanceplatform-api-test.adyen.com/btl/v1/transactions')
|
208
|
+
end
|
209
|
+
|
210
|
+
it 'checks the creation of management url' do
|
211
|
+
client = Adyen::Client.new(api_key: 'api_key', env: :test)
|
212
|
+
expect(client.service_url('Management', 'companies', '1'))
|
213
|
+
.to eq('https://management-test.adyen.com/v1/companies')
|
214
|
+
end
|
215
|
+
|
216
|
+
it 'checks the creation of binLookup url' do
|
217
|
+
client = Adyen::Client.new(api_key: 'api_key', env: :test)
|
218
|
+
expect(client.service_url('BinLookup', 'getCostEstimate', '54'))
|
219
|
+
.to eq('https://pal-test.adyen.com/pal/servlet/BinLookup/v54/getCostEstimate')
|
220
|
+
end
|
191
221
|
|
222
|
+
it 'check the creation of storedValue url' do
|
223
|
+
client = Adyen::Client.new(api_key: 'api_key', env: :test)
|
224
|
+
expect(client.service_url('StoredValue', 'issue', '46'))
|
225
|
+
.to eq('https://pal-test.adyen.com/pal/servlet/StoredValue/v46/issue')
|
226
|
+
end
|
227
|
+
|
228
|
+
it 'check the creation of payout url' do
|
229
|
+
client = Adyen::Client.new(api_key: 'api_key', env: :test)
|
230
|
+
expect(client.service_url('Payout', 'declineThirdParty', '68'))
|
231
|
+
.to eq('https://pal-test.adyen.com/pal/servlet/Payout/v68/declineThirdParty')
|
232
|
+
end
|
233
|
+
|
234
|
+
it 'checks the creation of PosTerminalManagement url' do
|
235
|
+
client = Adyen::Client.new(api_key: 'api_key', env: :test)
|
236
|
+
expect(client.service_url('PosTerminalManagement', 'assignTerminals', '1'))
|
237
|
+
.to eq('https://postfmapi-test.adyen.com/postfmapi/terminal/v1/assignTerminals')
|
238
|
+
end
|
192
239
|
end
|
@@ -1,14 +1,14 @@
|
|
1
|
-
require
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
|
-
RSpec.describe Adyen::DataProtection, service:
|
3
|
+
RSpec.describe Adyen::DataProtection, service: 'Data Protection Service' do
|
4
4
|
# client instance to be used in dynamically generated tests
|
5
5
|
client = create_client(:basic)
|
6
6
|
|
7
7
|
# methods / values to test for
|
8
8
|
# format is defined in spec_helper
|
9
9
|
test_sets = [
|
10
|
-
[
|
10
|
+
%w[request_subject_erasure result SUCCESS]
|
11
11
|
]
|
12
12
|
|
13
|
-
generate_tests(client,
|
13
|
+
generate_tests(client, 'DataProtectionService', test_sets, client.data_protection)
|
14
14
|
end
|
data/spec/dispute_spec.rb
CHANGED
@@ -1,17 +1,17 @@
|
|
1
|
-
require
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
|
-
RSpec.describe Adyen::Dispute, service:
|
3
|
+
RSpec.describe Adyen::Dispute, service: 'dispute service' do
|
4
4
|
# client instance to be used in dynamically generated tests
|
5
5
|
client = create_client(:basic)
|
6
6
|
|
7
7
|
# methods / values to test for
|
8
8
|
# format is defined in spec_helper
|
9
9
|
test_sets = [
|
10
|
-
[
|
11
|
-
[
|
12
|
-
[
|
13
|
-
[
|
10
|
+
['retrieve_applicable_defense_reasons', 'disputeServiceResult', { 'success' => true }],
|
11
|
+
['supply_defense_document', 'disputeServiceResult', { 'success' => true }],
|
12
|
+
['delete_dispute_defense_document', 'disputeServiceResult', { 'success' => true }],
|
13
|
+
['defend_dispute', 'disputeServiceResult', { 'success' => true }]
|
14
14
|
]
|
15
15
|
|
16
|
-
generate_tests(client,
|
16
|
+
generate_tests(client, 'DisputeService', test_sets, client.dispute)
|
17
17
|
end
|
data/spec/errors_spec.rb
CHANGED
@@ -7,49 +7,69 @@ RSpec.describe Adyen::AdyenError do
|
|
7
7
|
@shared_values = {
|
8
8
|
request: {
|
9
9
|
amount: {
|
10
|
-
currency:
|
10
|
+
currency: 'USD',
|
11
11
|
value: 1000
|
12
12
|
},
|
13
|
-
reference:
|
13
|
+
reference: 'Your order number',
|
14
14
|
paymentMethod: {
|
15
|
-
type:
|
16
|
-
number:
|
17
|
-
expiryMonth:
|
18
|
-
expiryYear:
|
19
|
-
holderName:
|
20
|
-
cvc:
|
15
|
+
type: 'scheme',
|
16
|
+
number: '4111111111111111',
|
17
|
+
expiryMonth: '10',
|
18
|
+
expiryYear: '2020',
|
19
|
+
holderName: 'John Smith',
|
20
|
+
cvc: '737'
|
21
21
|
},
|
22
|
-
returnUrl:
|
23
|
-
merchantAccount:
|
22
|
+
returnUrl: 'https://your-company.com/',
|
23
|
+
merchantAccount: 'YOUR_MERCHANT_ACCOUNT'
|
24
24
|
}
|
25
25
|
}
|
26
26
|
end
|
27
27
|
|
28
28
|
describe '#to_s' do
|
29
29
|
it 'describes using the error properties' do
|
30
|
-
expect(Adyen::AdyenError.new(
|
30
|
+
expect(Adyen::AdyenError.new(
|
31
|
+
@shared_values[:request],
|
32
|
+
'response',
|
33
|
+
'message',
|
34
|
+
'code'
|
35
|
+
).to_s).to eq("Adyen::AdyenError code:code, msg:message, request:#{@shared_values[:request]}, response:response")
|
31
36
|
end
|
32
37
|
it 'skips the null properties' do
|
33
|
-
expect(Adyen::AdyenError.new(
|
38
|
+
expect(Adyen::AdyenError.new(
|
39
|
+
@shared_values[:request],
|
40
|
+
nil,
|
41
|
+
nil,
|
42
|
+
'code'
|
43
|
+
).to_s).to eq("Adyen::AdyenError code:code, request:#{@shared_values[:request]}")
|
34
44
|
end
|
35
45
|
it 'uses the proper error class name' do
|
36
|
-
expect(Adyen::PermissionError.new(
|
46
|
+
expect(Adyen::PermissionError.new(
|
47
|
+
'message',
|
48
|
+
@shared_values[:request],
|
49
|
+
'response'
|
50
|
+
).to_s).to eq(
|
51
|
+
"Adyen::PermissionError code:403, msg:message, request:#{@shared_values[:request]}, response:response"
|
52
|
+
)
|
37
53
|
end
|
38
54
|
end
|
39
55
|
describe '#masking' do
|
40
56
|
it 'masks card number when logging request in errors' do
|
41
|
-
expect(Adyen::AdyenError.new(@shared_values[:request], 'response', 'message',
|
57
|
+
expect(Adyen::AdyenError.new(@shared_values[:request], 'response', 'message',
|
58
|
+
'code').request[:paymentMethod][:number]).to eq('411111******1111')
|
42
59
|
end
|
43
60
|
it 'masks CVC when logging request in errors' do
|
44
|
-
expect(Adyen::AdyenError.new(@shared_values[:request], 'response', 'message',
|
61
|
+
expect(Adyen::AdyenError.new(@shared_values[:request], 'response', 'message',
|
62
|
+
'code').request[:paymentMethod][:cvc]).to eq('***')
|
45
63
|
end
|
46
64
|
|
47
65
|
context 'when request is string' do
|
48
66
|
it 'masks card number when logging request in errors' do
|
49
|
-
expect(Adyen::AdyenError.new(JSON.generate(@shared_values[:request]), 'response', 'message',
|
67
|
+
expect(Adyen::AdyenError.new(JSON.generate(@shared_values[:request]), 'response', 'message',
|
68
|
+
'code').request[:paymentMethod][:number]).to eq('411111******1111')
|
50
69
|
end
|
51
70
|
it 'masks CVC when logging request in errors' do
|
52
|
-
expect(Adyen::AdyenError.new(JSON.generate(@shared_values[:request]), 'response', 'message',
|
71
|
+
expect(Adyen::AdyenError.new(JSON.generate(@shared_values[:request]), 'response', 'message',
|
72
|
+
'code').request[:paymentMethod][:cvc]).to eq('***')
|
53
73
|
end
|
54
74
|
end
|
55
75
|
end
|
data/spec/fund_spec.rb
CHANGED
@@ -1,20 +1,20 @@
|
|
1
|
-
require
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
|
-
RSpec.describe Adyen::Payment, service:
|
3
|
+
RSpec.describe Adyen::Payment, service: 'marketpay fund service' do
|
4
4
|
# client instance to be used in dynamically generated tests
|
5
5
|
client = create_client(:basic)
|
6
6
|
|
7
7
|
# methods / values to test for
|
8
8
|
# format is defined in spec_helper
|
9
9
|
test_sets = [
|
10
|
-
[
|
11
|
-
[
|
12
|
-
[
|
13
|
-
[
|
14
|
-
[
|
15
|
-
[
|
16
|
-
[
|
10
|
+
%w[payout_account_holder pspReference 9915090894325643],
|
11
|
+
%w[account_holder_balance pspReference 9914719436100053],
|
12
|
+
%w[account_holder_transaction_list pspReference 9914721175530029],
|
13
|
+
%w[refund_not_paid_out_transfers pspReference 9915090894215323],
|
14
|
+
%w[setup_beneficiary pspReference 9914860354282596],
|
15
|
+
%w[transfer_funds pspReference 9915090893984580],
|
16
|
+
%w[refund_funds_transfer pspReference 9915090893984580]
|
17
17
|
]
|
18
18
|
|
19
|
-
generate_tests(client,
|
19
|
+
generate_tests(client, 'Fund', test_sets, client.marketpay.fund)
|
20
20
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# rubocop:disable Lint/ConstantDefinitionInBlock
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
|
3
5
|
RSpec.describe Adyen::HashWithAccessors do
|
@@ -19,15 +21,24 @@ RSpec.describe Adyen::HashWithAccessors do
|
|
19
21
|
end
|
20
22
|
|
21
23
|
it 'complains if there are arguments for the accessor' do
|
22
|
-
expect
|
23
|
-
|
24
|
+
expect do
|
25
|
+
subject.arbitrary_accessor(1)
|
26
|
+
end.to raise_error(ArgumentError, 'wrong number of arguments (given 1, expected 0)')
|
27
|
+
expect do
|
28
|
+
subject.arbitrary_accessor(1, 2)
|
29
|
+
end.to raise_error(ArgumentError, 'wrong number of arguments (given 2, expected 0)')
|
24
30
|
end
|
25
31
|
|
26
32
|
it 'complains if there are arguments for the accessor =' do
|
27
33
|
# using send because i'm not sure how to do this wrong with normal ruby setter calling.
|
28
34
|
# just here for completeness
|
29
|
-
expect
|
30
|
-
|
35
|
+
expect do
|
36
|
+
subject.send(:arbitrary_accessor=)
|
37
|
+
end.to raise_error(ArgumentError, 'wrong number of arguments (given 0, expected 1)')
|
38
|
+
expect do
|
39
|
+
subject.send(:arbitrary_accessor=, 1,
|
40
|
+
2)
|
41
|
+
end.to raise_error(ArgumentError, 'wrong number of arguments (given 2, expected 1)')
|
31
42
|
end
|
32
43
|
|
33
44
|
it 'responds to the accessor' do
|
@@ -84,8 +95,7 @@ RSpec.describe Adyen::HashWithAccessors do
|
|
84
95
|
|
85
96
|
before(:all) do
|
86
97
|
class Hash
|
87
|
-
def called_super(*args)
|
88
|
-
end
|
98
|
+
def called_super(*args); end
|
89
99
|
|
90
100
|
def method_missing(*args)
|
91
101
|
called_super(:method_missing, *args)
|
@@ -118,10 +128,10 @@ RSpec.describe Adyen::HashWithAccessors do
|
|
118
128
|
expect(subject).to receive(:called_super).with(:method_missing, :something_else)
|
119
129
|
expect { subject.something_else }.to raise_error(NoMethodError)
|
120
130
|
end
|
121
|
-
|
122
131
|
end
|
123
132
|
|
124
133
|
it "doesn't modify all hashes" do
|
125
|
-
expect { {a: 1}.a }.to raise_error(NoMethodError)
|
134
|
+
expect { { a: 1 }.a }.to raise_error(NoMethodError)
|
126
135
|
end
|
127
136
|
end
|
137
|
+
# rubocop:enable Lint/ConstantDefinitionInBlock
|
data/spec/hop_spec.rb
CHANGED
@@ -1,14 +1,14 @@
|
|
1
|
-
require
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
|
-
RSpec.describe Adyen::Payment, service:
|
3
|
+
RSpec.describe Adyen::Payment, service: 'marketpay hop service' do
|
4
4
|
# client instance to be used in dynamically generated tests
|
5
5
|
client = create_client(:basic)
|
6
6
|
|
7
7
|
# methods / values to test for
|
8
8
|
# format is defined in spec_helper
|
9
9
|
test_sets = [
|
10
|
-
[
|
10
|
+
%w[get_onboarding_url pspReference 8815850625171183]
|
11
11
|
]
|
12
12
|
|
13
|
-
generate_tests(client,
|
13
|
+
generate_tests(client, 'Hop', test_sets, client.marketpay.hop)
|
14
14
|
end
|
data/spec/lem_spec.rb
CHANGED
@@ -1,68 +1,63 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'json'
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
RSpec.describe Adyen::LegalEntityManagement, service: "LegalEntityManagement" do
|
4
|
+
RSpec.describe Adyen::LegalEntityManagement, service: 'LegalEntityManagement' do
|
7
5
|
before(:all) do
|
8
6
|
@shared_values = {
|
9
7
|
client: create_client(:api_key),
|
10
|
-
service:
|
8
|
+
service: 'LegalEntityManagement'
|
11
9
|
}
|
12
10
|
end
|
13
11
|
|
14
12
|
# must be created manually because every field in the response is an array
|
15
|
-
it
|
16
|
-
request_body = JSON.parse(json_from_file(
|
17
|
-
|
18
|
-
response_body = json_from_file(
|
19
|
-
|
20
|
-
url = @shared_values[:client].service_url(@shared_values[:service],
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
13
|
+
it 'makes a business_lines POST call' do
|
14
|
+
request_body = JSON.parse(json_from_file('mocks/requests/LegalEntityManagement/create_business_line.json'))
|
15
|
+
|
16
|
+
response_body = json_from_file('mocks/responses/LegalEntityManagement/create_business_line.json')
|
17
|
+
|
18
|
+
url = @shared_values[:client].service_url(@shared_values[:service], 'businessLines',
|
19
|
+
@shared_values[:client].legal_entity_management.version)
|
20
|
+
WebMock.stub_request(:post, url)
|
21
|
+
.with(
|
22
|
+
body: request_body,
|
23
|
+
headers: {
|
24
|
+
'x-api-key' => @shared_values[:client].api_key
|
25
|
+
}
|
26
|
+
)
|
27
|
+
.to_return(
|
28
|
+
body: response_body
|
29
|
+
)
|
31
30
|
|
32
31
|
result = @shared_values[:client].legal_entity_management.business_lines_api.create_business_line(request_body)
|
33
32
|
response_hash = result.response
|
34
33
|
|
35
|
-
expect(result.status)
|
36
|
-
to eq(200)
|
37
|
-
expect(response_hash)
|
38
|
-
to eq(JSON.parse(response_body))
|
39
|
-
expect(response_hash)
|
40
|
-
to be_a Adyen::HashWithAccessors
|
41
|
-
expect(response_hash)
|
42
|
-
to be_a_kind_of Hash
|
34
|
+
expect(result.status)
|
35
|
+
.to eq(200)
|
36
|
+
expect(response_hash)
|
37
|
+
.to eq(JSON.parse(response_body))
|
38
|
+
expect(response_hash)
|
39
|
+
.to be_a Adyen::HashWithAccessors
|
40
|
+
expect(response_hash)
|
41
|
+
.to be_a_kind_of Hash
|
43
42
|
end
|
44
43
|
|
45
|
-
it
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
)
|
44
|
+
it 'makes a documents DELETE call' do
|
45
|
+
url = @shared_values[:client].service_url(@shared_values[:service], 'documents/123',
|
46
|
+
@shared_values[:client].legal_entity_management.version)
|
47
|
+
WebMock.stub_request(:delete, url)
|
48
|
+
.with(
|
49
|
+
headers: {
|
50
|
+
'x-api-key' => @shared_values[:client].api_key
|
51
|
+
}
|
52
|
+
)
|
53
|
+
.to_return(
|
54
|
+
body: '{}'
|
55
|
+
)
|
58
56
|
|
59
57
|
result = @shared_values[:client].legal_entity_management.documents_api.delete_document('123')
|
60
|
-
|
58
|
+
result.response
|
61
59
|
|
62
|
-
|
63
|
-
to eq(200)
|
60
|
+
expect(result.status)
|
61
|
+
.to eq(200)
|
64
62
|
end
|
65
|
-
|
66
|
-
|
67
63
|
end
|
68
|
-
|