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,41 @@
1
+ require_relative '../../lib/mangopay/api/service/oauth_tokens'
2
+ require_relative '../../lib/mangopay/api/http_client'
3
+ require_relative '../../lib/mangopay/common/response_error'
4
+ require_relative '../context/user_context'
5
+
6
+ describe MangoApi::OAuthTokens do
7
+ include_context 'user_context'
8
+
9
+ describe '.create' do
10
+
11
+ context 'having a valid configuration' do
12
+ config = MangoPay.configuration
13
+
14
+ it 'creates a valid authorization token' do
15
+ token = MangoApi::OAuthTokens.create(config)
16
+ # noinspection RubyStringKeysInHashInspection
17
+ headers = {
18
+ 'Authorization' => "#{token['token_type']} #{token['access_token']}",
19
+ 'User-Agent' => "MANGOPAY V2 RubyBindings/#{MangoPay::VERSION}",
20
+ 'Content-Type' => 'application/json'
21
+ }
22
+ url = 'https://api.sandbox.mangopay.com/v2.01/sdk-unit-tests/users/natural'
23
+ # noinspection RubyResolve
24
+ user = NATURAL_USER_DATA
25
+ begin
26
+ # launch a request to the MangoPay server using
27
+ # the newly-created token as Authorization header
28
+ MangoApi::HttpClient.post_raw(URI(url)) do |request|
29
+ request.body = user.jsonify!
30
+ headers.each do |k, v|
31
+ request.add_field(k, v)
32
+ end
33
+ end
34
+ rescue MangoApi::ResponseError => e
35
+ raise "unsuccessful request using created token\n"\
36
+ "#{e.code} #{e.details}\n#{e.message}"
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,181 @@
1
+ require_relative '../../spec/context/pay_in_context'
2
+ require_relative '../../lib/mangopay/api/service/pay_ins'
3
+
4
+ describe MangoApi::PayIns do
5
+ include_context 'pay_in_context'
6
+
7
+ describe '.create' do
8
+
9
+ describe '#CARD WEB' do
10
+ context 'given a valid object' do
11
+ pay_in = CARD_WEB_PAY_IN_DATA
12
+
13
+ it 'creates the card web pay-in entity' do
14
+ created = MangoApi::PayIns.create_card_web pay_in
15
+
16
+ expect(created).to be_kind_of MangoModel::CardWebPayIn
17
+ expect(created.id).not_to be_nil
18
+ expect(created.status).to be MangoModel::TransactionStatus::CREATED
19
+ expect(created.payment_type).to be MangoModel::PayInPaymentType::CARD
20
+ expect(created.execution_type).to be MangoModel::PayInExecutionType::WEB
21
+ expect(its_the_same_card_web(pay_in, created)).to be_truthy
22
+ end
23
+ end
24
+ end
25
+
26
+ describe '#CARD DIRECT' do
27
+ context 'given a valid object' do
28
+ pay_in = CARD_DIRECT_PAY_IN_DATA
29
+
30
+ it 'creates the card direct pay-in entity' do
31
+ created = MangoApi::PayIns.create_card_direct pay_in
32
+
33
+ expect(created).to be_kind_of MangoModel::CardDirectPayIn
34
+ expect(created.id).not_to be_nil
35
+ expect(created.status).to be MangoModel::TransactionStatus::SUCCEEDED
36
+ expect(created.payment_type).to be MangoModel::PayInPaymentType::CARD
37
+ expect(created.execution_type).to be MangoModel::PayInExecutionType::DIRECT
38
+ expect(its_the_same_card_direct(pay_in, created)).to be_truthy
39
+ end
40
+ end
41
+ end
42
+
43
+ describe '#CARD PREAUTHORIZED' do
44
+ context 'given a valid object' do
45
+ pay_in = CARD_PRE_AUTH_PAY_IN_DATA
46
+
47
+ it 'creates the card pre-authorized pay-in entity' do
48
+ created = CARD_PRE_AUTH_PAY_IN_PERSISTED
49
+
50
+ expect(created).to be_kind_of MangoModel::CardPreAuthorizedPayIn
51
+ expect(created.id).not_to be_nil
52
+ expect(created.status).to be MangoModel::TransactionStatus::SUCCEEDED
53
+ expect(created.payment_type).to be MangoModel::PayInPaymentType::PREAUTHORIZED
54
+ expect(created.execution_type).to be MangoModel::PayInExecutionType::DIRECT
55
+ expect(its_the_same_card_pre_auth(pay_in, created)).to be_truthy
56
+ end
57
+ end
58
+ end
59
+
60
+ describe '#BANK_WIRE DIRECT' do
61
+
62
+ context 'to a wallet' do
63
+ context 'given a valid object' do
64
+ pay_in = BANK_WIRE_DIRECT_PAY_IN_DATA
65
+
66
+ it 'creates the bank wire direct pay-in entity' do
67
+ created = MangoApi::PayIns.create_bank_wire_direct pay_in
68
+
69
+ expect(created).to be_kind_of MangoModel::BankWireDirectPayIn
70
+ expect(created.id).not_to be_nil
71
+ expect(created.status).to be MangoModel::TransactionStatus::CREATED
72
+ expect(created.payment_type).to be MangoModel::PayInPaymentType::BANK_WIRE
73
+ expect(created.execution_type).to be MangoModel::PayInExecutionType::DIRECT
74
+ expect(created.bank_account).to be_kind_of MangoModel::BankAccount
75
+ expect(its_the_same_bank_wire_direct(pay_in, created)).to be_truthy
76
+ end
77
+ end
78
+ end
79
+
80
+ context 'to a client wallet' do
81
+ pay_in = MangoModel::BankWireDirectPayIn.new
82
+ pay_in.credited_wallet_id = 'CREDIT_EUR'
83
+ pay_in.declared_debited_funds = MangoModel::Money.new
84
+ pay_in.declared_debited_funds.currency = MangoModel::CurrencyIso::EUR
85
+ pay_in.declared_debited_funds.amount = 120
86
+ pay_in.declared_fees = MangoModel::Money.new
87
+ pay_in.declared_fees.currency = MangoModel::CurrencyIso::EUR
88
+ pay_in.declared_fees.amount = 30
89
+
90
+ it 'creates the bank wire direct entity' do
91
+ created = MangoApi::PayIns.create_client_bank_wire_direct pay_in
92
+ expect(created).to be_kind_of MangoModel::BankWireDirectPayIn
93
+ expect(created.id).not_to be_nil
94
+ expect(created.status).to be MangoModel::TransactionStatus::CREATED
95
+ expect(created.payment_type).to be MangoModel::PayInPaymentType::BANK_WIRE
96
+ expect(created.execution_type).to be MangoModel::PayInExecutionType::DIRECT
97
+ expect(created.bank_account).to be_kind_of MangoModel::BankAccount
98
+ expect(created.credited_wallet_id).to eq pay_in.credited_wallet_id
99
+ expect(its_the_same_money(pay_in.declared_debited_funds, created.declared_debited_funds)).to be_truthy
100
+ end
101
+ end
102
+ end
103
+
104
+ describe '#DIRECT_DEBIT WEB' do
105
+ context 'given a valid object' do
106
+ pay_in = DIRECT_DEBIT_WEB_PAY_IN_DATA
107
+
108
+ it 'creates the direct-debit web pay-in entity' do
109
+ created = MangoApi::PayIns.create_direct_debit_web pay_in
110
+
111
+ expect(created).to be_kind_of MangoModel::DirectDebitWebPayIn
112
+ expect(created.id).not_to be_nil
113
+ expect(created.status).to be MangoModel::TransactionStatus::CREATED
114
+ expect(created.payment_type).to be MangoModel::PayInPaymentType::DIRECT_DEBIT
115
+ expect(created.execution_type).to be MangoModel::PayInExecutionType::WEB
116
+ expect(its_the_same_direct_debit_web(pay_in, created)).to be_truthy
117
+ end
118
+ end
119
+ end
120
+
121
+ # describe '#DIRECT_DEBIT DIRECT' do
122
+ # context 'given a valid object' do
123
+ # mandate = MANDATE_PERSISTED
124
+ #
125
+ # # Attention
126
+ # #
127
+ # # To make this test pass, you must pause execution with a breakpoint on
128
+ # # the following line, and use your browser to open the page received
129
+ # # in the +mandate.redirect_url+ property and click the Confirm button
130
+ # # before continuing
131
+ # expect(mandate.status).to be MangoModel::MandateStatus::SUBMITTED # Place breakpoint here
132
+ # pay_in = DIRECT_DEBIT_DIRECT_PAY_IN_DATA
133
+ #
134
+ # it 'creates the direct-debit direct pay-in entity' do
135
+ # created = MangoApi::PayIns.create_direct_debit_direct pay_in
136
+ #
137
+ # expect(created).to be_kind_of MangoModel::DirectDebitDirectPayIn
138
+ # expect(created.id).not_to be_nil
139
+ # expect(created.status).to be MangoModel::TransactionStatus::CREATED
140
+ # expect(created.payment_type).to be MangoModel::PayInPaymentType::DIRECT_DEBIT
141
+ # expect(created.execution_type).to be MangoModel::PayInExecutionType::DIRECT
142
+ # expect(its_the_same_direct_debit_direct(pay_in, created)).to be_truthy
143
+ # end
144
+ # end
145
+ # end
146
+ end
147
+
148
+ # Fails with message 'Cannot found the ressource PayIn with the id=XXXXXXXX ',
149
+ # even though a newly-created Pay-In's ID is used. API problem?
150
+ #
151
+ # describe '.get_extended_card_view' do
152
+ #
153
+ # context "given an existing Card Web Pay-In entity's ID" do
154
+ # created = CARD_WEB_PAY_IN_PERSISTED
155
+ # id = created.id
156
+ #
157
+ # it 'retrieves an extended detail view of the card used' do
158
+ # extended_card = MangoApi::PayIns.extended_card_view id
159
+ #
160
+ # expect(extended_card).to be_kind_of MangoModel::PayInWebExtendedView
161
+ # expect(extended_card.id).to eq id
162
+ # end
163
+ # end
164
+ # end
165
+
166
+ describe '.get' do
167
+
168
+ context "given an existing entity's ID" do
169
+ created = CARD_WEB_PAY_IN_PERSISTED
170
+ id = created.id
171
+
172
+ it 'retrieves the corresponding entity' do
173
+ retrieved = MangoApi::PayIns.get id
174
+
175
+ expect(retrieved).to be_kind_of MangoModel::CardWebPayIn
176
+ expect(retrieved.id).to eq id
177
+ expect(its_the_same_card_web(created, retrieved)).to be_truthy
178
+ end
179
+ end
180
+ end
181
+ end
@@ -0,0 +1,39 @@
1
+ require_relative '../../lib/mangopay/api/service/pay_outs'
2
+ require_relative '../context/pay_out_context'
3
+
4
+ describe MangoApi::PayOuts do
5
+ include_context 'pay_out_context'
6
+
7
+ describe '.create' do
8
+
9
+ context 'given a valid object' do
10
+ pay_out = PAY_OUT_DATA
11
+
12
+ it 'creates the pay-out entity' do
13
+ created = MangoApi::PayOuts.create pay_out
14
+
15
+ expect(created).to be_kind_of MangoModel::PayOut
16
+ expect(created.id).not_to be_nil
17
+ expect(created.payment_type).to be MangoModel::PayOutPaymentType::BANK_WIRE
18
+ expect(created.status).to be MangoModel::TransactionStatus::CREATED
19
+ expect(its_the_same_pay_out(pay_out, created)).to be_truthy
20
+ end
21
+ end
22
+ end
23
+
24
+ describe '.get' do
25
+
26
+ context "given an existing entity's ID" do
27
+ created = PAY_OUT_PERSISTED
28
+ id = created.id
29
+
30
+ it 'retrieves the corresponding entity' do
31
+ retrieved = MangoApi::PayOuts.get id
32
+
33
+ expect(retrieved).to be_kind_of MangoModel::PayOut
34
+ expect(retrieved.id).to eq id
35
+ expect(its_the_same_pay_out(created, retrieved)).to be_truthy
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,58 @@
1
+ require_relative '../context/pre_authorization_context'
2
+ require_relative '../context/pre_authorization_context'
3
+ require_relative '../../lib/mangopay/api/service/pre_authorizations'
4
+ require_relative '../../lib/mangopay/model/enum/payment_status'
5
+
6
+ describe MangoApi::PreAuthorizations do
7
+ include_context 'pre_authorization_context'
8
+
9
+ describe '.create' do
10
+
11
+ context 'given a valid object' do
12
+ pre_auth = PRE_AUTHORIZATION_DATA
13
+
14
+ it 'creates the pre-authorization entity' do
15
+ created = MangoApi::PreAuthorizations.create pre_auth
16
+
17
+ expect(created).to be_kind_of MangoModel::PreAuthorization
18
+ expect(created.id).not_to be_nil
19
+ expect(created.payment_status).to be MangoModel::PaymentStatus::WAITING
20
+ expect(its_the_same_pre_auth(pre_auth, created)).to be_truthy
21
+ end
22
+ end
23
+ end
24
+
25
+ describe '.get' do
26
+
27
+ context "given an existing entity's ID" do
28
+ pre_auth = PRE_AUTHORIZATION_PERSISTED
29
+ id = pre_auth.id
30
+
31
+ it 'retrieves the corresponding entity' do
32
+ retrieved = MangoApi::PreAuthorizations.get id
33
+
34
+ expect(retrieved).to be_kind_of MangoModel::PreAuthorization
35
+ expect(retrieved.id).to eq id
36
+ expect(its_the_same_pre_auth(pre_auth, retrieved)).to be_truthy
37
+ end
38
+ end
39
+ end
40
+
41
+ describe '.cancel' do
42
+
43
+ context "given an existing entity's ID" do
44
+ it 'cancels the corresponding entity' do
45
+ # noinspection RubyResolve
46
+ pre_auth = new_pre_authorization_persisted
47
+ id = pre_auth.id
48
+ canceled = MangoApi::PreAuthorizations.cancel id
49
+
50
+ expect(canceled).to be_kind_of MangoModel::PreAuthorization
51
+ expect(canceled.id).to eq id
52
+ expect(canceled.status).to be MangoModel::PreAuthorizationStatus::SUCCEEDED
53
+ expect(canceled.payment_status).to be MangoModel::PaymentStatus::CANCELED
54
+ expect(its_the_same_pre_auth(pre_auth, canceled)).to be_truthy
55
+ end
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,40 @@
1
+ require_relative '../../lib/mangopay/api/service/refunds'
2
+ require_relative '../context/refund_context'
3
+ require_relative '../context/transfer_context'
4
+
5
+ describe MangoApi::Refunds do
6
+ include_context 'refund_context'
7
+ include_context 'transfer_context'
8
+
9
+ describe '.create_for_pay_in' do
10
+
11
+ context "given an existing pay-in entity's ID and a valid object" do
12
+ id = CARD_DIRECT_PAY_IN_PERSISTED.id
13
+ refund = build_pay_in_refund
14
+
15
+ it 'creates the refund entity' do
16
+ created = MangoApi::Refunds.create_for_pay_in(id, refund)
17
+
18
+ expect(created).to be_kind_of MangoModel::Refund
19
+ expect(created.id).not_to be_nil
20
+ expect(created.status).to be MangoModel::TransactionStatus::SUCCEEDED
21
+ end
22
+ end
23
+ end
24
+
25
+ describe '.create_for_transfer' do
26
+
27
+ context "given an existing transfer entity's ID and a valid object" do
28
+ id = TRANSFER_PERSISTED.id
29
+ refund = TRANSFER_REFUND_DATA
30
+
31
+ it 'creates the refund entity' do
32
+ created = MangoApi::Refunds.create_for_transfer(id, refund)
33
+
34
+ expect(created).to be_kind_of MangoModel::Refund
35
+ expect(created.id).not_to be_nil
36
+ expect(created.status).to be MangoModel::TransactionStatus::SUCCEEDED
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,121 @@
1
+ require_relative '../../lib/mangopay/api/service/reports'
2
+ require_relative '../../spec/context/report_context'
3
+ require_relative '../../lib/mangopay/common/sort_field'
4
+ require_relative '../../lib/mangopay/common/sort_direction'
5
+
6
+ describe MangoApi::Reports do
7
+ include_context 'report_context'
8
+
9
+ describe '.create_for_transactions' do
10
+
11
+ context 'given a valid object' do
12
+ report = REPORT_DATA
13
+
14
+ it 'creates the transaction report entity' do
15
+ created = MangoApi::Reports.create_for_transactions report do |filter|
16
+ filter.before_date = 1_463_440_221
17
+ filter.after_date = 1_449_817_821
18
+ filter.type = [MangoModel::TransactionType::PAYIN]
19
+ filter.status = [MangoModel::TransactionStatus::SUCCEEDED]
20
+ filter.nature = [MangoModel::TransactionNature::REGULAR]
21
+ filter.min_debited_funds_amount = 430
22
+ filter.min_debited_funds_currency = MangoModel::CurrencyIso::EUR
23
+ filter.max_debited_funds_amount = 8790
24
+ filter.max_debited_funds_currency = MangoModel::CurrencyIso::EUR
25
+ filter.min_fees_amount = 120
26
+ filter.min_fees_currency = MangoModel::CurrencyIso::EUR
27
+ filter.max_fees_amount = 450
28
+ filter.max_fees_currency = MangoModel::CurrencyIso::EUR
29
+ end
30
+
31
+ expect(created).to be_kind_of MangoModel::Report
32
+ expect(created.id).not_to be_nil
33
+ expect(created.report_type).to be MangoModel::ReportType::TRANSACTIONS
34
+ expect(created.status).to be MangoModel::ReportStatus::PENDING
35
+ end
36
+ end
37
+ end
38
+
39
+ describe '.create_for_wallets' do
40
+
41
+ context 'given a valid object' do
42
+ report = REPORT_DATA
43
+
44
+ it 'creates the transaction report entity' do
45
+ created = MangoApi::Reports.create_for_wallets report do |filter|
46
+ filter.before_date = 1_463_440_221
47
+ filter.after_date = 1_449_817_821
48
+ filter.currency = MangoModel::CurrencyIso::EUR
49
+ filter.min_balance_amount = 123
50
+ filter.min_balance_currency = MangoModel::CurrencyIso::EUR
51
+ filter.max_balance_amount = 1230
52
+ filter.max_balance_currency = MangoModel::CurrencyIso::EUR
53
+ end
54
+
55
+ expect(created).to be_kind_of MangoModel::Report
56
+ expect(created.id).not_to be_nil
57
+ expect(created.report_type).to be MangoModel::ReportType::WALLETS
58
+ expect(created.status).to be MangoModel::ReportStatus::PENDING
59
+ end
60
+ end
61
+ end
62
+
63
+ describe '.get' do
64
+
65
+ context "given an existing entity's ID" do
66
+ created = REPORT_PERSISTED
67
+ id = created.id
68
+
69
+ it 'retrieves the corresponding entity' do
70
+ retrieved = MangoApi::Reports.get id
71
+
72
+ expect(retrieved).to be_kind_of MangoModel::Report
73
+ expect(retrieved.id).to eq id
74
+ end
75
+ end
76
+ end
77
+
78
+ describe '.all' do
79
+
80
+ context 'from a correctly-configured environment' do
81
+ context 'not having specified filters' do
82
+ default_per_page = 10
83
+
84
+ it 'retrieves list with default parameters' do
85
+ results = MangoApi::Reports.all
86
+
87
+ expect(results).to be_kind_of Array
88
+ expect(results.length).to eq default_per_page
89
+ results.each do |result|
90
+ expect(result).to be_kind_of MangoModel::Report
91
+ expect(result.id).not_to be_nil
92
+ end
93
+ end
94
+ end
95
+
96
+ context 'having specified filters' do
97
+ per_page = 11
98
+
99
+ it 'retrieves list with specified parameters' do
100
+ results = MangoApi::Reports.all do |filter|
101
+ filter.page = 1
102
+ filter.per_page = per_page
103
+ filter.sort_field = MangoPay::SortField::CREATION_DATE
104
+ filter.sort_direction = MangoPay::SortDirection::DESC
105
+ end
106
+
107
+ expect(results).to be_kind_of Array
108
+ expect(results.length).to eq per_page
109
+ results.each.with_index do |result, index|
110
+ expect(result).to be_kind_of MangoModel::Report
111
+ expect(result.id).not_to be_nil
112
+ next if index == results.length - 1
113
+ first_date = result.creation_date
114
+ second_date = results[index + 1].creation_date
115
+ expect(first_date >= second_date).to be_truthy
116
+ end
117
+ end
118
+ end
119
+ end
120
+ end
121
+ end