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,33 @@
|
|
1
|
+
require_relative 'pay_in_context'
|
2
|
+
require_relative '../../lib/mangopay/model/entity/refund'
|
3
|
+
|
4
|
+
shared_context 'refund_context' do
|
5
|
+
include_context 'pay_in_context'
|
6
|
+
|
7
|
+
PAY_IN_REFUND_DATA ||= build_pay_in_refund
|
8
|
+
PAY_IN_REFUND_PERSISTED ||= persist_refund PAY_IN_REFUND_DATA
|
9
|
+
TRANSFER_REFUND_DATA ||= build_transfer_refund
|
10
|
+
TRANSFER_REFUND_PERSISTED ||= persist_refund TRANSFER_REFUND_DATA
|
11
|
+
end
|
12
|
+
|
13
|
+
def persist_refund(refund)
|
14
|
+
MangoApi::Refunds.create_for_pay_in(CARD_DIRECT_PAY_IN_PERSISTED.id, refund)
|
15
|
+
end
|
16
|
+
|
17
|
+
def build_pay_in_refund
|
18
|
+
refund = MangoModel::Refund.new
|
19
|
+
refund.author_id = NATURAL_USER_PERSISTED.id
|
20
|
+
refund.debited_funds = MangoModel::Money.new
|
21
|
+
refund.debited_funds.currency = MangoModel::CurrencyIso::EUR
|
22
|
+
refund.debited_funds.amount = 20 + rand(30)
|
23
|
+
refund.fees = MangoModel::Money.new
|
24
|
+
refund.fees.currency = MangoModel::CurrencyIso::EUR
|
25
|
+
refund.fees.amount = 5
|
26
|
+
refund
|
27
|
+
end
|
28
|
+
|
29
|
+
def build_transfer_refund
|
30
|
+
refund = MangoModel::Refund.new
|
31
|
+
refund.author_id = NATURAL_USER_PERSISTED.id
|
32
|
+
refund
|
33
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require_relative '../../lib/mangopay/model/entity/report'
|
2
|
+
require_relative '../../lib/mangopay/api/service/reports'
|
3
|
+
|
4
|
+
shared_context 'report_context' do
|
5
|
+
|
6
|
+
REPORT_DATA ||= build_report
|
7
|
+
REPORT_PERSISTED ||= persist_report REPORT_DATA
|
8
|
+
end
|
9
|
+
|
10
|
+
def persist_report(report)
|
11
|
+
MangoApi::Reports.create_for_transactions report
|
12
|
+
end
|
13
|
+
|
14
|
+
def build_report
|
15
|
+
report = MangoModel::Report.new
|
16
|
+
report.callback_url = 'http://www.my-site.com/callbackURL/'
|
17
|
+
report.download_format = MangoModel::DownloadFormat::CSV
|
18
|
+
report.sort = 'CreationDate:DESC'
|
19
|
+
report.preview = false
|
20
|
+
report.columns = %w[Id CreationDate]
|
21
|
+
report
|
22
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require_relative '../../lib/mangopay/api/service/disputes'
|
2
|
+
require_relative '../../lib/mangopay/api/service/repudiations'
|
3
|
+
|
4
|
+
shared_context 'repudiation_context' do
|
5
|
+
|
6
|
+
REPUDIATION_PERSISTED ||= persisted_repudiation
|
7
|
+
end
|
8
|
+
|
9
|
+
def persisted_repudiation
|
10
|
+
disputes = MangoApi::Disputes.all do |filter|
|
11
|
+
filter.per_page = 100
|
12
|
+
end
|
13
|
+
id = nil
|
14
|
+
disputes.each do |dispute|
|
15
|
+
id = dispute.repudiation_id if dispute.repudiation_id
|
16
|
+
end
|
17
|
+
raise 'no repudiation found' unless id
|
18
|
+
MangoApi::Repudiations.get id
|
19
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require_relative 'repudiation_context'
|
2
|
+
require_relative 'user_context'
|
3
|
+
require_relative '../../lib/mangopay/api/service/settlement_transfers'
|
4
|
+
require_relative '../../lib/mangopay/model/entity/settlement_transfer'
|
5
|
+
|
6
|
+
shared_context 'settlement_transfer_context' do
|
7
|
+
include_context 'repudiation_context'
|
8
|
+
include_context 'user_context'
|
9
|
+
|
10
|
+
SETTLEMENT_TRANSFER_DATA ||= build_settlement_transfer
|
11
|
+
SETTLEMENT_TRANSFER_PERSISTED ||= persist_transfer SETTLEMENT_TRANSFER_DATA
|
12
|
+
end
|
13
|
+
|
14
|
+
def persist_transfer(transfer)
|
15
|
+
MangoApi::SettlementTransfers.create(REPUDIATION_PERSISTED.id, transfer)
|
16
|
+
end
|
17
|
+
|
18
|
+
def build_settlement_transfer
|
19
|
+
transfer = MangoModel::SettlementTransfer.new
|
20
|
+
transfer.author_id = REPUDIATION_PERSISTED.author_id
|
21
|
+
transfer.debited_funds = MangoModel::Money.new
|
22
|
+
transfer.debited_funds.currency = MangoModel::CurrencyIso::EUR
|
23
|
+
transfer.debited_funds.amount = 120
|
24
|
+
transfer.fees = MangoModel::Money.new
|
25
|
+
transfer.fees.currency = MangoModel::CurrencyIso::EUR
|
26
|
+
transfer.fees.amount = 0
|
27
|
+
transfer
|
28
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require_relative 'user_context'
|
2
|
+
require_relative 'wallet_context'
|
3
|
+
require_relative '../../lib/mangopay/model/entity/transfer'
|
4
|
+
require_relative '../../lib/mangopay/model/entity/transaction'
|
5
|
+
require_relative '../../lib/mangopay/model/money'
|
6
|
+
require_relative '../../lib/mangopay/api/service/transfers'
|
7
|
+
|
8
|
+
shared_context 'transfer_context' do
|
9
|
+
include_context 'user_context'
|
10
|
+
include_context 'wallet_context'
|
11
|
+
|
12
|
+
TRANSFER_DATA ||= build_transfer
|
13
|
+
TRANSFER_PERSISTED ||= persist_transfer TRANSFER_DATA
|
14
|
+
|
15
|
+
let(:new_transfer_persisted) { persist_transfer TRANSFER_DATA }
|
16
|
+
end
|
17
|
+
|
18
|
+
def persist_transfer(transfer)
|
19
|
+
MangoApi::Transfers.create transfer
|
20
|
+
end
|
21
|
+
|
22
|
+
# noinspection RubyResolve
|
23
|
+
def build_transfer
|
24
|
+
transfer = MangoModel::Transfer.new
|
25
|
+
transfer.author_id = NATURAL_USER_PERSISTED.id
|
26
|
+
debited_funds = MangoModel::Money.new
|
27
|
+
debited_funds.currency = MangoModel::CurrencyIso::EUR
|
28
|
+
debited_funds.amount = 120
|
29
|
+
transfer.debited_funds = debited_funds
|
30
|
+
fees = MangoModel::Money.new
|
31
|
+
fees.currency = MangoModel::CurrencyIso::EUR
|
32
|
+
fees.amount = 20
|
33
|
+
transfer.fees = fees
|
34
|
+
transfer.debited_wallet_id = persist_wallet(WALLET_DATA).id
|
35
|
+
transfer.credited_wallet_id = WALLET_PERSISTED.id
|
36
|
+
transfer
|
37
|
+
end
|
38
|
+
|
39
|
+
def its_the_same_transfer(transfer1, transfer2)
|
40
|
+
transfer1.author_id == transfer2.author_id\
|
41
|
+
&& transfer1.author_id == transfer2.author_id\
|
42
|
+
&& its_the_same_money(transfer1.debited_funds, transfer2.debited_funds)\
|
43
|
+
&& its_the_same_money(transfer1.fees, transfer2.fees)\
|
44
|
+
&& transfer1.debited_wallet_id == transfer2.debited_wallet_id\
|
45
|
+
&& transfer1.credited_wallet_id == transfer2.credited_wallet_id
|
46
|
+
end
|
47
|
+
|
48
|
+
def its_the_same_money(money1, money2)
|
49
|
+
money1.currency.eql?(money2.currency)\
|
50
|
+
&& money1.amount == money2.amount
|
51
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require_relative 'user_context'
|
2
|
+
require_relative '../../lib/mangopay/model/entity/ubo_declaration'
|
3
|
+
require_relative '../../lib/mangopay/api/service/ubo_declarations'
|
4
|
+
require_relative '../../lib/mangopay/model/enum/natural_user_capacity'
|
5
|
+
|
6
|
+
shared_context 'ubo_declaration_context' do
|
7
|
+
include_context 'user_context'
|
8
|
+
|
9
|
+
UBO_DECLARATION_DATA ||= build_ubo_declaration
|
10
|
+
UBO_DECLARATION_PERSISTED ||= persist_ubo_declaration UBO_DECLARATION_DATA
|
11
|
+
end
|
12
|
+
|
13
|
+
def persist_ubo_declaration(ubo_decl)
|
14
|
+
MangoApi::UboDeclarations.create(ubo_decl, LEGAL_USER_PERSISTED.id)
|
15
|
+
end
|
16
|
+
|
17
|
+
def build_ubo_declaration
|
18
|
+
natural_user = NATURAL_USER_DATA
|
19
|
+
natural_user.capacity = MangoModel::NaturalUserCapacity::DECLARATIVE
|
20
|
+
decl_user1 = persist_user natural_user
|
21
|
+
decl_user2 = persist_user natural_user
|
22
|
+
ubo_decl = MangoModel::UboDeclaration.new
|
23
|
+
ubo_decl.declared_ubos = [decl_user1.id, decl_user2.id]
|
24
|
+
ubo_decl
|
25
|
+
end
|
@@ -0,0 +1,83 @@
|
|
1
|
+
require_relative 'address_context'
|
2
|
+
|
3
|
+
shared_context 'user_context' do
|
4
|
+
include_context 'address_context'
|
5
|
+
|
6
|
+
NATURAL_USER_DATA ||= build_natural_user
|
7
|
+
LEGAL_USER_DATA ||= build_legal_user
|
8
|
+
NATURAL_USER_PERSISTED ||= persist_user NATURAL_USER_DATA
|
9
|
+
LEGAL_USER_PERSISTED ||= persist_user LEGAL_USER_DATA
|
10
|
+
|
11
|
+
let(:new_natural_user_persisted) { persist_user NATURAL_USER_DATA }
|
12
|
+
let(:new_legal_user_persisted) { persist_user LEGAL_USER_DATA }
|
13
|
+
end
|
14
|
+
|
15
|
+
def persist_user(user)
|
16
|
+
MangoApi::Users.create user
|
17
|
+
end
|
18
|
+
|
19
|
+
def build_natural_user
|
20
|
+
nat_user = MangoModel::NaturalUser.new
|
21
|
+
nat_user.kyc_level = MangoModel::KycLevel::LIGHT
|
22
|
+
nat_user.email = 'hello@moto.com'
|
23
|
+
nat_user.first_name = 'Hi'
|
24
|
+
nat_user.last_name = 'Bye'
|
25
|
+
nat_user.address = build_address
|
26
|
+
nat_user.birthday = 105_102_394
|
27
|
+
nat_user.nationality = MangoModel::CountryIso::RO
|
28
|
+
nat_user.country_of_residence = MangoModel::CountryIso::RO
|
29
|
+
nat_user.occupation = 'Cowboy'
|
30
|
+
nat_user.income_range = MangoModel::IncomeRange::BETWEEN_50_80
|
31
|
+
nat_user
|
32
|
+
end
|
33
|
+
|
34
|
+
def build_legal_user
|
35
|
+
leg_user = MangoModel::LegalUser.new
|
36
|
+
leg_user.email = 'coco@coco.com'
|
37
|
+
leg_user.legal_person_type = MangoModel::LegalPersonType::BUSINESS
|
38
|
+
leg_user.name = 'Coco Company'
|
39
|
+
leg_user.headquarters_address = build_address
|
40
|
+
leg_user.legal_representative_first_name = 'Bob'
|
41
|
+
leg_user.legal_representative_last_name = 'Business'
|
42
|
+
leg_user.legal_representative_address = build_address
|
43
|
+
leg_user.legal_representative_email = 'bobby@coco.com'
|
44
|
+
leg_user.legal_representative_birthday = 1_300_116_382
|
45
|
+
leg_user.legal_representative_nationality = MangoModel::CountryIso::DE
|
46
|
+
leg_user.legal_representative_country_of_residence = MangoModel::CountryIso::RO
|
47
|
+
leg_user
|
48
|
+
end
|
49
|
+
|
50
|
+
def its_the_same_user(user1, user2)
|
51
|
+
if user1.is_a? MangoModel::NaturalUser
|
52
|
+
its_the_same_natural(user1, user2)
|
53
|
+
else
|
54
|
+
its_the_same_legal(user1, user2)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def its_the_same_natural(user1, user2)
|
59
|
+
user1.kyc_level.eql?(user2.kyc_level)\
|
60
|
+
&& user1.email == user2.email\
|
61
|
+
&& user1.first_name == user2.first_name\
|
62
|
+
&& user1.last_name == user2.last_name\
|
63
|
+
&& its_the_same_address(user1.address, user2.address)\
|
64
|
+
&& user1.birthday == user2.birthday\
|
65
|
+
&& user1.nationality.eql?(user2.nationality)\
|
66
|
+
&& user1.country_of_residence.eql?(user2.country_of_residence)\
|
67
|
+
&& user1.occupation == user2.occupation\
|
68
|
+
&& user1.income_range == user2.income_range
|
69
|
+
end
|
70
|
+
|
71
|
+
def its_the_same_legal(user1, user2)
|
72
|
+
user1.email == user2.email\
|
73
|
+
&& user1.legal_person_type.eql?(user2.legal_person_type)\
|
74
|
+
&& user1.name == user2.name\
|
75
|
+
&& its_the_same_address(user1.headquarters_address, user2.headquarters_address)\
|
76
|
+
&& user1.legal_representative_first_name == user2.legal_representative_first_name\
|
77
|
+
&& user1.legal_representative_last_name == user2.legal_representative_last_name\
|
78
|
+
&& its_the_same_address(user1.legal_representative_address, user2.legal_representative_address)\
|
79
|
+
&& user1.legal_representative_email == user2.legal_representative_email\
|
80
|
+
&& user1.legal_representative_birthday == user2.legal_representative_birthday\
|
81
|
+
&& user1.legal_representative_nationality == user2.legal_representative_nationality\
|
82
|
+
&& user1.legal_representative_country_of_residence.eql?(user2.legal_representative_country_of_residence)
|
83
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require_relative 'user_context'
|
2
|
+
require_relative 'card_context'
|
3
|
+
require_relative '../../lib/mangopay/model/entity/wallet'
|
4
|
+
require_relative '../../lib/mangopay/model/entity/pay_in/card_direct_pay_in'
|
5
|
+
require_relative '../../lib/mangopay/api/service/wallets'
|
6
|
+
require_relative '../../lib/mangopay/api/service/pay_ins'
|
7
|
+
|
8
|
+
shared_context 'wallet_context' do
|
9
|
+
include_context 'user_context'
|
10
|
+
include_context 'card_context'
|
11
|
+
|
12
|
+
WALLET_DATA ||= build_wallet
|
13
|
+
WALLET_PERSISTED ||= persist_wallet WALLET_DATA
|
14
|
+
|
15
|
+
let(:new_wallet_persisted) { persist_wallet WALLET_DATA }
|
16
|
+
end
|
17
|
+
|
18
|
+
def persist_wallet(wallet)
|
19
|
+
created = MangoApi::Wallets.create wallet
|
20
|
+
pay_in = MangoModel::CardDirectPayIn.new
|
21
|
+
pay_in.author_id = NATURAL_USER_PERSISTED.id
|
22
|
+
pay_in.credited_user_id = NATURAL_USER_PERSISTED.id
|
23
|
+
pay_in.credited_wallet_id = created.id
|
24
|
+
pay_in.debited_funds = MangoModel::Money.new
|
25
|
+
pay_in.debited_funds.currency = MangoModel::CurrencyIso::EUR
|
26
|
+
pay_in.debited_funds.amount = 10_000
|
27
|
+
pay_in.fees = MangoModel::Money.new
|
28
|
+
pay_in.fees.currency = MangoModel::CurrencyIso::EUR
|
29
|
+
pay_in.fees.amount = 30
|
30
|
+
pay_in.secure_mode_return_url = 'http://www.my-site.com/returnURL/'
|
31
|
+
pay_in.card_id = CARD.id
|
32
|
+
pay_in.secure_mode = MangoModel::SecureMode::DEFAULT
|
33
|
+
pay_in.statement_descriptor = 'Mar2016'
|
34
|
+
MangoApi::PayIns.create_card_direct pay_in
|
35
|
+
created
|
36
|
+
end
|
37
|
+
|
38
|
+
def build_wallet
|
39
|
+
wallet = MangoModel::Wallet.new
|
40
|
+
wallet.owners = [NATURAL_USER_PERSISTED.id]
|
41
|
+
wallet.description = 'Just a wallet'
|
42
|
+
wallet.currency = MangoModel::CurrencyIso::EUR
|
43
|
+
wallet
|
44
|
+
end
|
45
|
+
|
46
|
+
def its_the_same_wallet(wallet1, wallet2)
|
47
|
+
return false unless wallet1.owners.length == wallet2.owners.length
|
48
|
+
wallet1.owners.each do |owner_id|
|
49
|
+
return false unless wallet2.owners.include? owner_id
|
50
|
+
end
|
51
|
+
wallet1.description == wallet2.description\
|
52
|
+
&& wallet1.currency.eql?(wallet2.currency)
|
53
|
+
end
|
@@ -0,0 +1,229 @@
|
|
1
|
+
require_relative '../../lib/mangopay/model/entity/account/bank_account'
|
2
|
+
require_relative '../../spec/context/bank_account_context'
|
3
|
+
require_relative '../../lib/mangopay/api/service/bank_accounts'
|
4
|
+
require_relative '../../lib/mangopay/common/sort_direction'
|
5
|
+
require_relative '../../lib/mangopay/common/sort_field'
|
6
|
+
|
7
|
+
describe MangoApi::BankAccounts do
|
8
|
+
include_context 'bank_account_context'
|
9
|
+
|
10
|
+
describe '.create' do
|
11
|
+
|
12
|
+
describe '#IBAN' do
|
13
|
+
context 'given a valid object' do
|
14
|
+
account = IBAN_ACCOUNT_PERSISTED
|
15
|
+
|
16
|
+
it 'creates the IBAN bank account entity' do
|
17
|
+
expect(account).to be_kind_of MangoModel::IbanBankAccount
|
18
|
+
expect(account.id).not_to be_nil
|
19
|
+
expect(its_the_same_iban(account, IBAN_ACCOUNT_PERSISTED)).to be_truthy
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
describe '#US' do
|
25
|
+
|
26
|
+
describe '#Savings' do
|
27
|
+
context 'given a valid object' do
|
28
|
+
account = US_SAVINGS_ACCOUNT_PERSISTED
|
29
|
+
|
30
|
+
it 'creates the US savings bank account entity' do
|
31
|
+
expect(account).to be_kind_of MangoModel::UsBankAccount
|
32
|
+
expect(account.id).not_to be_nil
|
33
|
+
expect(its_the_same_us(account, US_SAVINGS_ACCOUNT_PERSISTED)).to be_truthy
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
describe '#Checking' do
|
39
|
+
context 'given a valid object' do
|
40
|
+
account = US_CHECKING_ACCOUNT_PERSISTED
|
41
|
+
|
42
|
+
it 'creates the US checking bank account entity' do
|
43
|
+
expect(account).to be_kind_of MangoModel::UsBankAccount
|
44
|
+
expect(account.id).not_to be_nil
|
45
|
+
expect(its_the_same_us(account, US_CHECKING_ACCOUNT_PERSISTED)).to be_truthy
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
describe '#CA' do
|
52
|
+
context 'given a valid object' do
|
53
|
+
account = CA_ACCOUNT_PERSISTED
|
54
|
+
|
55
|
+
it 'creates the CA bank account entity' do
|
56
|
+
expect(account).to be_kind_of MangoModel::CaBankAccount
|
57
|
+
expect(account.id).not_to be_nil
|
58
|
+
expect(its_the_same_ca(account, CA_ACCOUNT_PERSISTED)).to be_truthy
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
describe '#GB' do
|
64
|
+
context 'given a valid object' do
|
65
|
+
account = GB_ACCOUNT_PERSISTED
|
66
|
+
|
67
|
+
it 'creates the GB bank account entity' do
|
68
|
+
expect(account).to be_kind_of MangoModel::GbBankAccount
|
69
|
+
expect(account.id).not_to be_nil
|
70
|
+
expect(its_the_same_gb(account, GB_ACCOUNT_PERSISTED)).to be_truthy
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
describe '#OTHER' do
|
76
|
+
context 'given a valid object' do
|
77
|
+
account = OTHER_ACCOUNT_PERSISTED
|
78
|
+
|
79
|
+
it 'creates the OTHER bank account entity' do
|
80
|
+
expect(account).to be_kind_of MangoModel::OtherBankAccount
|
81
|
+
expect(account.id).not_to be_nil
|
82
|
+
expect(its_the_same_other(account, OTHER_ACCOUNT_PERSISTED)).to be_truthy
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
describe '.deactivate' do
|
89
|
+
|
90
|
+
describe '#IBAN' do
|
91
|
+
context 'given a valid object' do
|
92
|
+
it 'deactivates the bank account entity' do
|
93
|
+
# noinspection RubyResolve
|
94
|
+
deactivate_and_check new_iban_account_persisted
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
describe '#US' do
|
100
|
+
context 'given a valid object' do
|
101
|
+
it 'deactivates the bank account entity' do
|
102
|
+
# noinspection RubyResolve
|
103
|
+
deactivate_and_check new_us_checking_account_persisted
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
describe '#CA' do
|
109
|
+
context 'given a valid object' do
|
110
|
+
it 'deactivates the bank account entity' do
|
111
|
+
# noinspection RubyResolve
|
112
|
+
deactivate_and_check new_ca_account_persisted
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
describe '#GB' do
|
118
|
+
context 'given a valid object' do
|
119
|
+
it 'deactivates the bank account entity' do
|
120
|
+
# noinspection RubyResolve
|
121
|
+
deactivate_and_check new_gb_account_persisted
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
describe '#OTHER' do
|
127
|
+
context 'given a valid object' do
|
128
|
+
it 'deactivates the bank account entity' do
|
129
|
+
# noinspection RubyResolve
|
130
|
+
deactivate_and_check new_other_account_persisted
|
131
|
+
end
|
132
|
+
end
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
describe '.get' do
|
137
|
+
|
138
|
+
describe '#IBAN' do
|
139
|
+
describe "given an existing entity's ID" do
|
140
|
+
it 'retrieves the corresponding entity' do
|
141
|
+
get_and_check IBAN_ACCOUNT_PERSISTED
|
142
|
+
end
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
146
|
+
describe '#US' do
|
147
|
+
describe "given an existing entity's ID" do
|
148
|
+
it 'retrieves the corresponding entity' do
|
149
|
+
get_and_check US_CHECKING_ACCOUNT_PERSISTED
|
150
|
+
end
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
154
|
+
describe '#CA' do
|
155
|
+
describe "given an existing entity's ID" do
|
156
|
+
it 'retrieves the corresponding entity' do
|
157
|
+
get_and_check CA_ACCOUNT_PERSISTED
|
158
|
+
end
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
describe '#GB' do
|
163
|
+
describe "given an existing entity's ID" do
|
164
|
+
it 'retrieves the corresponding entity' do
|
165
|
+
get_and_check GB_ACCOUNT_PERSISTED
|
166
|
+
end
|
167
|
+
end
|
168
|
+
end
|
169
|
+
|
170
|
+
describe '#OTHER' do
|
171
|
+
describe "given an existing entity's ID" do
|
172
|
+
it 'retrieves the corresponding entity' do
|
173
|
+
get_and_check OTHER_ACCOUNT_PERSISTED
|
174
|
+
end
|
175
|
+
end
|
176
|
+
end
|
177
|
+
end
|
178
|
+
|
179
|
+
describe '.all' do
|
180
|
+
|
181
|
+
context 'not having specified filters' do
|
182
|
+
results = MangoApi::BankAccounts.all(NATURAL_USER_PERSISTED.id)
|
183
|
+
|
184
|
+
it 'retrieves list with default parameters' do
|
185
|
+
expect(results).to be_kind_of Array
|
186
|
+
results.each do |result|
|
187
|
+
expect(result).to be_kind_of MangoModel::BankAccount
|
188
|
+
end
|
189
|
+
end
|
190
|
+
end
|
191
|
+
|
192
|
+
context 'having specified filters' do
|
193
|
+
per_page = 3
|
194
|
+
results = MangoApi::BankAccounts.all(NATURAL_USER_PERSISTED.id) do |filter|
|
195
|
+
filter.page = 1
|
196
|
+
filter.per_page = per_page
|
197
|
+
filter.sort_field = MangoPay::SortField::CREATION_DATE
|
198
|
+
filter.sort_direction = MangoPay::SortDirection::ASC
|
199
|
+
end
|
200
|
+
|
201
|
+
it 'retrieves list according to provided parameters' do
|
202
|
+
expect(results).to be_kind_of Array
|
203
|
+
expect(results.length).to eq per_page
|
204
|
+
results.each.with_index do |result, index|
|
205
|
+
expect(result).to be_kind_of MangoModel::BankAccount
|
206
|
+
next if index == results.length - 1
|
207
|
+
first_date = result.creation_date
|
208
|
+
second_date = results[index + 1].creation_date
|
209
|
+
expect(first_date <= second_date).to be_truthy
|
210
|
+
end
|
211
|
+
end
|
212
|
+
end
|
213
|
+
end
|
214
|
+
end
|
215
|
+
|
216
|
+
def deactivate_and_check(account)
|
217
|
+
deactivated = MangoApi::BankAccounts.deactivate account.user_id, account.id
|
218
|
+
|
219
|
+
expect(deactivated).to be_kind_of account.class
|
220
|
+
expect(deactivated.id).to eq account.id
|
221
|
+
expect(deactivated.active).to be_falsey
|
222
|
+
end
|
223
|
+
|
224
|
+
def get_and_check(account)
|
225
|
+
retrieved = MangoApi::BankAccounts.get account.user_id, account.id
|
226
|
+
|
227
|
+
expect(retrieved).to be_kind_of account.class
|
228
|
+
expect(retrieved.id).to eq account.id
|
229
|
+
end
|