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.
Files changed (214) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +30 -0
  3. data/.rspec +4 -0
  4. data/.rubocop.yml +2 -0
  5. data/.travis.yml +13 -0
  6. data/Gemfile +2 -0
  7. data/LICENSE +20 -0
  8. data/README.md +380 -0
  9. data/bin/mangopay +9 -0
  10. data/lib/mangopay.rb +133 -0
  11. data/lib/mangopay/api/api.rb +9 -0
  12. data/lib/mangopay/api/api_methods.rb +137 -0
  13. data/lib/mangopay/api/auth_token_manager.rb +173 -0
  14. data/lib/mangopay/api/http_client.rb +325 -0
  15. data/lib/mangopay/api/service/bank_accounts.rb +146 -0
  16. data/lib/mangopay/api/service/cards.rb +152 -0
  17. data/lib/mangopay/api/service/client_wallets.rb +89 -0
  18. data/lib/mangopay/api/service/clients.rb +68 -0
  19. data/lib/mangopay/api/service/dispute_documents.rb +158 -0
  20. data/lib/mangopay/api/service/disputes.rb +187 -0
  21. data/lib/mangopay/api/service/e_money.rb +42 -0
  22. data/lib/mangopay/api/service/events.rb +47 -0
  23. data/lib/mangopay/api/service/hooks.rb +93 -0
  24. data/lib/mangopay/api/service/kyc_documents.rb +153 -0
  25. data/lib/mangopay/api/service/mandates.rb +142 -0
  26. data/lib/mangopay/api/service/oauth_tokens.rb +25 -0
  27. data/lib/mangopay/api/service/pay_ins.rb +260 -0
  28. data/lib/mangopay/api/service/pay_outs.rb +54 -0
  29. data/lib/mangopay/api/service/pre_authorizations.rb +69 -0
  30. data/lib/mangopay/api/service/refunds.rb +62 -0
  31. data/lib/mangopay/api/service/reports.rb +151 -0
  32. data/lib/mangopay/api/service/repudiations.rb +32 -0
  33. data/lib/mangopay/api/service/responses.rb +102 -0
  34. data/lib/mangopay/api/service/settlement_transfers.rb +55 -0
  35. data/lib/mangopay/api/service/transactions.rb +183 -0
  36. data/lib/mangopay/api/service/transfers.rb +54 -0
  37. data/lib/mangopay/api/service/ubo_declarations.rb +70 -0
  38. data/lib/mangopay/api/service/users.rb +163 -0
  39. data/lib/mangopay/api/service/wallets.rb +99 -0
  40. data/lib/mangopay/api/uri_provider.rb +35 -0
  41. data/lib/mangopay/common/json_tag_converter.rb +68 -0
  42. data/lib/mangopay/common/jsonifier.rb +249 -0
  43. data/lib/mangopay/common/log_provider.rb +34 -0
  44. data/lib/mangopay/common/rate_limit_interval.rb +17 -0
  45. data/lib/mangopay/common/read_only_fields.rb +27 -0
  46. data/lib/mangopay/common/response_error.rb +61 -0
  47. data/lib/mangopay/common/sort_direction.rb +15 -0
  48. data/lib/mangopay/common/sort_field.rb +13 -0
  49. data/lib/mangopay/common/template_url_options.rb +9 -0
  50. data/lib/mangopay/configuration.rb +39 -0
  51. data/lib/mangopay/environment.rb +66 -0
  52. data/lib/mangopay/model/address.rb +27 -0
  53. data/lib/mangopay/model/declared_ubo.rb +21 -0
  54. data/lib/mangopay/model/dispute_reason.rb +15 -0
  55. data/lib/mangopay/model/document_page_consult.rb +15 -0
  56. data/lib/mangopay/model/e_money.rb +18 -0
  57. data/lib/mangopay/model/entity/account/bank_account.rb +26 -0
  58. data/lib/mangopay/model/entity/account/ca_bank_account.rb +27 -0
  59. data/lib/mangopay/model/entity/account/gb_bank_account.rb +21 -0
  60. data/lib/mangopay/model/entity/account/iban_bank_account.rb +21 -0
  61. data/lib/mangopay/model/entity/account/other_bank_account.rb +24 -0
  62. data/lib/mangopay/model/entity/account/us_bank_account.rb +24 -0
  63. data/lib/mangopay/model/entity/card.rb +45 -0
  64. data/lib/mangopay/model/entity/card_registration.rb +43 -0
  65. data/lib/mangopay/model/entity/client.rb +63 -0
  66. data/lib/mangopay/model/entity/client_wallet.rb +23 -0
  67. data/lib/mangopay/model/entity/dispute.rb +50 -0
  68. data/lib/mangopay/model/entity/dispute_document.rb +29 -0
  69. data/lib/mangopay/model/entity/entity_base.rb +18 -0
  70. data/lib/mangopay/model/entity/hook.rb +26 -0
  71. data/lib/mangopay/model/entity/kyc_document.rb +28 -0
  72. data/lib/mangopay/model/entity/mandate.rb +51 -0
  73. data/lib/mangopay/model/entity/pay_in/bank_wire_direct_pay_in.rb +22 -0
  74. data/lib/mangopay/model/entity/pay_in/card_direct_pay_in.rb +33 -0
  75. data/lib/mangopay/model/entity/pay_in/card_pre_authorized_pay_in.rb +13 -0
  76. data/lib/mangopay/model/entity/pay_in/card_web_pay_in.rb +40 -0
  77. data/lib/mangopay/model/entity/pay_in/direct_debit_direct_pay_in.rb +23 -0
  78. data/lib/mangopay/model/entity/pay_in/direct_debit_web_pay_in.rb +38 -0
  79. data/lib/mangopay/model/entity/pay_in/pay_in.rb +16 -0
  80. data/lib/mangopay/model/entity/pay_out.rb +22 -0
  81. data/lib/mangopay/model/entity/pre_authorization.rb +68 -0
  82. data/lib/mangopay/model/entity/refund.rb +18 -0
  83. data/lib/mangopay/model/entity/report.rb +51 -0
  84. data/lib/mangopay/model/entity/repudiation.rb +18 -0
  85. data/lib/mangopay/model/entity/settlement_transfer.rb +17 -0
  86. data/lib/mangopay/model/entity/transaction.rb +52 -0
  87. data/lib/mangopay/model/entity/transfer.rb +13 -0
  88. data/lib/mangopay/model/entity/ubo_declaration.rb +32 -0
  89. data/lib/mangopay/model/entity/user/legal_user.rb +53 -0
  90. data/lib/mangopay/model/entity/user/natural_user.rb +50 -0
  91. data/lib/mangopay/model/entity/user/user.rb +18 -0
  92. data/lib/mangopay/model/entity/wallet.rb +28 -0
  93. data/lib/mangopay/model/enum/account_type.rb +24 -0
  94. data/lib/mangopay/model/enum/card_status.rb +15 -0
  95. data/lib/mangopay/model/enum/card_type.rb +33 -0
  96. data/lib/mangopay/model/enum/card_validity.rb +19 -0
  97. data/lib/mangopay/model/enum/country_iso.rb +759 -0
  98. data/lib/mangopay/model/enum/culture_code.rb +44 -0
  99. data/lib/mangopay/model/enum/currency_iso.rb +552 -0
  100. data/lib/mangopay/model/enum/declared_ubo_refused_reason_type.rb +16 -0
  101. data/lib/mangopay/model/enum/declared_ubo_status.rb +18 -0
  102. data/lib/mangopay/model/enum/deposit_type.rb +15 -0
  103. data/lib/mangopay/model/enum/direct_debit_type.rb +13 -0
  104. data/lib/mangopay/model/enum/dispute_doc_refused_reason_type.rb +25 -0
  105. data/lib/mangopay/model/enum/dispute_document_type.rb +23 -0
  106. data/lib/mangopay/model/enum/dispute_reason_type.rb +33 -0
  107. data/lib/mangopay/model/enum/dispute_status.rb +21 -0
  108. data/lib/mangopay/model/enum/dispute_type.rb +15 -0
  109. data/lib/mangopay/model/enum/document_status.rb +21 -0
  110. data/lib/mangopay/model/enum/download_format.rb +11 -0
  111. data/lib/mangopay/model/enum/event_type.rb +74 -0
  112. data/lib/mangopay/model/enum/funds_type.rb +15 -0
  113. data/lib/mangopay/model/enum/hook_status.rb +13 -0
  114. data/lib/mangopay/model/enum/hook_validity.rb +15 -0
  115. data/lib/mangopay/model/enum/income_range.rb +21 -0
  116. data/lib/mangopay/model/enum/kyc_doc_refused_reason_type.rb +37 -0
  117. data/lib/mangopay/model/enum/kyc_document_type.rb +19 -0
  118. data/lib/mangopay/model/enum/kyc_level.rb +13 -0
  119. data/lib/mangopay/model/enum/legal_person_type.rb +15 -0
  120. data/lib/mangopay/model/enum/mandate_culture_code.rb +23 -0
  121. data/lib/mangopay/model/enum/mandate_execution_type.rb +11 -0
  122. data/lib/mangopay/model/enum/mandate_scheme.rb +13 -0
  123. data/lib/mangopay/model/enum/mandate_status.rb +24 -0
  124. data/lib/mangopay/model/enum/mandate_type.rb +11 -0
  125. data/lib/mangopay/model/enum/natural_user_capacity.rb +15 -0
  126. data/lib/mangopay/model/enum/pay_in_execution_type.rb +18 -0
  127. data/lib/mangopay/model/enum/pay_in_payment_type.rb +21 -0
  128. data/lib/mangopay/model/enum/pay_out_payment_type.rb +11 -0
  129. data/lib/mangopay/model/enum/payment_status.rb +21 -0
  130. data/lib/mangopay/model/enum/person_type.rb +15 -0
  131. data/lib/mangopay/model/enum/platform_type.rb +23 -0
  132. data/lib/mangopay/model/enum/pre_authorization_execution_type.rb +11 -0
  133. data/lib/mangopay/model/enum/pre_authorization_status.rb +18 -0
  134. data/lib/mangopay/model/enum/refund_reason_type.rb +21 -0
  135. data/lib/mangopay/model/enum/report_status.rb +17 -0
  136. data/lib/mangopay/model/enum/report_type.rb +13 -0
  137. data/lib/mangopay/model/enum/secure_mode.rb +16 -0
  138. data/lib/mangopay/model/enum/transaction_nature.rb +17 -0
  139. data/lib/mangopay/model/enum/transaction_status.rb +15 -0
  140. data/lib/mangopay/model/enum/transaction_type.rb +15 -0
  141. data/lib/mangopay/model/enum/ubo_declaration_refused_reason_type.rb +19 -0
  142. data/lib/mangopay/model/enum/ubo_declaration_status.rb +21 -0
  143. data/lib/mangopay/model/event.rb +18 -0
  144. data/lib/mangopay/model/model.rb +194 -0
  145. data/lib/mangopay/model/money.rb +17 -0
  146. data/lib/mangopay/model/pay_in_web_extended_view.rb +31 -0
  147. data/lib/mangopay/model/refund_reason.rb +15 -0
  148. data/lib/mangopay/model/report_filter.rb +83 -0
  149. data/lib/mangopay/model/request/cancel_request.rb +16 -0
  150. data/lib/mangopay/model/request/complete_registration_request.rb +13 -0
  151. data/lib/mangopay/model/request/currency_request.rb +13 -0
  152. data/lib/mangopay/model/request/deactivation_request.rb +10 -0
  153. data/lib/mangopay/model/request/filter_request.rb +38 -0
  154. data/lib/mangopay/model/request/submit_document_request.rb +14 -0
  155. data/lib/mangopay/model/request/submit_ubo_declaration_request.rb +14 -0
  156. data/lib/mangopay/model/request/upload_file_request.rb +9 -0
  157. data/lib/mangopay/model/response_replica.rb +27 -0
  158. data/lib/mangopay/util/custom_formatter.rb +12 -0
  159. data/lib/mangopay/util/custom_logger.rb +34 -0
  160. data/lib/mangopay/util/enum.rb +52 -0
  161. data/lib/mangopay/util/file_encoder.rb +16 -0
  162. data/lib/mangopay/util/non_instantiable.rb +6 -0
  163. data/lib/mangopay/util/storage_strategy.rb +10 -0
  164. data/lib/mangopay/util/void_logger.rb +6 -0
  165. data/mangopay.gemspec +32 -0
  166. data/spec/context/address_context.rb +25 -0
  167. data/spec/context/bank_account_context.rb +138 -0
  168. data/spec/context/card_context.rb +46 -0
  169. data/spec/context/client_context.rb +45 -0
  170. data/spec/context/dispute_context.rb +37 -0
  171. data/spec/context/dispute_document_context.rb +20 -0
  172. data/spec/context/hook_context.rb +16 -0
  173. data/spec/context/kyc_document_context.rb +23 -0
  174. data/spec/context/mandate_context.rb +27 -0
  175. data/spec/context/pay_in_context.rb +225 -0
  176. data/spec/context/pay_out_context.rb +39 -0
  177. data/spec/context/pre_authorization_context.rb +41 -0
  178. data/spec/context/refund_context.rb +33 -0
  179. data/spec/context/report_context.rb +22 -0
  180. data/spec/context/repudiation_context.rb +19 -0
  181. data/spec/context/settlement_transfer_context.rb +28 -0
  182. data/spec/context/transfer_context.rb +51 -0
  183. data/spec/context/ubo_declaration_context.rb +25 -0
  184. data/spec/context/user_context.rb +83 -0
  185. data/spec/context/wallet_context.rb +53 -0
  186. data/spec/mangopay/bank_accounts_spec.rb +229 -0
  187. data/spec/mangopay/cards_spec.rb +135 -0
  188. data/spec/mangopay/client_wallets_spec.rb +148 -0
  189. data/spec/mangopay/clients_spec.rb +55 -0
  190. data/spec/mangopay/configuration_spec.rb +126 -0
  191. data/spec/mangopay/dispute_documents_spec.rb +174 -0
  192. data/spec/mangopay/disputes_spec.rb +265 -0
  193. data/spec/mangopay/e_money_spec.rb +38 -0
  194. data/spec/mangopay/events_spec.rb +50 -0
  195. data/spec/mangopay/hooks_spec.rb +71 -0
  196. data/spec/mangopay/kyc_documents_spec.rb +180 -0
  197. data/spec/mangopay/mandates_spec.rb +219 -0
  198. data/spec/mangopay/oauth_tokens_spec.rb +41 -0
  199. data/spec/mangopay/pay_ins_spec.rb +181 -0
  200. data/spec/mangopay/pay_outs_spec.rb +39 -0
  201. data/spec/mangopay/pre_authorizations_spec.rb +58 -0
  202. data/spec/mangopay/refunds_spec.rb +40 -0
  203. data/spec/mangopay/reports_spec.rb +121 -0
  204. data/spec/mangopay/responses_spec.rb +295 -0
  205. data/spec/mangopay/settlement_transfers_spec.rb +37 -0
  206. data/spec/mangopay/transactions_spec.rb +233 -0
  207. data/spec/mangopay/transfers_spec.rb +38 -0
  208. data/spec/mangopay/ubo_declarations_spec.rb +65 -0
  209. data/spec/mangopay/users_spec.rb +146 -0
  210. data/spec/mangopay/wallets_spec.rb +104 -0
  211. data/spec/resources/logo.png +0 -0
  212. data/spec/resources/test_pdf.pdf +0 -0
  213. data/spec/spec_helper.rb +72 -0
  214. 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