adyen-ruby-api-library 7.0.0 → 7.0.2
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.
- 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
|
-
|