mangopay-v4 4.0.0 → 4.0.1
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 +5 -5
- data/.gitignore +29 -29
- data/.rspec +3 -3
- data/.rubocop.yml +1 -1
- data/.travis.yml +21 -13
- data/Gemfile +2 -2
- data/LICENSE +20 -20
- data/README.md +379 -379
- data/bin/mangopay +9 -9
- data/lib/mangopay.rb +132 -132
- data/lib/mangopay/api/api.rb +8 -8
- data/lib/mangopay/api/api_methods.rb +160 -136
- data/lib/mangopay/api/auth_token_manager.rb +173 -173
- data/lib/mangopay/api/http_client.rb +324 -324
- data/lib/mangopay/api/service/bank_accounts.rb +145 -145
- data/lib/mangopay/api/service/banking_aliases.rb +83 -0
- data/lib/mangopay/api/service/cards.rb +151 -151
- data/lib/mangopay/api/service/client_wallets.rb +88 -88
- data/lib/mangopay/api/service/clients.rb +67 -67
- data/lib/mangopay/api/service/dispute_documents.rb +157 -157
- data/lib/mangopay/api/service/disputes.rb +186 -186
- data/lib/mangopay/api/service/e_money.rb +63 -41
- data/lib/mangopay/api/service/events.rb +46 -46
- data/lib/mangopay/api/service/hooks.rb +92 -92
- data/lib/mangopay/api/service/kyc_documents.rb +152 -152
- data/lib/mangopay/api/service/mandates.rb +141 -141
- data/lib/mangopay/api/service/oauth_tokens.rb +24 -24
- data/lib/mangopay/api/service/pay_ins.rb +369 -259
- data/lib/mangopay/api/service/pay_outs.rb +53 -53
- data/lib/mangopay/api/service/pre_authorizations.rb +126 -68
- data/lib/mangopay/api/service/refunds.rb +159 -61
- data/lib/mangopay/api/service/reports.rb +150 -150
- data/lib/mangopay/api/service/repudiations.rb +31 -31
- data/lib/mangopay/api/service/responses.rb +101 -101
- data/lib/mangopay/api/service/settlement_transfers.rb +54 -54
- data/lib/mangopay/api/service/transactions.rb +246 -182
- data/lib/mangopay/api/service/transfers.rb +53 -53
- data/lib/mangopay/api/service/ubo_declarations.rb +94 -69
- data/lib/mangopay/api/service/users.rb +162 -162
- data/lib/mangopay/api/service/wallets.rb +98 -98
- data/lib/mangopay/api/uri_provider.rb +32 -34
- data/lib/mangopay/common/json_tag_converter.rb +70 -67
- data/lib/mangopay/common/jsonifier.rb +266 -248
- data/lib/mangopay/common/log_provider.rb +33 -33
- data/lib/mangopay/common/rate_limit_interval.rb +16 -16
- data/lib/mangopay/common/read_only_fields.rb +26 -26
- data/lib/mangopay/common/response_error.rb +61 -61
- data/lib/mangopay/common/sort_direction.rb +14 -14
- data/lib/mangopay/common/sort_field.rb +12 -12
- data/lib/mangopay/common/template_url_options.rb +8 -8
- data/lib/mangopay/configuration.rb +38 -38
- data/lib/mangopay/environment.rb +65 -65
- data/lib/mangopay/model/address.rb +26 -26
- data/lib/mangopay/model/billing.rb +13 -0
- data/lib/mangopay/model/birthplace.rb +15 -0
- data/lib/mangopay/model/declared_ubo.rb +20 -20
- data/lib/mangopay/model/dispute_reason.rb +14 -14
- data/lib/mangopay/model/document_page_consult.rb +14 -14
- data/lib/mangopay/model/e_money.rb +17 -17
- data/lib/mangopay/model/entity/account/bank_account.rb +25 -25
- data/lib/mangopay/model/entity/account/ca_bank_account.rb +26 -26
- data/lib/mangopay/model/entity/account/debited_bank_account.rb +31 -0
- data/lib/mangopay/model/entity/account/gb_bank_account.rb +20 -20
- data/lib/mangopay/model/entity/account/iban_bank_account.rb +20 -20
- data/lib/mangopay/model/entity/account/other_bank_account.rb +23 -23
- data/lib/mangopay/model/entity/account/us_bank_account.rb +23 -23
- data/lib/mangopay/model/entity/banking_alias.rb +27 -0
- data/lib/mangopay/model/entity/card.rb +44 -44
- data/lib/mangopay/model/entity/card_registration.rb +42 -42
- data/lib/mangopay/model/entity/client.rb +65 -62
- data/lib/mangopay/model/entity/client_wallet.rb +22 -22
- data/lib/mangopay/model/entity/dispute.rb +49 -49
- data/lib/mangopay/model/entity/dispute_document.rb +28 -28
- data/lib/mangopay/model/entity/entity_base.rb +17 -17
- data/lib/mangopay/model/entity/hook.rb +25 -25
- data/lib/mangopay/model/entity/kyc_document.rb +27 -27
- data/lib/mangopay/model/entity/mandate.rb +50 -50
- data/lib/mangopay/model/entity/pay_in/apple_pay_direct_pay_in.rb +26 -0
- data/lib/mangopay/model/entity/pay_in/bank_wire_direct_pay_in.rb +24 -21
- data/lib/mangopay/model/entity/pay_in/bank_wire_external_instruction_pay_in.rb +19 -0
- data/lib/mangopay/model/entity/pay_in/card_direct_pay_in.rb +41 -32
- data/lib/mangopay/model/entity/pay_in/card_pre_authorized_pay_in.rb +15 -12
- data/lib/mangopay/model/entity/pay_in/card_web_pay_in.rb +36 -39
- data/lib/mangopay/model/entity/pay_in/direct_debit_direct_pay_in.rb +25 -22
- data/lib/mangopay/model/entity/pay_in/direct_debit_web_pay_in.rb +37 -37
- data/lib/mangopay/model/entity/pay_in/google_pay_direct_pay_in.rb +28 -0
- data/lib/mangopay/model/entity/pay_in/pay_in.rb +18 -15
- data/lib/mangopay/model/entity/pay_in/paypal_web_pay_in.rb +15 -0
- data/lib/mangopay/model/entity/pay_out.rb +21 -21
- data/lib/mangopay/model/entity/pre_authorization.rb +74 -67
- data/lib/mangopay/model/entity/refund.rb +17 -17
- data/lib/mangopay/model/entity/report.rb +50 -50
- data/lib/mangopay/model/entity/repudiation.rb +17 -17
- data/lib/mangopay/model/entity/settlement_transfer.rb +16 -16
- data/lib/mangopay/model/entity/transaction.rb +51 -51
- data/lib/mangopay/model/entity/transfer.rb +12 -12
- data/lib/mangopay/model/entity/ubo.rb +30 -0
- data/lib/mangopay/model/entity/ubo_declaration.rb +29 -31
- data/lib/mangopay/model/entity/user/legal_user.rb +55 -52
- data/lib/mangopay/model/entity/user/natural_user.rb +49 -49
- data/lib/mangopay/model/entity/user/user.rb +17 -17
- data/lib/mangopay/model/entity/wallet.rb +27 -27
- data/lib/mangopay/model/enum/account_type.rb +23 -23
- data/lib/mangopay/model/enum/avs_result.rb +19 -0
- data/lib/mangopay/model/enum/banking_alias_type.rb +12 -0
- data/lib/mangopay/model/enum/business_type.rb +17 -0
- data/lib/mangopay/model/enum/card_status.rb +14 -14
- data/lib/mangopay/model/enum/card_type.rb +32 -32
- data/lib/mangopay/model/enum/card_validity.rb +18 -18
- data/lib/mangopay/model/enum/country_iso.rb +758 -758
- data/lib/mangopay/model/enum/culture_code.rb +43 -43
- data/lib/mangopay/model/enum/currency_iso.rb +551 -551
- data/lib/mangopay/model/enum/declared_ubo_refused_reason_type.rb +15 -15
- data/lib/mangopay/model/enum/declared_ubo_status.rb +17 -17
- data/lib/mangopay/model/enum/deposit_type.rb +14 -14
- data/lib/mangopay/model/enum/direct_debit_type.rb +12 -12
- data/lib/mangopay/model/enum/dispute_doc_refused_reason_type.rb +24 -24
- data/lib/mangopay/model/enum/dispute_document_type.rb +22 -22
- data/lib/mangopay/model/enum/dispute_reason_type.rb +32 -32
- data/lib/mangopay/model/enum/dispute_status.rb +20 -20
- data/lib/mangopay/model/enum/dispute_type.rb +14 -14
- data/lib/mangopay/model/enum/document_status.rb +20 -20
- data/lib/mangopay/model/enum/download_format.rb +10 -10
- data/lib/mangopay/model/enum/event_type.rb +76 -73
- data/lib/mangopay/model/enum/funds_type.rb +14 -14
- data/lib/mangopay/model/enum/hook_status.rb +12 -12
- data/lib/mangopay/model/enum/hook_validity.rb +14 -14
- data/lib/mangopay/model/enum/income_range.rb +20 -20
- data/lib/mangopay/model/enum/kyc_doc_refused_reason_type.rb +36 -36
- data/lib/mangopay/model/enum/kyc_document_type.rb +18 -18
- data/lib/mangopay/model/enum/kyc_level.rb +12 -12
- data/lib/mangopay/model/enum/legal_person_type.rb +14 -14
- data/lib/mangopay/model/enum/mandate_culture_code.rb +22 -22
- data/lib/mangopay/model/enum/mandate_execution_type.rb +10 -10
- data/lib/mangopay/model/enum/mandate_scheme.rb +12 -12
- data/lib/mangopay/model/enum/mandate_status.rb +23 -23
- data/lib/mangopay/model/enum/mandate_type.rb +10 -10
- data/lib/mangopay/model/enum/natural_user_capacity.rb +14 -14
- data/lib/mangopay/model/enum/pay_in_execution_type.rb +17 -17
- data/lib/mangopay/model/enum/pay_in_payment_type.rb +29 -20
- data/lib/mangopay/model/enum/pay_out_payment_type.rb +10 -10
- data/lib/mangopay/model/enum/payment_status.rb +20 -20
- data/lib/mangopay/model/enum/person_type.rb +14 -14
- data/lib/mangopay/model/enum/platform_type.rb +22 -22
- data/lib/mangopay/model/enum/pre_authorization_execution_type.rb +10 -10
- data/lib/mangopay/model/enum/pre_authorization_status.rb +17 -17
- data/lib/mangopay/model/enum/refund_reason_type.rb +20 -20
- data/lib/mangopay/model/enum/report_status.rb +16 -16
- data/lib/mangopay/model/enum/report_type.rb +12 -12
- data/lib/mangopay/model/enum/sector.rb +29 -0
- data/lib/mangopay/model/enum/secure_mode.rb +15 -15
- data/lib/mangopay/model/enum/transaction_nature.rb +16 -16
- data/lib/mangopay/model/enum/transaction_status.rb +14 -14
- data/lib/mangopay/model/enum/transaction_type.rb +14 -14
- data/lib/mangopay/model/enum/ubo_declaration_refused_reason_type.rb +18 -18
- data/lib/mangopay/model/enum/ubo_declaration_status.rb +20 -20
- data/lib/mangopay/model/event.rb +17 -17
- data/lib/mangopay/model/model.rb +214 -193
- data/lib/mangopay/model/money.rb +16 -16
- data/lib/mangopay/model/pay_in_web_extended_view.rb +30 -30
- data/lib/mangopay/model/platform_categorization.rb +15 -0
- data/lib/mangopay/model/refund_reason.rb +14 -14
- data/lib/mangopay/model/report_filter.rb +82 -82
- data/lib/mangopay/model/request/cancel_request.rb +15 -15
- data/lib/mangopay/model/request/complete_registration_request.rb +12 -12
- data/lib/mangopay/model/request/currency_request.rb +12 -12
- data/lib/mangopay/model/request/deactivation_request.rb +9 -9
- data/lib/mangopay/model/request/filter_request.rb +37 -37
- data/lib/mangopay/model/request/submit_document_request.rb +13 -13
- data/lib/mangopay/model/request/submit_ubo_declaration_request.rb +16 -13
- data/lib/mangopay/model/request/upload_file_request.rb +8 -8
- data/lib/mangopay/model/response_replica.rb +26 -26
- data/lib/mangopay/model/security_info.rb +13 -0
- data/lib/mangopay/util/custom_formatter.rb +11 -11
- data/lib/mangopay/util/custom_logger.rb +33 -33
- data/lib/mangopay/util/enum.rb +51 -51
- data/lib/mangopay/util/file_encoder.rb +15 -15
- data/lib/mangopay/util/non_instantiable.rb +5 -5
- data/lib/mangopay/util/storage_strategy.rb +9 -9
- data/lib/mangopay/util/void_logger.rb +5 -5
- data/mangopay-v4.gemspec +32 -0
- data/mangopay.gemspec +32 -32
- data/spec/context/address_context.rb +24 -24
- data/spec/context/bank_account_context.rb +137 -137
- data/spec/context/banking_alias_context.rb +17 -0
- data/spec/context/birthplace_context.rb +17 -0
- data/spec/context/card_context.rb +45 -45
- data/spec/context/client_context.rb +43 -44
- data/spec/context/dispute_context.rb +36 -36
- data/spec/context/dispute_document_context.rb +19 -19
- data/spec/context/hook_context.rb +15 -15
- data/spec/context/kyc_document_context.rb +22 -22
- data/spec/context/mandate_context.rb +26 -26
- data/spec/context/pay_in_context.rb +319 -224
- data/spec/context/pay_out_context.rb +39 -38
- data/spec/context/pre_authorization_context.rb +44 -40
- data/spec/context/refund_context.rb +32 -32
- data/spec/context/report_context.rb +21 -21
- data/spec/context/repudiation_context.rb +18 -18
- data/spec/context/settlement_transfer_context.rb +27 -27
- data/spec/context/transfer_context.rb +50 -50
- data/spec/context/ubo_declaration_context.rb +29 -24
- data/spec/context/user_context.rb +83 -82
- data/spec/context/wallet_context.rb +52 -52
- data/spec/mangopay/bank_accounts_spec.rb +228 -228
- data/spec/mangopay/banking_alias_spec.rb +85 -0
- data/spec/mangopay/cards_spec.rb +133 -134
- data/spec/mangopay/client_wallets_spec.rb +147 -147
- data/spec/mangopay/clients_spec.rb +56 -54
- data/spec/mangopay/configuration_spec.rb +125 -125
- data/spec/mangopay/dispute_documents_spec.rb +173 -173
- data/spec/mangopay/disputes_spec.rb +264 -264
- data/spec/mangopay/e_money_spec.rb +57 -37
- data/spec/mangopay/events_spec.rb +49 -49
- data/spec/mangopay/hooks_spec.rb +70 -70
- data/spec/mangopay/kyc_documents_spec.rb +179 -179
- data/spec/mangopay/mandates_spec.rb +218 -218
- data/spec/mangopay/oauth_tokens_spec.rb +40 -40
- data/spec/mangopay/pay_ins_spec.rb +279 -180
- data/spec/mangopay/pay_outs_spec.rb +38 -38
- data/spec/mangopay/pre_authorizations_spec.rb +134 -57
- data/spec/mangopay/refunds_spec.rb +187 -39
- data/spec/mangopay/reports_spec.rb +118 -120
- data/spec/mangopay/responses_spec.rb +324 -294
- data/spec/mangopay/settlement_transfers_spec.rb +36 -36
- data/spec/mangopay/transactions_spec.rb +347 -232
- data/spec/mangopay/transfers_spec.rb +37 -37
- data/spec/mangopay/ubo_declarations_spec.rb +127 -64
- data/spec/mangopay/users_spec.rb +145 -145
- data/spec/mangopay/wallets_spec.rb +103 -103
- data/spec/spec_helper.rb +72 -72
- data/spec/tmp/MangoPay.AuthorizationToken.FileStore.tmp +6 -0
- data/spec/tmp/mangopay.log.tmp +1201 -0
- metadata +31 -5
@@ -1,55 +1,57 @@
|
|
1
|
-
require_relative '../context/client_context'
|
2
|
-
require_relative '../../lib/mangopay/api/service/clients'
|
3
|
-
require_relative '../../lib/mangopay/util/file_encoder'
|
4
|
-
|
5
|
-
describe MangoApi::Clients do
|
6
|
-
include_context 'client_context'
|
7
|
-
|
8
|
-
describe '.update' do
|
9
|
-
|
10
|
-
context 'given a valid object' do
|
11
|
-
client = CLIENT_DATA
|
12
|
-
|
13
|
-
it 'updates the corresponding entity' do
|
14
|
-
updated = MangoApi::Clients.update client
|
15
|
-
|
16
|
-
expect(updated).to be_kind_of MangoModel::Client
|
17
|
-
expect(updated.name).not_to be_nil
|
18
|
-
expect(updated.client_id).not_to be_nil
|
19
|
-
expect(updated.logo).not_to be_nil
|
20
|
-
expect(
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
expect(retrieved
|
52
|
-
|
53
|
-
|
54
|
-
|
1
|
+
require_relative '../context/client_context'
|
2
|
+
require_relative '../../lib/mangopay/api/service/clients'
|
3
|
+
require_relative '../../lib/mangopay/util/file_encoder'
|
4
|
+
|
5
|
+
describe MangoApi::Clients do
|
6
|
+
include_context 'client_context'
|
7
|
+
|
8
|
+
describe '.update' do
|
9
|
+
|
10
|
+
context 'given a valid object' do
|
11
|
+
client = CLIENT_DATA
|
12
|
+
|
13
|
+
it 'updates the corresponding entity', :focus do
|
14
|
+
updated = MangoApi::Clients.update client
|
15
|
+
|
16
|
+
expect(updated).to be_kind_of MangoModel::Client
|
17
|
+
expect(updated.name).not_to be_nil
|
18
|
+
expect(updated.client_id).not_to be_nil
|
19
|
+
expect(updated.logo).not_to be_nil
|
20
|
+
expect(updated.headquarters_phone_number).not_to be_nil
|
21
|
+
expect(its_the_same_client(client, updated)).to be_truthy
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
describe '.upload_logo' do
|
27
|
+
|
28
|
+
context "given a valid image file's path" do
|
29
|
+
path = File.join(File.dirname(__FILE__), '..', 'resources', 'logo.png')
|
30
|
+
base64_to_upload = FileEncoder.encode_base64(path)
|
31
|
+
|
32
|
+
it "uploads the image as the client's logo" do
|
33
|
+
MangoApi::Clients.upload_logo path
|
34
|
+
|
35
|
+
client = MangoApi::Clients.get
|
36
|
+
uploaded_logo_uri = URI(client.logo)
|
37
|
+
uploaded_image = MangoApi::HttpClient.get_raw(uploaded_logo_uri)
|
38
|
+
uploaded_base64 = Base64.strict_encode64(uploaded_image)
|
39
|
+
|
40
|
+
expect(base64_to_upload).to eq uploaded_base64
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
describe '.get' do
|
46
|
+
|
47
|
+
context 'from a correctly-configured environment' do
|
48
|
+
it "retrieves the environment's Client entity" do
|
49
|
+
retrieved = MangoApi::Clients.get
|
50
|
+
|
51
|
+
expect(retrieved).to be_kind_of MangoModel::Client
|
52
|
+
expect(retrieved.client_id).to eq MangoPay.configuration.client_id
|
53
|
+
expect(retrieved.platform_categorization).to be_kind_of MangoModel::PlatformCategorization
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
55
57
|
end
|
@@ -1,126 +1,126 @@
|
|
1
|
-
require_relative '../spec_helper'
|
2
|
-
require_relative '../../lib/mangopay'
|
3
|
-
require_relative '../../lib/mangopay/api/service/users'
|
4
|
-
require_relative '../../lib/mangopay/model/entity/user/natural_user'
|
5
|
-
|
6
|
-
describe MangoPay::Configuration do
|
7
|
-
|
8
|
-
let(:thread_environment_hash) { retrieve_thread_env_hash }
|
9
|
-
|
10
|
-
after :all do
|
11
|
-
MangoPay.use_default
|
12
|
-
reconfig_mangopay
|
13
|
-
end
|
14
|
-
|
15
|
-
context 'without specifying environment' do
|
16
|
-
|
17
|
-
it 'automatically runs on :default environment' do
|
18
|
-
expect(MangoPay.environment.id).to be :default
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
context 'when specifying multiple environments' do
|
23
|
-
describe 'storing configurations' do
|
24
|
-
CLIENT_ID1 = 'CLIENT_ID1'.freeze
|
25
|
-
CLIENT_ID2 = 'CLIENT_ID2'.freeze
|
26
|
-
CLIENT_PASS1 = 'CLIENT_PASS1'.freeze
|
27
|
-
CLIENT_PASS2 = 'CLIENT_PASS2'.freeze
|
28
|
-
|
29
|
-
it 'is done environment-specifically' do
|
30
|
-
MangoPay.use_environment :env1
|
31
|
-
MangoPay.configure do |config|
|
32
|
-
config.client_id = CLIENT_ID1
|
33
|
-
config.
|
34
|
-
end
|
35
|
-
MangoPay.use_environment :env2
|
36
|
-
MangoPay.configure do |config|
|
37
|
-
config.client_id = CLIENT_ID2
|
38
|
-
config.
|
39
|
-
end
|
40
|
-
|
41
|
-
MangoPay.use_environment :env1
|
42
|
-
config = MangoPay.configuration
|
43
|
-
expect(config.client_id).to be CLIENT_ID1
|
44
|
-
expect(config.
|
45
|
-
|
46
|
-
MangoPay.use_environment :env2
|
47
|
-
config = MangoPay.configuration
|
48
|
-
expect(config.client_id).to be CLIENT_ID2
|
49
|
-
expect(config.
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
context 'across multiple threads' do
|
54
|
-
describe 'switching environments' do
|
55
|
-
|
56
|
-
it 'is done thread-independently' do
|
57
|
-
MangoPay.use_environment :env1
|
58
|
-
thread = Thread.new do
|
59
|
-
MangoPay.use_environment :env2
|
60
|
-
expect(MangoPay.environment.id).to be :env2
|
61
|
-
end
|
62
|
-
thread.join
|
63
|
-
expect(MangoPay.environment.id).to be :env1
|
64
|
-
# allow background threads to terminate
|
65
|
-
sleep 0.05
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
describe 'new thread-to-environment mappings' do
|
70
|
-
it 'live only as long as the threads' do
|
71
|
-
thread = Thread.new do
|
72
|
-
MangoPay.use_environment :env1
|
73
|
-
thread_id = Thread.current.object_id
|
74
|
-
expect(thread_environment_hash[thread_id]).to be :env1
|
75
|
-
end
|
76
|
-
thread.join
|
77
|
-
# allow any post-thread-death actions to execute
|
78
|
-
sleep 0.05
|
79
|
-
expect(thread_environment_hash[thread.object_id]).to be_nil
|
80
|
-
end
|
81
|
-
|
82
|
-
context 'unless environment is switched' do
|
83
|
-
it 'are to the same environment' do
|
84
|
-
MangoPay.use_environment :env1
|
85
|
-
|
86
|
-
thread_id = Thread.current.object_id
|
87
|
-
expect(thread_environment_hash[thread_id]).to be :env1
|
88
|
-
|
89
|
-
thread = Thread.new do
|
90
|
-
# request an environment to be assigned to thread
|
91
|
-
MangoPay.environment
|
92
|
-
thread_id = Thread.current.object_id
|
93
|
-
expect(thread_environment_hash[thread_id]).to be :env1
|
94
|
-
end
|
95
|
-
thread.join
|
96
|
-
|
97
|
-
MangoPay.use_environment :env2
|
98
|
-
|
99
|
-
thread_id = Thread.current.object_id
|
100
|
-
expect(thread_environment_hash[thread_id]).to be :env2
|
101
|
-
|
102
|
-
thread = Thread.new do
|
103
|
-
MangoPay.environment
|
104
|
-
thread_id = Thread.current.object_id
|
105
|
-
expect(thread_environment_hash[thread_id]).to be :env2
|
106
|
-
end
|
107
|
-
thread.join
|
108
|
-
# allow background threads to terminate
|
109
|
-
sleep 0.05
|
110
|
-
end
|
111
|
-
end
|
112
|
-
end
|
113
|
-
end
|
114
|
-
end
|
115
|
-
end
|
116
|
-
|
117
|
-
# Gets the thread-to-environment ID hash from the MangoPay module.
|
118
|
-
#
|
119
|
-
# noinspection RubyResolve
|
120
|
-
def retrieve_thread_env_hash
|
121
|
-
result = nil
|
122
|
-
MangoPay.instance_eval do
|
123
|
-
result = @env_id
|
124
|
-
end
|
125
|
-
result
|
1
|
+
require_relative '../spec_helper'
|
2
|
+
require_relative '../../lib/mangopay'
|
3
|
+
require_relative '../../lib/mangopay/api/service/users'
|
4
|
+
require_relative '../../lib/mangopay/model/entity/user/natural_user'
|
5
|
+
|
6
|
+
describe MangoPay::Configuration do
|
7
|
+
|
8
|
+
let(:thread_environment_hash) { retrieve_thread_env_hash }
|
9
|
+
|
10
|
+
after :all do
|
11
|
+
MangoPay.use_default
|
12
|
+
reconfig_mangopay
|
13
|
+
end
|
14
|
+
|
15
|
+
context 'without specifying environment' do
|
16
|
+
|
17
|
+
it 'automatically runs on :default environment' do
|
18
|
+
expect(MangoPay.environment.id).to be :default
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
context 'when specifying multiple environments' do
|
23
|
+
describe 'storing configurations' do
|
24
|
+
CLIENT_ID1 = 'CLIENT_ID1'.freeze
|
25
|
+
CLIENT_ID2 = 'CLIENT_ID2'.freeze
|
26
|
+
CLIENT_PASS1 = 'CLIENT_PASS1'.freeze
|
27
|
+
CLIENT_PASS2 = 'CLIENT_PASS2'.freeze
|
28
|
+
|
29
|
+
it 'is done environment-specifically' do
|
30
|
+
MangoPay.use_environment :env1
|
31
|
+
MangoPay.configure do |config|
|
32
|
+
config.client_id = CLIENT_ID1
|
33
|
+
config.client_apiKey = CLIENT_PASS1
|
34
|
+
end
|
35
|
+
MangoPay.use_environment :env2
|
36
|
+
MangoPay.configure do |config|
|
37
|
+
config.client_id = CLIENT_ID2
|
38
|
+
config.client_apiKey = CLIENT_PASS2
|
39
|
+
end
|
40
|
+
|
41
|
+
MangoPay.use_environment :env1
|
42
|
+
config = MangoPay.configuration
|
43
|
+
expect(config.client_id).to be CLIENT_ID1
|
44
|
+
expect(config.client_apiKey).to be CLIENT_PASS1
|
45
|
+
|
46
|
+
MangoPay.use_environment :env2
|
47
|
+
config = MangoPay.configuration
|
48
|
+
expect(config.client_id).to be CLIENT_ID2
|
49
|
+
expect(config.client_apiKey).to be CLIENT_PASS2
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
context 'across multiple threads' do
|
54
|
+
describe 'switching environments' do
|
55
|
+
|
56
|
+
it 'is done thread-independently' do
|
57
|
+
MangoPay.use_environment :env1
|
58
|
+
thread = Thread.new do
|
59
|
+
MangoPay.use_environment :env2
|
60
|
+
expect(MangoPay.environment.id).to be :env2
|
61
|
+
end
|
62
|
+
thread.join
|
63
|
+
expect(MangoPay.environment.id).to be :env1
|
64
|
+
# allow background threads to terminate
|
65
|
+
sleep 0.05
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
describe 'new thread-to-environment mappings' do
|
70
|
+
it 'live only as long as the threads' do
|
71
|
+
thread = Thread.new do
|
72
|
+
MangoPay.use_environment :env1
|
73
|
+
thread_id = Thread.current.object_id
|
74
|
+
expect(thread_environment_hash[thread_id]).to be :env1
|
75
|
+
end
|
76
|
+
thread.join
|
77
|
+
# allow any post-thread-death actions to execute
|
78
|
+
sleep 0.05
|
79
|
+
expect(thread_environment_hash[thread.object_id]).to be_nil
|
80
|
+
end
|
81
|
+
|
82
|
+
context 'unless environment is switched' do
|
83
|
+
it 'are to the same environment' do
|
84
|
+
MangoPay.use_environment :env1
|
85
|
+
|
86
|
+
thread_id = Thread.current.object_id
|
87
|
+
expect(thread_environment_hash[thread_id]).to be :env1
|
88
|
+
|
89
|
+
thread = Thread.new do
|
90
|
+
# request an environment to be assigned to thread
|
91
|
+
MangoPay.environment
|
92
|
+
thread_id = Thread.current.object_id
|
93
|
+
expect(thread_environment_hash[thread_id]).to be :env1
|
94
|
+
end
|
95
|
+
thread.join
|
96
|
+
|
97
|
+
MangoPay.use_environment :env2
|
98
|
+
|
99
|
+
thread_id = Thread.current.object_id
|
100
|
+
expect(thread_environment_hash[thread_id]).to be :env2
|
101
|
+
|
102
|
+
thread = Thread.new do
|
103
|
+
MangoPay.environment
|
104
|
+
thread_id = Thread.current.object_id
|
105
|
+
expect(thread_environment_hash[thread_id]).to be :env2
|
106
|
+
end
|
107
|
+
thread.join
|
108
|
+
# allow background threads to terminate
|
109
|
+
sleep 0.05
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
# Gets the thread-to-environment ID hash from the MangoPay module.
|
118
|
+
#
|
119
|
+
# noinspection RubyResolve
|
120
|
+
def retrieve_thread_env_hash
|
121
|
+
result = nil
|
122
|
+
MangoPay.instance_eval do
|
123
|
+
result = @env_id
|
124
|
+
end
|
125
|
+
result
|
126
126
|
end
|
@@ -1,174 +1,174 @@
|
|
1
|
-
require_relative '../../lib/mangopay/api/service/dispute_documents'
|
2
|
-
require_relative '../context/dispute_document_context'
|
3
|
-
require_relative '../../lib/mangopay/common/sort_field'
|
4
|
-
require_relative '../../lib/mangopay/common/sort_direction'
|
5
|
-
|
6
|
-
describe MangoApi::DisputeDocuments do
|
7
|
-
include_context 'dispute_document_context'
|
8
|
-
|
9
|
-
describe '.create' do
|
10
|
-
|
11
|
-
context 'given a valid object' do
|
12
|
-
id = DISPUTE_PERSISTED.id
|
13
|
-
document = DISPUTE_DOCUMENT_DATA
|
14
|
-
|
15
|
-
it 'creates the dispute document entity' do
|
16
|
-
expect { MangoApi::DisputeDocuments.create(document, id) }.to(raise_error { |err|
|
17
|
-
expect(err).to be_kind_of MangoPay::ResponseError
|
18
|
-
expect(err.type).to eq 'dispute_can_not_currently_accept_documents'
|
19
|
-
})
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
describe '.upload_page' do
|
25
|
-
|
26
|
-
context "given a valid file's path" do
|
27
|
-
path = File.join(File.dirname(__FILE__), '..', 'resources', 'test_pdf.pdf')
|
28
|
-
|
29
|
-
it "uploads the file as one of the dispute document's pages" do
|
30
|
-
expect do
|
31
|
-
MangoApi::DisputeDocuments.upload_page(DISPUTE_DOCUMENT_PERSISTED.id,
|
32
|
-
DISPUTE_DOCUMENT_PERSISTED.dispute_id,
|
33
|
-
path)
|
34
|
-
end.to(raise_error do |err|
|
35
|
-
expect(err).to be_kind_of MangoPay::ResponseError
|
36
|
-
expect(err.type).to eq 'dispute_can_not_currently_accept_documents'
|
37
|
-
end)
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
describe '.submit' do
|
43
|
-
|
44
|
-
context "given an existing entity's ID" do
|
45
|
-
created = DISPUTE_DOCUMENT_PERSISTED
|
46
|
-
id = created.id
|
47
|
-
|
48
|
-
it 'submits the corresponding entity for approval' do
|
49
|
-
expect { MangoApi::DisputeDocuments.submit(id, created.dispute_id) }.to(raise_error do |err|
|
50
|
-
expect(err).to be_kind_of MangoPay::ResponseError
|
51
|
-
expect(err.type).to eq 'cant_validate_empty_document'
|
52
|
-
end)
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
describe '.get' do
|
58
|
-
|
59
|
-
context "given an existing entity's ID" do
|
60
|
-
document = DISPUTE_DOCUMENT_PERSISTED
|
61
|
-
id = document.id
|
62
|
-
|
63
|
-
it 'retrieves the corresponding entity' do
|
64
|
-
retrieved = MangoApi::DisputeDocuments.get id
|
65
|
-
|
66
|
-
expect(retrieved).to be_kind_of MangoModel::DisputeDocument
|
67
|
-
expect(retrieved.id).to eq id
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
describe '.of_dispute' do
|
73
|
-
|
74
|
-
context "given an existing dispute entity's ID" do
|
75
|
-
id = DISPUTE_PERSISTED.id
|
76
|
-
|
77
|
-
context 'not having specified filters' do
|
78
|
-
it 'retrieves list with default parameters' do
|
79
|
-
results = MangoApi::DisputeDocuments.of_dispute id
|
80
|
-
|
81
|
-
expect(results).to be_kind_of Array
|
82
|
-
results.each do |result|
|
83
|
-
expect(result).to be_kind_of MangoModel::DisputeDocument
|
84
|
-
expect(result.id).not_to be_nil
|
85
|
-
end
|
86
|
-
end
|
87
|
-
end
|
88
|
-
|
89
|
-
context 'having specified filters' do
|
90
|
-
per_page = 5
|
91
|
-
|
92
|
-
it 'retrieves a list with specified parameters' do
|
93
|
-
results = MangoApi::DisputeDocuments.of_dispute id do |filter|
|
94
|
-
filter.page = 1
|
95
|
-
filter.per_page = per_page
|
96
|
-
filter.sort_field = MangoPay::SortField::CREATION_DATE
|
97
|
-
filter.sort_direction = MangoPay::SortDirection::DESC
|
98
|
-
end
|
99
|
-
|
100
|
-
expect(results).to be_kind_of Array
|
101
|
-
expect(results.length).to eq per_page
|
102
|
-
results.each.with_index do |result, index|
|
103
|
-
expect(result).to be_kind_of MangoModel::DisputeDocument
|
104
|
-
expect(result.id).not_to be_nil
|
105
|
-
next if index == results.length - 1
|
106
|
-
first_date = result.creation_date
|
107
|
-
second_date = results[index + 1].creation_date
|
108
|
-
expect(first_date >= second_date).to be_truthy
|
109
|
-
end
|
110
|
-
end
|
111
|
-
end
|
112
|
-
end
|
113
|
-
end
|
114
|
-
|
115
|
-
describe '.all' do
|
116
|
-
|
117
|
-
context 'from a correctly-configured environment' do
|
118
|
-
context 'not having specified filters' do
|
119
|
-
default_per_page = 10
|
120
|
-
|
121
|
-
it 'retrieves list with default parameters' do
|
122
|
-
results = MangoApi::DisputeDocuments.all
|
123
|
-
|
124
|
-
expect(results).to be_kind_of Array
|
125
|
-
expect(results.length).to eq default_per_page
|
126
|
-
results.each do |result|
|
127
|
-
expect(result).to be_kind_of MangoModel::DisputeDocument
|
128
|
-
expect(result.id).not_to be_nil
|
129
|
-
end
|
130
|
-
end
|
131
|
-
end
|
132
|
-
|
133
|
-
context 'having specified filters' do
|
134
|
-
per_page = 11
|
135
|
-
|
136
|
-
it 'retrieves list with specified parameters' do
|
137
|
-
results = MangoApi::DisputeDocuments.all do |filter|
|
138
|
-
filter.page = 1
|
139
|
-
filter.per_page = per_page
|
140
|
-
filter.sort_field = MangoPay::SortField::CREATION_DATE
|
141
|
-
filter.sort_direction = MangoPay::SortDirection::DESC
|
142
|
-
end
|
143
|
-
|
144
|
-
expect(results).to be_kind_of Array
|
145
|
-
expect(results.length).to eq per_page
|
146
|
-
results.each.with_index do |result, index|
|
147
|
-
expect(result).to be_kind_of MangoModel::DisputeDocument
|
148
|
-
expect(result.id).not_to be_nil
|
149
|
-
next if index == results.length - 1
|
150
|
-
first_date = result.creation_date
|
151
|
-
second_date = results[index + 1].creation_date
|
152
|
-
expect(first_date >= second_date).to be_truthy
|
153
|
-
end
|
154
|
-
end
|
155
|
-
end
|
156
|
-
end
|
157
|
-
end
|
158
|
-
|
159
|
-
describe '.consult' do
|
160
|
-
|
161
|
-
context "given an existing entity's ID" do
|
162
|
-
id = DISPUTE_DOCUMENT_PERSISTED.id
|
163
|
-
|
164
|
-
it 'creates the document page consult entities' do
|
165
|
-
results = MangoApi::DisputeDocuments.consult id
|
166
|
-
|
167
|
-
expect(results).to be_kind_of Array
|
168
|
-
results.each do |result|
|
169
|
-
expect(result).to be_kind_of MangoModel::DocumentPageConsult
|
170
|
-
end
|
171
|
-
end
|
172
|
-
end
|
173
|
-
end
|
1
|
+
require_relative '../../lib/mangopay/api/service/dispute_documents'
|
2
|
+
require_relative '../context/dispute_document_context'
|
3
|
+
require_relative '../../lib/mangopay/common/sort_field'
|
4
|
+
require_relative '../../lib/mangopay/common/sort_direction'
|
5
|
+
|
6
|
+
describe MangoApi::DisputeDocuments do
|
7
|
+
include_context 'dispute_document_context'
|
8
|
+
|
9
|
+
describe '.create' do
|
10
|
+
|
11
|
+
context 'given a valid object' do
|
12
|
+
id = DISPUTE_PERSISTED.id
|
13
|
+
document = DISPUTE_DOCUMENT_DATA
|
14
|
+
|
15
|
+
it 'creates the dispute document entity' do
|
16
|
+
expect { MangoApi::DisputeDocuments.create(document, id) }.to(raise_error { |err|
|
17
|
+
expect(err).to be_kind_of MangoPay::ResponseError
|
18
|
+
expect(err.type).to eq 'dispute_can_not_currently_accept_documents'
|
19
|
+
})
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
describe '.upload_page' do
|
25
|
+
|
26
|
+
context "given a valid file's path" do
|
27
|
+
path = File.join(File.dirname(__FILE__), '..', 'resources', 'test_pdf.pdf')
|
28
|
+
|
29
|
+
it "uploads the file as one of the dispute document's pages" do
|
30
|
+
expect do
|
31
|
+
MangoApi::DisputeDocuments.upload_page(DISPUTE_DOCUMENT_PERSISTED.id,
|
32
|
+
DISPUTE_DOCUMENT_PERSISTED.dispute_id,
|
33
|
+
path)
|
34
|
+
end.to(raise_error do |err|
|
35
|
+
expect(err).to be_kind_of MangoPay::ResponseError
|
36
|
+
expect(err.type).to eq 'dispute_can_not_currently_accept_documents'
|
37
|
+
end)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
describe '.submit' do
|
43
|
+
|
44
|
+
context "given an existing entity's ID" do
|
45
|
+
created = DISPUTE_DOCUMENT_PERSISTED
|
46
|
+
id = created.id
|
47
|
+
|
48
|
+
it 'submits the corresponding entity for approval' do
|
49
|
+
expect { MangoApi::DisputeDocuments.submit(id, created.dispute_id) }.to(raise_error do |err|
|
50
|
+
expect(err).to be_kind_of MangoPay::ResponseError
|
51
|
+
expect(err.type).to eq 'cant_validate_empty_document'
|
52
|
+
end)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
describe '.get' do
|
58
|
+
|
59
|
+
context "given an existing entity's ID" do
|
60
|
+
document = DISPUTE_DOCUMENT_PERSISTED
|
61
|
+
id = document.id
|
62
|
+
|
63
|
+
it 'retrieves the corresponding entity' do
|
64
|
+
retrieved = MangoApi::DisputeDocuments.get id
|
65
|
+
|
66
|
+
expect(retrieved).to be_kind_of MangoModel::DisputeDocument
|
67
|
+
expect(retrieved.id).to eq id
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
describe '.of_dispute' do
|
73
|
+
|
74
|
+
context "given an existing dispute entity's ID" do
|
75
|
+
id = DISPUTE_PERSISTED.id
|
76
|
+
|
77
|
+
context 'not having specified filters' do
|
78
|
+
it 'retrieves list with default parameters' do
|
79
|
+
results = MangoApi::DisputeDocuments.of_dispute id
|
80
|
+
|
81
|
+
expect(results).to be_kind_of Array
|
82
|
+
results.each do |result|
|
83
|
+
expect(result).to be_kind_of MangoModel::DisputeDocument
|
84
|
+
expect(result.id).not_to be_nil
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
context 'having specified filters' do
|
90
|
+
per_page = 5
|
91
|
+
|
92
|
+
it 'retrieves a list with specified parameters' do
|
93
|
+
results = MangoApi::DisputeDocuments.of_dispute id do |filter|
|
94
|
+
filter.page = 1
|
95
|
+
filter.per_page = per_page
|
96
|
+
filter.sort_field = MangoPay::SortField::CREATION_DATE
|
97
|
+
filter.sort_direction = MangoPay::SortDirection::DESC
|
98
|
+
end
|
99
|
+
|
100
|
+
expect(results).to be_kind_of Array
|
101
|
+
expect(results.length).to eq per_page
|
102
|
+
results.each.with_index do |result, index|
|
103
|
+
expect(result).to be_kind_of MangoModel::DisputeDocument
|
104
|
+
expect(result.id).not_to be_nil
|
105
|
+
next if index == results.length - 1
|
106
|
+
first_date = result.creation_date
|
107
|
+
second_date = results[index + 1].creation_date
|
108
|
+
expect(first_date >= second_date).to be_truthy
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
describe '.all' do
|
116
|
+
|
117
|
+
context 'from a correctly-configured environment' do
|
118
|
+
context 'not having specified filters' do
|
119
|
+
default_per_page = 10
|
120
|
+
|
121
|
+
it 'retrieves list with default parameters' do
|
122
|
+
results = MangoApi::DisputeDocuments.all
|
123
|
+
|
124
|
+
expect(results).to be_kind_of Array
|
125
|
+
expect(results.length).to eq default_per_page
|
126
|
+
results.each do |result|
|
127
|
+
expect(result).to be_kind_of MangoModel::DisputeDocument
|
128
|
+
expect(result.id).not_to be_nil
|
129
|
+
end
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
context 'having specified filters' do
|
134
|
+
per_page = 11
|
135
|
+
|
136
|
+
it 'retrieves list with specified parameters' do
|
137
|
+
results = MangoApi::DisputeDocuments.all do |filter|
|
138
|
+
filter.page = 1
|
139
|
+
filter.per_page = per_page
|
140
|
+
filter.sort_field = MangoPay::SortField::CREATION_DATE
|
141
|
+
filter.sort_direction = MangoPay::SortDirection::DESC
|
142
|
+
end
|
143
|
+
|
144
|
+
expect(results).to be_kind_of Array
|
145
|
+
expect(results.length).to eq per_page
|
146
|
+
results.each.with_index do |result, index|
|
147
|
+
expect(result).to be_kind_of MangoModel::DisputeDocument
|
148
|
+
expect(result.id).not_to be_nil
|
149
|
+
next if index == results.length - 1
|
150
|
+
first_date = result.creation_date
|
151
|
+
second_date = results[index + 1].creation_date
|
152
|
+
expect(first_date >= second_date).to be_truthy
|
153
|
+
end
|
154
|
+
end
|
155
|
+
end
|
156
|
+
end
|
157
|
+
end
|
158
|
+
|
159
|
+
describe '.consult' do
|
160
|
+
|
161
|
+
context "given an existing entity's ID" do
|
162
|
+
id = DISPUTE_DOCUMENT_PERSISTED.id
|
163
|
+
|
164
|
+
it 'creates the document page consult entities' do
|
165
|
+
results = MangoApi::DisputeDocuments.consult id
|
166
|
+
|
167
|
+
expect(results).to be_kind_of Array
|
168
|
+
results.each do |result|
|
169
|
+
expect(result).to be_kind_of MangoModel::DocumentPageConsult
|
170
|
+
end
|
171
|
+
end
|
172
|
+
end
|
173
|
+
end
|
174
174
|
end
|