mangopay-v4 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +30 -0
- data/.rspec +4 -0
- data/.rubocop.yml +2 -0
- data/.travis.yml +13 -0
- data/Gemfile +2 -0
- data/LICENSE +20 -0
- data/README.md +380 -0
- data/bin/mangopay +9 -0
- data/lib/mangopay.rb +133 -0
- data/lib/mangopay/api/api.rb +9 -0
- data/lib/mangopay/api/api_methods.rb +137 -0
- data/lib/mangopay/api/auth_token_manager.rb +173 -0
- data/lib/mangopay/api/http_client.rb +325 -0
- data/lib/mangopay/api/service/bank_accounts.rb +146 -0
- data/lib/mangopay/api/service/cards.rb +152 -0
- data/lib/mangopay/api/service/client_wallets.rb +89 -0
- data/lib/mangopay/api/service/clients.rb +68 -0
- data/lib/mangopay/api/service/dispute_documents.rb +158 -0
- data/lib/mangopay/api/service/disputes.rb +187 -0
- data/lib/mangopay/api/service/e_money.rb +42 -0
- data/lib/mangopay/api/service/events.rb +47 -0
- data/lib/mangopay/api/service/hooks.rb +93 -0
- data/lib/mangopay/api/service/kyc_documents.rb +153 -0
- data/lib/mangopay/api/service/mandates.rb +142 -0
- data/lib/mangopay/api/service/oauth_tokens.rb +25 -0
- data/lib/mangopay/api/service/pay_ins.rb +260 -0
- data/lib/mangopay/api/service/pay_outs.rb +54 -0
- data/lib/mangopay/api/service/pre_authorizations.rb +69 -0
- data/lib/mangopay/api/service/refunds.rb +62 -0
- data/lib/mangopay/api/service/reports.rb +151 -0
- data/lib/mangopay/api/service/repudiations.rb +32 -0
- data/lib/mangopay/api/service/responses.rb +102 -0
- data/lib/mangopay/api/service/settlement_transfers.rb +55 -0
- data/lib/mangopay/api/service/transactions.rb +183 -0
- data/lib/mangopay/api/service/transfers.rb +54 -0
- data/lib/mangopay/api/service/ubo_declarations.rb +70 -0
- data/lib/mangopay/api/service/users.rb +163 -0
- data/lib/mangopay/api/service/wallets.rb +99 -0
- data/lib/mangopay/api/uri_provider.rb +35 -0
- data/lib/mangopay/common/json_tag_converter.rb +68 -0
- data/lib/mangopay/common/jsonifier.rb +249 -0
- data/lib/mangopay/common/log_provider.rb +34 -0
- data/lib/mangopay/common/rate_limit_interval.rb +17 -0
- data/lib/mangopay/common/read_only_fields.rb +27 -0
- data/lib/mangopay/common/response_error.rb +61 -0
- data/lib/mangopay/common/sort_direction.rb +15 -0
- data/lib/mangopay/common/sort_field.rb +13 -0
- data/lib/mangopay/common/template_url_options.rb +9 -0
- data/lib/mangopay/configuration.rb +39 -0
- data/lib/mangopay/environment.rb +66 -0
- data/lib/mangopay/model/address.rb +27 -0
- data/lib/mangopay/model/declared_ubo.rb +21 -0
- data/lib/mangopay/model/dispute_reason.rb +15 -0
- data/lib/mangopay/model/document_page_consult.rb +15 -0
- data/lib/mangopay/model/e_money.rb +18 -0
- data/lib/mangopay/model/entity/account/bank_account.rb +26 -0
- data/lib/mangopay/model/entity/account/ca_bank_account.rb +27 -0
- data/lib/mangopay/model/entity/account/gb_bank_account.rb +21 -0
- data/lib/mangopay/model/entity/account/iban_bank_account.rb +21 -0
- data/lib/mangopay/model/entity/account/other_bank_account.rb +24 -0
- data/lib/mangopay/model/entity/account/us_bank_account.rb +24 -0
- data/lib/mangopay/model/entity/card.rb +45 -0
- data/lib/mangopay/model/entity/card_registration.rb +43 -0
- data/lib/mangopay/model/entity/client.rb +63 -0
- data/lib/mangopay/model/entity/client_wallet.rb +23 -0
- data/lib/mangopay/model/entity/dispute.rb +50 -0
- data/lib/mangopay/model/entity/dispute_document.rb +29 -0
- data/lib/mangopay/model/entity/entity_base.rb +18 -0
- data/lib/mangopay/model/entity/hook.rb +26 -0
- data/lib/mangopay/model/entity/kyc_document.rb +28 -0
- data/lib/mangopay/model/entity/mandate.rb +51 -0
- data/lib/mangopay/model/entity/pay_in/bank_wire_direct_pay_in.rb +22 -0
- data/lib/mangopay/model/entity/pay_in/card_direct_pay_in.rb +33 -0
- data/lib/mangopay/model/entity/pay_in/card_pre_authorized_pay_in.rb +13 -0
- data/lib/mangopay/model/entity/pay_in/card_web_pay_in.rb +40 -0
- data/lib/mangopay/model/entity/pay_in/direct_debit_direct_pay_in.rb +23 -0
- data/lib/mangopay/model/entity/pay_in/direct_debit_web_pay_in.rb +38 -0
- data/lib/mangopay/model/entity/pay_in/pay_in.rb +16 -0
- data/lib/mangopay/model/entity/pay_out.rb +22 -0
- data/lib/mangopay/model/entity/pre_authorization.rb +68 -0
- data/lib/mangopay/model/entity/refund.rb +18 -0
- data/lib/mangopay/model/entity/report.rb +51 -0
- data/lib/mangopay/model/entity/repudiation.rb +18 -0
- data/lib/mangopay/model/entity/settlement_transfer.rb +17 -0
- data/lib/mangopay/model/entity/transaction.rb +52 -0
- data/lib/mangopay/model/entity/transfer.rb +13 -0
- data/lib/mangopay/model/entity/ubo_declaration.rb +32 -0
- data/lib/mangopay/model/entity/user/legal_user.rb +53 -0
- data/lib/mangopay/model/entity/user/natural_user.rb +50 -0
- data/lib/mangopay/model/entity/user/user.rb +18 -0
- data/lib/mangopay/model/entity/wallet.rb +28 -0
- data/lib/mangopay/model/enum/account_type.rb +24 -0
- data/lib/mangopay/model/enum/card_status.rb +15 -0
- data/lib/mangopay/model/enum/card_type.rb +33 -0
- data/lib/mangopay/model/enum/card_validity.rb +19 -0
- data/lib/mangopay/model/enum/country_iso.rb +759 -0
- data/lib/mangopay/model/enum/culture_code.rb +44 -0
- data/lib/mangopay/model/enum/currency_iso.rb +552 -0
- data/lib/mangopay/model/enum/declared_ubo_refused_reason_type.rb +16 -0
- data/lib/mangopay/model/enum/declared_ubo_status.rb +18 -0
- data/lib/mangopay/model/enum/deposit_type.rb +15 -0
- data/lib/mangopay/model/enum/direct_debit_type.rb +13 -0
- data/lib/mangopay/model/enum/dispute_doc_refused_reason_type.rb +25 -0
- data/lib/mangopay/model/enum/dispute_document_type.rb +23 -0
- data/lib/mangopay/model/enum/dispute_reason_type.rb +33 -0
- data/lib/mangopay/model/enum/dispute_status.rb +21 -0
- data/lib/mangopay/model/enum/dispute_type.rb +15 -0
- data/lib/mangopay/model/enum/document_status.rb +21 -0
- data/lib/mangopay/model/enum/download_format.rb +11 -0
- data/lib/mangopay/model/enum/event_type.rb +74 -0
- data/lib/mangopay/model/enum/funds_type.rb +15 -0
- data/lib/mangopay/model/enum/hook_status.rb +13 -0
- data/lib/mangopay/model/enum/hook_validity.rb +15 -0
- data/lib/mangopay/model/enum/income_range.rb +21 -0
- data/lib/mangopay/model/enum/kyc_doc_refused_reason_type.rb +37 -0
- data/lib/mangopay/model/enum/kyc_document_type.rb +19 -0
- data/lib/mangopay/model/enum/kyc_level.rb +13 -0
- data/lib/mangopay/model/enum/legal_person_type.rb +15 -0
- data/lib/mangopay/model/enum/mandate_culture_code.rb +23 -0
- data/lib/mangopay/model/enum/mandate_execution_type.rb +11 -0
- data/lib/mangopay/model/enum/mandate_scheme.rb +13 -0
- data/lib/mangopay/model/enum/mandate_status.rb +24 -0
- data/lib/mangopay/model/enum/mandate_type.rb +11 -0
- data/lib/mangopay/model/enum/natural_user_capacity.rb +15 -0
- data/lib/mangopay/model/enum/pay_in_execution_type.rb +18 -0
- data/lib/mangopay/model/enum/pay_in_payment_type.rb +21 -0
- data/lib/mangopay/model/enum/pay_out_payment_type.rb +11 -0
- data/lib/mangopay/model/enum/payment_status.rb +21 -0
- data/lib/mangopay/model/enum/person_type.rb +15 -0
- data/lib/mangopay/model/enum/platform_type.rb +23 -0
- data/lib/mangopay/model/enum/pre_authorization_execution_type.rb +11 -0
- data/lib/mangopay/model/enum/pre_authorization_status.rb +18 -0
- data/lib/mangopay/model/enum/refund_reason_type.rb +21 -0
- data/lib/mangopay/model/enum/report_status.rb +17 -0
- data/lib/mangopay/model/enum/report_type.rb +13 -0
- data/lib/mangopay/model/enum/secure_mode.rb +16 -0
- data/lib/mangopay/model/enum/transaction_nature.rb +17 -0
- data/lib/mangopay/model/enum/transaction_status.rb +15 -0
- data/lib/mangopay/model/enum/transaction_type.rb +15 -0
- data/lib/mangopay/model/enum/ubo_declaration_refused_reason_type.rb +19 -0
- data/lib/mangopay/model/enum/ubo_declaration_status.rb +21 -0
- data/lib/mangopay/model/event.rb +18 -0
- data/lib/mangopay/model/model.rb +194 -0
- data/lib/mangopay/model/money.rb +17 -0
- data/lib/mangopay/model/pay_in_web_extended_view.rb +31 -0
- data/lib/mangopay/model/refund_reason.rb +15 -0
- data/lib/mangopay/model/report_filter.rb +83 -0
- data/lib/mangopay/model/request/cancel_request.rb +16 -0
- data/lib/mangopay/model/request/complete_registration_request.rb +13 -0
- data/lib/mangopay/model/request/currency_request.rb +13 -0
- data/lib/mangopay/model/request/deactivation_request.rb +10 -0
- data/lib/mangopay/model/request/filter_request.rb +38 -0
- data/lib/mangopay/model/request/submit_document_request.rb +14 -0
- data/lib/mangopay/model/request/submit_ubo_declaration_request.rb +14 -0
- data/lib/mangopay/model/request/upload_file_request.rb +9 -0
- data/lib/mangopay/model/response_replica.rb +27 -0
- data/lib/mangopay/util/custom_formatter.rb +12 -0
- data/lib/mangopay/util/custom_logger.rb +34 -0
- data/lib/mangopay/util/enum.rb +52 -0
- data/lib/mangopay/util/file_encoder.rb +16 -0
- data/lib/mangopay/util/non_instantiable.rb +6 -0
- data/lib/mangopay/util/storage_strategy.rb +10 -0
- data/lib/mangopay/util/void_logger.rb +6 -0
- data/mangopay.gemspec +32 -0
- data/spec/context/address_context.rb +25 -0
- data/spec/context/bank_account_context.rb +138 -0
- data/spec/context/card_context.rb +46 -0
- data/spec/context/client_context.rb +45 -0
- data/spec/context/dispute_context.rb +37 -0
- data/spec/context/dispute_document_context.rb +20 -0
- data/spec/context/hook_context.rb +16 -0
- data/spec/context/kyc_document_context.rb +23 -0
- data/spec/context/mandate_context.rb +27 -0
- data/spec/context/pay_in_context.rb +225 -0
- data/spec/context/pay_out_context.rb +39 -0
- data/spec/context/pre_authorization_context.rb +41 -0
- data/spec/context/refund_context.rb +33 -0
- data/spec/context/report_context.rb +22 -0
- data/spec/context/repudiation_context.rb +19 -0
- data/spec/context/settlement_transfer_context.rb +28 -0
- data/spec/context/transfer_context.rb +51 -0
- data/spec/context/ubo_declaration_context.rb +25 -0
- data/spec/context/user_context.rb +83 -0
- data/spec/context/wallet_context.rb +53 -0
- data/spec/mangopay/bank_accounts_spec.rb +229 -0
- data/spec/mangopay/cards_spec.rb +135 -0
- data/spec/mangopay/client_wallets_spec.rb +148 -0
- data/spec/mangopay/clients_spec.rb +55 -0
- data/spec/mangopay/configuration_spec.rb +126 -0
- data/spec/mangopay/dispute_documents_spec.rb +174 -0
- data/spec/mangopay/disputes_spec.rb +265 -0
- data/spec/mangopay/e_money_spec.rb +38 -0
- data/spec/mangopay/events_spec.rb +50 -0
- data/spec/mangopay/hooks_spec.rb +71 -0
- data/spec/mangopay/kyc_documents_spec.rb +180 -0
- data/spec/mangopay/mandates_spec.rb +219 -0
- data/spec/mangopay/oauth_tokens_spec.rb +41 -0
- data/spec/mangopay/pay_ins_spec.rb +181 -0
- data/spec/mangopay/pay_outs_spec.rb +39 -0
- data/spec/mangopay/pre_authorizations_spec.rb +58 -0
- data/spec/mangopay/refunds_spec.rb +40 -0
- data/spec/mangopay/reports_spec.rb +121 -0
- data/spec/mangopay/responses_spec.rb +295 -0
- data/spec/mangopay/settlement_transfers_spec.rb +37 -0
- data/spec/mangopay/transactions_spec.rb +233 -0
- data/spec/mangopay/transfers_spec.rb +38 -0
- data/spec/mangopay/ubo_declarations_spec.rb +65 -0
- data/spec/mangopay/users_spec.rb +146 -0
- data/spec/mangopay/wallets_spec.rb +104 -0
- data/spec/resources/logo.png +0 -0
- data/spec/resources/test_pdf.pdf +0 -0
- data/spec/spec_helper.rb +72 -0
- metadata +349 -0
@@ -0,0 +1,135 @@
|
|
1
|
+
require_relative '../context/card_context'
|
2
|
+
require_relative '../../lib/mangopay/api/service/cards'
|
3
|
+
require_relative '../../lib/mangopay/common/sort_field'
|
4
|
+
require_relative '../../lib/mangopay/common/sort_direction'
|
5
|
+
|
6
|
+
describe MangoApi::Cards do
|
7
|
+
include_context 'card_context'
|
8
|
+
|
9
|
+
describe '.create_registration' do
|
10
|
+
|
11
|
+
context 'given a valid object' do
|
12
|
+
card_registration = CARD_REGISTRATION_DATA
|
13
|
+
|
14
|
+
it 'creates the card registration entity' do
|
15
|
+
retrieved = MangoApi::Cards.create_registration card_registration
|
16
|
+
|
17
|
+
expect(retrieved).to be_kind_of MangoModel::CardRegistration
|
18
|
+
expect(retrieved.id).not_to be_nil
|
19
|
+
expect(retrieved.access_key).not_to be_nil
|
20
|
+
expect(retrieved.card_registration_url).not_to be_nil
|
21
|
+
expect(retrieved.preregistration_data).not_to be_nil
|
22
|
+
expect(retrieved.status).to be MangoModel::CardStatus::CREATED
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
describe '.complete_registration' do
|
28
|
+
|
29
|
+
context 'given the registration data from Tokenization Server' do
|
30
|
+
it 'completes the card registration process' do
|
31
|
+
created = CARD_REGISTRATION_PERSISTED
|
32
|
+
completed = CARD_REGISTRATION_COMPLETED
|
33
|
+
expect(completed).to be_kind_of MangoModel::CardRegistration
|
34
|
+
expect(completed.id).to eq created.id
|
35
|
+
expect(completed.status).to be MangoModel::CardStatus::VALIDATED
|
36
|
+
expect(completed.card_id).not_to be_nil
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
describe '.get_registration' do
|
42
|
+
|
43
|
+
context "given an existing entity's ID" do
|
44
|
+
card_registration = CARD_REGISTRATION_PERSISTED
|
45
|
+
id = card_registration.id
|
46
|
+
|
47
|
+
it 'retrieves the corresponding entity' do
|
48
|
+
retrieved = MangoApi::Cards.get_registration id
|
49
|
+
|
50
|
+
expect(retrieved).to be_kind_of MangoModel::CardRegistration
|
51
|
+
expect(retrieved.id).to eq card_registration.id
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
describe '.get' do
|
57
|
+
|
58
|
+
context "given a validated card entity's ID" do
|
59
|
+
id = CARD_REGISTRATION_COMPLETED.card_id
|
60
|
+
retrieved = MangoApi::Cards.get id
|
61
|
+
|
62
|
+
it 'retrieves the corresponding card entity' do
|
63
|
+
expect(retrieved).to be_kind_of MangoModel::Card
|
64
|
+
card = retrieved
|
65
|
+
expect(card.id).to eq id
|
66
|
+
expect(card.active).to be_truthy
|
67
|
+
expect(card.card_type).to be MangoModel::CardType::CB_VISA_MASTERCARD
|
68
|
+
expect(card.currency).to be MangoModel::CurrencyIso::EUR
|
69
|
+
expect(card.expiration_date).to eq CARD_EXPIRATION
|
70
|
+
expect(card.fingerprint).not_to be_nil
|
71
|
+
expect(card.user_id).to eq CARD_REGISTRATION_COMPLETED.user_id
|
72
|
+
expect(card.validity).to be MangoModel::CardValidity::UNKNOWN
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
describe '.of_user' do
|
78
|
+
|
79
|
+
context "given a valid user entity's ID" do
|
80
|
+
id = NATURAL_USER_PERSISTED.id
|
81
|
+
|
82
|
+
context 'not having specified filters' do
|
83
|
+
it 'retrieves list with default parameters' do
|
84
|
+
results = MangoApi::Cards.of_user id
|
85
|
+
|
86
|
+
expect(results).to be_kind_of Array
|
87
|
+
results.each do |result|
|
88
|
+
expect(result).to be_kind_of MangoModel::Card
|
89
|
+
expect(result.id).not_to be_nil
|
90
|
+
expect(result.user_id).to eq id
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
context 'having specified filters' do
|
96
|
+
per_page = 1
|
97
|
+
|
98
|
+
it 'retrieves list with specified parameters' do
|
99
|
+
results = MangoApi::Cards.of_user id do |filter|
|
100
|
+
filter.page = 1
|
101
|
+
filter.per_page = per_page
|
102
|
+
filter.sort_field = MangoPay::SortField::CREATION_DATE
|
103
|
+
filter.sort_direction = MangoPay::SortDirection::ASC
|
104
|
+
end
|
105
|
+
|
106
|
+
expect(results).to be_kind_of Array
|
107
|
+
expect(results.length).to eq per_page
|
108
|
+
results.each do |result|
|
109
|
+
expect(result).to be_kind_of MangoModel::Card
|
110
|
+
expect(result.id).not_to be_nil
|
111
|
+
expect(result.user_id).to eq id
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
# Currently disabled because it deactivates the only testing card.
|
118
|
+
# Works if ran alone.
|
119
|
+
#
|
120
|
+
# describe '.deactivate' do
|
121
|
+
#
|
122
|
+
# context "given a valid card entity's ID" do
|
123
|
+
# it 'deactivates the corresponding card entity' do
|
124
|
+
# card = CARD
|
125
|
+
# id = card.id
|
126
|
+
# deactivated = MangoApi::Cards.deactivate id
|
127
|
+
#
|
128
|
+
# expect(deactivated).to be_kind_of MangoModel::Card
|
129
|
+
# expect(deactivated.id).to eq id
|
130
|
+
# expect(deactivated.active).to be_falsey
|
131
|
+
# end
|
132
|
+
# end
|
133
|
+
# end
|
134
|
+
end
|
135
|
+
end
|
@@ -0,0 +1,148 @@
|
|
1
|
+
require_relative '../../lib/mangopay/api/service/client_wallets'
|
2
|
+
require_relative '../../lib/mangopay/model/entity/client_wallet'
|
3
|
+
require_relative '../../lib/mangopay/common/sort_field'
|
4
|
+
require_relative '../../lib/mangopay/common/sort_direction'
|
5
|
+
|
6
|
+
describe MangoApi::ClientWallets do
|
7
|
+
|
8
|
+
describe '.get' do
|
9
|
+
|
10
|
+
context 'from a correctly-configured environment' do
|
11
|
+
it "retrieves the environment's client's ClientWallet entities" do
|
12
|
+
funds_type = MangoModel::FundsType::CREDIT
|
13
|
+
currency = MangoModel::CurrencyIso::EUR
|
14
|
+
retrieved = MangoApi::ClientWallets.get(funds_type, currency)
|
15
|
+
|
16
|
+
expect(retrieved).to be_kind_of MangoModel::ClientWallet
|
17
|
+
expect(retrieved.funds_type).to be funds_type
|
18
|
+
expect(retrieved.currency).to be currency
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe '.all' do
|
24
|
+
default_per_page = 10
|
25
|
+
|
26
|
+
context 'not having specified filters' do
|
27
|
+
results = MangoApi::ClientWallets.all
|
28
|
+
|
29
|
+
it 'retrieves list with default parameters' do
|
30
|
+
expect(results).to be_kind_of Array
|
31
|
+
expect(results.length).to eq default_per_page
|
32
|
+
results.each do |result|
|
33
|
+
expect(result).to be_kind_of MangoModel::ClientWallet
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
context 'having specified filters' do
|
39
|
+
per_page = 3
|
40
|
+
results = MangoApi::ClientWallets.all do |filter|
|
41
|
+
filter.page = 1
|
42
|
+
filter.per_page = per_page
|
43
|
+
filter.sort_field = MangoPay::SortField::CREATION_DATE
|
44
|
+
filter.sort_direction = MangoPay::SortDirection::ASC
|
45
|
+
end
|
46
|
+
|
47
|
+
it 'retrieves list according to provided parameters' do
|
48
|
+
expect(results).to be_kind_of Array
|
49
|
+
expect(results.length).to eq per_page
|
50
|
+
results.each.with_index do |result, index|
|
51
|
+
expect(result).to be_kind_of MangoModel::ClientWallet
|
52
|
+
next if index == results.length - 1
|
53
|
+
first_date = result.creation_date
|
54
|
+
second_date = results[index + 1].creation_date
|
55
|
+
expect(first_date <= second_date).to be_truthy
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
describe '.of_funds_type' do
|
62
|
+
default_per_page = 10
|
63
|
+
|
64
|
+
describe '#FEES' do
|
65
|
+
funds_type = MangoModel::FundsType::FEES
|
66
|
+
MangoApi::ClientWallets.get(funds_type, MangoModel::CurrencyIso::FKP)
|
67
|
+
MangoApi::ClientWallets.get(funds_type, MangoModel::CurrencyIso::LAK)
|
68
|
+
MangoApi::ClientWallets.get(funds_type, MangoModel::CurrencyIso::MMK)
|
69
|
+
MangoApi::ClientWallets.get(funds_type, MangoModel::CurrencyIso::NOK)
|
70
|
+
MangoApi::ClientWallets.get(funds_type, MangoModel::CurrencyIso::XBA)
|
71
|
+
|
72
|
+
context 'not having specified filters' do
|
73
|
+
it 'retrieves list with default parameters' do
|
74
|
+
results = MangoApi::ClientWallets.of_funds_type(funds_type)
|
75
|
+
|
76
|
+
check_results(results, default_per_page, funds_type)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
context 'having specified filters' do
|
81
|
+
per_page = 3
|
82
|
+
results = MangoApi::ClientWallets.of_funds_type(funds_type) do |filter|
|
83
|
+
filter.page = 1
|
84
|
+
filter.per_page = per_page
|
85
|
+
filter.sort_field = MangoPay::SortField::CREATION_DATE
|
86
|
+
filter.sort_direction = MangoPay::SortDirection::ASC
|
87
|
+
end
|
88
|
+
|
89
|
+
it 'retrieves list according to provided parameters' do
|
90
|
+
check_results(results, per_page, funds_type)
|
91
|
+
results.each.with_index do |result, index|
|
92
|
+
next if index == results.length - 1
|
93
|
+
first_date = result.creation_date
|
94
|
+
second_date = results[index + 1].creation_date
|
95
|
+
expect(first_date <= second_date).to be_truthy
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
describe '#CREDIT' do
|
102
|
+
funds_type = MangoModel::FundsType::FEES
|
103
|
+
MangoApi::ClientWallets.get(funds_type, MangoModel::CurrencyIso::FKP)
|
104
|
+
MangoApi::ClientWallets.get(funds_type, MangoModel::CurrencyIso::LAK)
|
105
|
+
MangoApi::ClientWallets.get(funds_type, MangoModel::CurrencyIso::MMK)
|
106
|
+
MangoApi::ClientWallets.get(funds_type, MangoModel::CurrencyIso::NOK)
|
107
|
+
MangoApi::ClientWallets.get(funds_type, MangoModel::CurrencyIso::XBA)
|
108
|
+
|
109
|
+
context 'not having specified filters' do
|
110
|
+
it 'retrieves list with default parameters' do
|
111
|
+
results = MangoApi::ClientWallets.of_funds_type(funds_type)
|
112
|
+
|
113
|
+
check_results(results, default_per_page, funds_type)
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
context 'having specified filters' do
|
118
|
+
per_page = 3
|
119
|
+
results = MangoApi::ClientWallets.of_funds_type(funds_type) do |filter|
|
120
|
+
filter.page = 1
|
121
|
+
filter.per_page = per_page
|
122
|
+
filter.sort_field = MangoPay::SortField::CREATION_DATE
|
123
|
+
filter.sort_direction = MangoPay::SortDirection::ASC
|
124
|
+
end
|
125
|
+
|
126
|
+
it 'retrieves list according to provided parameters' do
|
127
|
+
check_results(results, per_page, funds_type)
|
128
|
+
results.each.with_index do |result, index|
|
129
|
+
next if index == results.length - 1
|
130
|
+
first_date = result.creation_date
|
131
|
+
second_date = results[index + 1].creation_date
|
132
|
+
expect(first_date <= second_date).to be_truthy
|
133
|
+
end
|
134
|
+
end
|
135
|
+
end
|
136
|
+
end
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
# noinspection RubyResolve
|
141
|
+
def check_results(results, per_page, funds_type)
|
142
|
+
expect(results).to be_kind_of Array
|
143
|
+
expect(results.length).to eq per_page
|
144
|
+
results.each do |result|
|
145
|
+
expect(result).to be_kind_of MangoModel::ClientWallet
|
146
|
+
expect(result.funds_type).to be funds_type
|
147
|
+
end
|
148
|
+
end
|
@@ -0,0 +1,55 @@
|
|
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(its_the_same_client(client, updated)).to be_truthy
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
describe '.upload_logo' do
|
26
|
+
|
27
|
+
context "given a valid image file's path" do
|
28
|
+
path = File.join(File.dirname(__FILE__), '..', 'resources', 'logo.png')
|
29
|
+
base64_to_upload = FileEncoder.encode_base64(path)
|
30
|
+
|
31
|
+
it "uploads the image as the client's logo" do
|
32
|
+
MangoApi::Clients.upload_logo path
|
33
|
+
|
34
|
+
client = MangoApi::Clients.get
|
35
|
+
uploaded_logo_uri = URI(client.logo)
|
36
|
+
uploaded_image = MangoApi::HttpClient.get_raw(uploaded_logo_uri)
|
37
|
+
uploaded_base64 = Base64.strict_encode64(uploaded_image)
|
38
|
+
|
39
|
+
expect(base64_to_upload).to eq uploaded_base64
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
describe '.get' do
|
45
|
+
|
46
|
+
context 'from a correctly-configured environment' do
|
47
|
+
it "retrieves the environment's Client entity" do
|
48
|
+
retrieved = MangoApi::Clients.get
|
49
|
+
|
50
|
+
expect(retrieved).to be_kind_of MangoModel::Client
|
51
|
+
expect(retrieved.client_id).to eq MangoPay.configuration.client_id
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +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.client_passphrase = CLIENT_PASS1
|
34
|
+
end
|
35
|
+
MangoPay.use_environment :env2
|
36
|
+
MangoPay.configure do |config|
|
37
|
+
config.client_id = CLIENT_ID2
|
38
|
+
config.client_passphrase = 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_passphrase).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_passphrase).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
|
+
end
|