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,295 @@
1
+ require 'securerandom'
2
+ require_relative '../context/bank_account_context'
3
+ require_relative '../context/transfer_context'
4
+ require_relative '../context/pay_out_context'
5
+ require_relative '../context/kyc_document_context'
6
+ require_relative '../context/ubo_declaration_context'
7
+ require_relative '../context/refund_context'
8
+ require_relative '../../lib/mangopay/api/service/bank_accounts'
9
+ require_relative '../../lib/mangopay/api/service/responses'
10
+ require_relative '../../lib/mangopay/api/service/cards'
11
+ require_relative '../../lib/mangopay/api/service/pay_ins'
12
+ require_relative '../../lib/mangopay/api/service/pay_outs'
13
+ require_relative '../../lib/mangopay/api/service/refunds'
14
+ require_relative '../../lib/mangopay/model/response_replica'
15
+
16
+ describe MangoApi::Responses do
17
+ include_context 'bank_account_context'
18
+ include_context 'transfer_context'
19
+ include_context 'pay_out_context'
20
+ include_context 'kyc_document_context'
21
+ include_context 'ubo_declaration_context'
22
+ include_context 'refund_context'
23
+
24
+ describe '.replicate' do
25
+
26
+ describe '#User' do
27
+
28
+ describe '#Natural' do
29
+ context "given a successful POST request's idempotency key" do
30
+ idempotency_key = SecureRandom.uuid
31
+ user = MangoApi::Users.create(NATURAL_USER_DATA, idempotency_key)
32
+
33
+ it 'retrieves a replica of the original response' do
34
+ replica = MangoApi::Responses.replicate idempotency_key
35
+
36
+ expect(replica.resource).to be_kind_of MangoModel::NaturalUser
37
+ expect(replica.resource.id).to eq user.id
38
+ expect(its_the_same_natural(user, replica.resource)).to be_truthy
39
+ end
40
+ end
41
+ end
42
+ end
43
+
44
+ describe '#BankAccount' do
45
+ context "given a successful POST request's idempotency key" do
46
+ idempotency_key = SecureRandom.uuid
47
+ account = MangoApi::BankAccounts.create(IBAN_ACCOUNT_DATA,
48
+ idempotency_key)
49
+
50
+ it 'retrieves a replica of the original response' do
51
+ replica = MangoApi::Responses.replicate idempotency_key
52
+
53
+ expect(replica.resource).to be_kind_of MangoModel::IbanBankAccount
54
+ expect(replica.resource.id).to eq account.id
55
+ expect(its_the_same_iban(account, replica.resource)).to be_truthy
56
+ end
57
+ end
58
+ end
59
+
60
+ describe '#Wallet' do
61
+ context "given a successful POST request's idempotency key" do
62
+ idempotency_key = SecureRandom.uuid
63
+ wallet = MangoApi::Wallets.create(WALLET_DATA, idempotency_key)
64
+
65
+ it 'retrieves a replica of the original response' do
66
+ replica = MangoApi::Responses.replicate idempotency_key
67
+
68
+ expect(replica.resource).to be_kind_of MangoModel::Wallet
69
+ expect(replica.resource.id).to eq wallet.id
70
+ expect(its_the_same_wallet(wallet, replica.resource)).to be_truthy
71
+ end
72
+ end
73
+ end
74
+
75
+ describe '#Transfer' do
76
+ context "given a successful POST request's idempotency key" do
77
+ idempotency_key = SecureRandom.uuid
78
+ transfer = MangoApi::Transfers.create(TRANSFER_DATA, idempotency_key)
79
+
80
+ it 'retrieves a replica of the original response' do
81
+ replica = MangoApi::Responses.replicate idempotency_key
82
+
83
+ expect(replica.resource).to be_kind_of MangoModel::Transfer
84
+ expect(replica.resource.id).to eq transfer.id
85
+ expect(its_the_same_transfer(transfer, replica.resource)).to be_truthy
86
+ end
87
+ end
88
+ end
89
+
90
+ describe '#CardRegistration' do
91
+ context "given a successful POST request's idempotency key" do
92
+ idempotency_key = SecureRandom.uuid
93
+ card_registration = MangoApi::Cards.create_registration(CARD_REGISTRATION_DATA, idempotency_key)
94
+
95
+ it 'retrieves a replica of the original response' do
96
+ replica = MangoApi::Responses.replicate(idempotency_key)
97
+
98
+ expect(replica.resource).to be_kind_of MangoModel::CardRegistration
99
+ expect(replica.resource.id).to eq card_registration.id
100
+ end
101
+ end
102
+ end
103
+
104
+ describe '#PreAuthorization' do
105
+ context "given a successful POST request's idempotency key" do
106
+ idempotency_key = SecureRandom.uuid
107
+ pre_authorization = MangoApi::PreAuthorizations.create(PRE_AUTHORIZATION_DATA, idempotency_key)
108
+
109
+ it 'retrieves a replica of the original response' do
110
+ replica = MangoApi::Responses.replicate idempotency_key
111
+
112
+ expect(replica.resource).to be_kind_of MangoModel::PreAuthorization
113
+ expect(replica.resource.id).to eq pre_authorization.id
114
+ expect(its_the_same_pre_auth(pre_authorization, replica.resource)).to be_truthy
115
+ end
116
+ end
117
+ end
118
+
119
+ describe '#PayIn' do
120
+
121
+ describe '#CARD WEB' do
122
+ context "given a successful POST request's idempotency key" do
123
+ idempotency_key = SecureRandom.uuid
124
+ pay_in = MangoApi::PayIns.create_card_web(CARD_WEB_PAY_IN_DATA, idempotency_key)
125
+
126
+ it 'retrieves a replica of the original response' do
127
+ replica = MangoApi::Responses.replicate idempotency_key
128
+
129
+ expect(replica.resource).to be_kind_of MangoModel::CardWebPayIn
130
+ expect(replica.resource.id).to eq pay_in.id
131
+ expect(its_the_same_card_web(pay_in, replica.resource)).to be_truthy
132
+ end
133
+ end
134
+ end
135
+
136
+ describe '#CARD DIRECT' do
137
+ context "given a successful POST request's idempotency key" do
138
+ idempotency_key = SecureRandom.uuid
139
+ pay_in = MangoApi::PayIns.create_card_direct(CARD_DIRECT_PAY_IN_DATA, idempotency_key)
140
+
141
+ it 'retrieves a replica of the original response' do
142
+ replica = MangoApi::Responses.replicate idempotency_key
143
+
144
+ expect(replica.resource).to be_kind_of MangoModel::CardDirectPayIn
145
+ expect(replica.resource.id).to eq pay_in.id
146
+ expect(its_the_same_card_direct(pay_in, replica.resource)).to be_truthy
147
+ end
148
+ end
149
+ end
150
+
151
+ describe '#CARD PREAUTHORIZED' do
152
+ context "given a successful POST request's idempotency key" do
153
+ idempotency_key = SecureRandom.uuid
154
+
155
+ it 'retrieves a replica of the original response' do
156
+ pay_in_data = build_card_pre_auth_pay_in
157
+ # noinspection RubyResolve
158
+ pay_in_data.preauthorization_id = new_pre_authorization_persisted.id
159
+ pay_in = MangoApi::PayIns.create_card_pre_authorized(pay_in_data, idempotency_key)
160
+ replica = MangoApi::Responses.replicate idempotency_key
161
+
162
+ expect(replica.resource).to be_kind_of MangoModel::CardPreAuthorizedPayIn
163
+ expect(replica.resource.id).to eq pay_in.id
164
+ expect(its_the_same_card_pre_auth(pay_in, replica.resource)).to be_truthy
165
+ end
166
+ end
167
+ end
168
+
169
+ describe '#BANK_WIRE DIRECT' do
170
+ context "given a successful POST request's idempotency key" do
171
+ idempotency_key = SecureRandom.uuid
172
+ pay_in = MangoApi::PayIns.create_bank_wire_direct(BANK_WIRE_DIRECT_PAY_IN_DATA, idempotency_key)
173
+
174
+ it 'retrieves a replica of the original response' do
175
+ replica = MangoApi::Responses.replicate idempotency_key
176
+
177
+ expect(replica.resource).to be_kind_of MangoModel::BankWireDirectPayIn
178
+ expect(replica.resource.id).to eq pay_in.id
179
+ expect(its_the_same_bank_wire_direct(pay_in, replica.resource)).to be_truthy
180
+ end
181
+ end
182
+ end
183
+
184
+ describe '#DIRECT_DEBIT WEB' do
185
+ context "given a successful POST request's idempotency key" do
186
+ idempotency_key = SecureRandom.uuid
187
+ pay_in = MangoApi::PayIns.create_direct_debit_web(DIRECT_DEBIT_WEB_PAY_IN_DATA, idempotency_key)
188
+
189
+ it 'retrieves a replica of the original response' do
190
+ replica = MangoApi::Responses.replicate idempotency_key
191
+
192
+ expect(replica.resource).to be_kind_of MangoModel::DirectDebitWebPayIn
193
+ expect(replica.resource.id).to eq pay_in.id
194
+ expect(its_the_same_direct_debit_web(pay_in, replica.resource)).to be_truthy
195
+ end
196
+ end
197
+ end
198
+
199
+ describe '#DIRECT_DEBIT DIRECT' do
200
+ context "given a successful POST request's idempotency key" do
201
+ idempotency_key = SecureRandom.uuid
202
+ pay_in = MangoApi::PayIns.create_direct_debit_direct(DIRECT_DEBIT_DIRECT_PAY_IN_DATA, idempotency_key)
203
+
204
+ it 'retrieves a replica of the original response' do
205
+ replica = MangoApi::Responses.replicate idempotency_key
206
+
207
+ expect(replica.resource).to be_kind_of MangoModel::DirectDebitDirectPayIn
208
+ expect(replica.resource.id).to eq pay_in.id
209
+ expect(its_the_same_direct_debit_direct(pay_in, replica.resource)).to be_truthy
210
+ end
211
+ end
212
+ end
213
+ end
214
+
215
+ describe '#Mandate' do
216
+ context "given a successful POST request's idempotency key" do
217
+ idempotency_key = SecureRandom.uuid
218
+ mandate = MangoApi::Mandates.create(MANDATE_DATA, idempotency_key)
219
+
220
+ it 'retrieves a replica of the original response' do
221
+ replica = MangoApi::Responses.replicate idempotency_key
222
+
223
+ expect(replica.resource).to be_kind_of MangoModel::Mandate
224
+ expect(replica.resource.id).to eq mandate.id
225
+ expect(its_the_same_mandate(mandate, replica.resource)).to be_truthy
226
+ end
227
+ end
228
+ end
229
+
230
+ describe '#PayOut' do
231
+ context "given a successful POST request's idempotency key" do
232
+ idempotency_key = SecureRandom.uuid
233
+ pay_out = MangoApi::PayOuts.create(PAY_OUT_DATA, idempotency_key)
234
+
235
+ it 'retrieves a replica of the original response' do
236
+ replica = MangoApi::Responses.replicate idempotency_key
237
+
238
+ expect(replica.resource).to be_kind_of MangoModel::PayOut
239
+ expect(replica.resource.id).to eq pay_out.id
240
+ expect(its_the_same_pay_out(pay_out, replica.resource)).to be_truthy
241
+ end
242
+ end
243
+ end
244
+
245
+ describe '#KycDocument' do
246
+ context "given a successful POST request's idempotency key" do
247
+ idempotency_key = SecureRandom.uuid
248
+ kyc_doc = MangoApi::KycDocuments.create KYC_DOCUMENT_DATA,
249
+ NATURAL_USER_PERSISTED.id,
250
+ idempotency_key
251
+
252
+ it 'retrieves a replica of the original response' do
253
+ replica = MangoApi::Responses.replicate idempotency_key
254
+
255
+ expect(replica.resource).to be_kind_of MangoModel::KycDocument
256
+ expect(replica.resource.id).to eq kyc_doc.id
257
+ expect(its_the_same_kyc_doc(kyc_doc, replica.resource)).to be_truthy
258
+ end
259
+ end
260
+ end
261
+
262
+ describe '#UboDeclaration' do
263
+ context "given a successful POST request's idempotency key" do
264
+ idempotency_key = SecureRandom.uuid
265
+ ubo_decl = MangoApi::UboDeclarations.create UBO_DECLARATION_DATA,
266
+ LEGAL_USER_PERSISTED.id,
267
+ idempotency_key
268
+
269
+ it 'retrieves a replica of the original response' do
270
+ replica = MangoApi::Responses.replicate idempotency_key
271
+
272
+ expect(replica.resource).to be_kind_of MangoModel::UboDeclaration
273
+ expect(replica.resource.id).to eq ubo_decl.id
274
+ end
275
+ end
276
+ end
277
+
278
+ describe '#Refund' do
279
+ context "given a successful POST request's idempotency key" do
280
+ idempotency_key = SecureRandom.uuid
281
+ transfer = MangoApi::Transfers.create TRANSFER_DATA
282
+ refund = MangoApi::Refunds.create_for_transfer transfer.id,
283
+ TRANSFER_REFUND_DATA,
284
+ idempotency_key
285
+
286
+ it 'retrieves a replica of the original response' do
287
+ replica = MangoApi::Responses.replicate idempotency_key
288
+
289
+ expect(replica.resource).to be_kind_of MangoModel::Refund
290
+ expect(replica.resource.id).to eq refund.id
291
+ end
292
+ end
293
+ end
294
+ end
295
+ end
@@ -0,0 +1,37 @@
1
+ require_relative '../../lib/mangopay/api/service/settlement_transfers'
2
+ require_relative '../context/settlement_transfer_context'
3
+
4
+ describe MangoApi::SettlementTransfers do
5
+ include_context 'settlement_transfer_context'
6
+
7
+ describe '.create' do
8
+
9
+ context 'given a valid object' do
10
+ id = REPUDIATION_PERSISTED.id
11
+ transfer = SETTLEMENT_TRANSFER_DATA
12
+
13
+ it 'creates the settlement transfer entity' do
14
+ created = MangoApi::SettlementTransfers.create(id, transfer)
15
+
16
+ expect(created).to be_kind_of MangoModel::SettlementTransfer
17
+ expect(created.id).not_to be_nil
18
+ expect(created.repudiation_id).to eq id
19
+ end
20
+ end
21
+ end
22
+
23
+ describe '.get' do
24
+
25
+ context "given an existing entity's ID" do
26
+ transfer = SETTLEMENT_TRANSFER_PERSISTED
27
+ id = transfer.id
28
+
29
+ it 'retrieves the corresponding entity' do
30
+ retrieved = MangoApi::SettlementTransfers.get id
31
+
32
+ expect(retrieved).to be_kind_of MangoModel::SettlementTransfer
33
+ expect(retrieved.id).to eq id
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,233 @@
1
+ require_relative '../../lib/mangopay/api/service/transactions'
2
+ require_relative '../../lib/mangopay/api/service/clients'
3
+ require_relative '../context/dispute_context'
4
+ require_relative '../context/pre_authorization_context'
5
+ require_relative '../../lib/mangopay/common/sort_field'
6
+ require_relative '../../lib/mangopay/common/sort_direction'
7
+
8
+ describe MangoApi::Transactions do
9
+ include_context 'dispute_context'
10
+ include_context 'pre_authorization_context'
11
+
12
+ describe '.of_user' do
13
+
14
+ context "given an existing user entity's id" do
15
+ id = NATURAL_USER_PERSISTED.id
16
+
17
+ context 'not having specified filters' do
18
+ results = MangoApi::Transactions.of_user id
19
+
20
+ it 'retrieves list with default parameters' do
21
+ expect(results).to be_kind_of Array
22
+ results.each do |result|
23
+ expect(result).to be_kind_of MangoModel::Transaction
24
+ expect(result.id).not_to be_nil
25
+ expect(result.author_id).to eq id
26
+ end
27
+ end
28
+ end
29
+
30
+ context 'having specified filters' do
31
+ results = MangoApi::Transactions.of_user id do |filter|
32
+ filter.page = 1
33
+ filter.per_page = 3
34
+ filter.sort_field = MangoPay::SortField::CREATION_DATE
35
+ filter.sort_direction = MangoPay::SortDirection::ASC
36
+ end
37
+
38
+ it 'retrieves list with specified parameters' do
39
+ expect(results).to be_kind_of Array
40
+ results.each do |result|
41
+ expect(result).to be_kind_of MangoModel::Transaction
42
+ expect(result.id).not_to be_nil
43
+ expect(result.author_id).to eq id
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
49
+
50
+ describe '.of_wallet' do
51
+
52
+ describe "given an existing wallet entity's id" do
53
+ id = WALLET_PERSISTED.id
54
+
55
+ context 'not having specified filters' do
56
+ results = MangoApi::Transactions.of_wallet id
57
+
58
+ it 'retrieves list with default parameters' do
59
+ expect(results).to be_kind_of Array
60
+ results.each do |result|
61
+ expect(result).to be_kind_of MangoModel::Transaction
62
+ expect(result.id).not_to be_nil
63
+ expect(result.credited_wallet_id == id \
64
+ || result.debited_wallet_id == id).to be_truthy
65
+ end
66
+ end
67
+ end
68
+
69
+ context 'having specified filters' do
70
+ results = MangoApi::Transactions.of_wallet id do |filter|
71
+ filter.page = 1
72
+ filter.per_page = 3
73
+ filter.sort_field = MangoPay::SortField::CREATION_DATE
74
+ filter.sort_direction = MangoPay::SortDirection::ASC
75
+ end
76
+
77
+ it 'retrieves list with specified parameters' do
78
+ expect(results).to be_kind_of Array
79
+ results.each do |result|
80
+ expect(result).to be_kind_of MangoModel::Transaction
81
+ expect(result.id).not_to be_nil
82
+ expect(result.credited_wallet_id == id \
83
+ || result.debited_wallet_id == id).to be_truthy
84
+ end
85
+ end
86
+ end
87
+ end
88
+ end
89
+
90
+ describe '.of_dispute' do
91
+
92
+ describe "given an existing dispute entity's id" do
93
+ id = DISPUTE_PERSISTED.id
94
+
95
+ context 'not having specified filters' do
96
+ results = MangoApi::Transactions.of_dispute id
97
+
98
+ it 'retrieves list with default parameters' do
99
+ expect(results).to be_kind_of Array
100
+ results.each do |result|
101
+ expect(result).to be_kind_of MangoModel::Transaction
102
+ expect(result.id).not_to be_nil
103
+ end
104
+ end
105
+ end
106
+
107
+ context 'having specified filters' do
108
+ results = MangoApi::Transactions.of_dispute id do |filter|
109
+ filter.page = 1
110
+ filter.per_page = 3
111
+ filter.sort_field = MangoPay::SortField::CREATION_DATE
112
+ filter.sort_direction = MangoPay::SortDirection::ASC
113
+ end
114
+
115
+ it 'retrieves list with specified parameters' do
116
+ expect(results).to be_kind_of Array
117
+ results.each do |result|
118
+ expect(result).to be_kind_of MangoModel::Transaction
119
+ expect(result.id).not_to be_nil
120
+ end
121
+ end
122
+ end
123
+ end
124
+ end
125
+
126
+ describe '.of_client' do
127
+
128
+ describe 'from a correctly-configured environment' do
129
+ context 'not having specified filters' do
130
+ results = MangoApi::Transactions.of_client
131
+
132
+ it 'retrieves list with default parameters' do
133
+ expect(results).to be_kind_of Array
134
+ results.each do |result|
135
+ expect(result).to be_kind_of MangoModel::Transaction
136
+ expect(result.id).not_to be_nil
137
+ end
138
+ end
139
+ end
140
+
141
+ context 'having specified filters' do
142
+ results = MangoApi::Transactions.of_client do |filter|
143
+ filter.page = 1
144
+ filter.per_page = 3
145
+ filter.sort_field = MangoPay::SortField::CREATION_DATE
146
+ filter.sort_direction = MangoPay::SortDirection::ASC
147
+ end
148
+
149
+ it 'retrieves list with specified parameters' do
150
+ expect(results).to be_kind_of Array
151
+ results.each do |result|
152
+ expect(result).to be_kind_of MangoModel::Transaction
153
+ expect(result.id).not_to be_nil
154
+ end
155
+ end
156
+ end
157
+ end
158
+ end
159
+
160
+ describe '.of_client_wallet' do
161
+
162
+ describe 'from a correctly-configured environment' do
163
+ context 'not having specified filters' do
164
+ results = MangoApi::Transactions
165
+ .of_client_wallet MangoModel::FundsType::FEES,
166
+ MangoModel::CurrencyIso::EUR
167
+
168
+ it 'retrieves list with default parameters' do
169
+ expect(results).to be_kind_of Array
170
+ results.each do |result|
171
+ expect(result).to be_kind_of MangoModel::Transaction
172
+ expect(result.id).not_to be_nil
173
+ end
174
+ end
175
+ end
176
+
177
+ context 'having specified filters' do
178
+ results = MangoApi::Transactions
179
+ .of_client_wallet(MangoModel::FundsType::CREDIT,
180
+ MangoModel::CurrencyIso::EUR) do |filter|
181
+ filter.page = 1
182
+ filter.per_page = 3
183
+ filter.sort_field = MangoPay::SortField::CREATION_DATE
184
+ filter.sort_direction = MangoPay::SortDirection::ASC
185
+ end
186
+
187
+ it 'retrieves list with specified parameters' do
188
+ expect(results).to be_kind_of Array
189
+ results.each do |result|
190
+ expect(result).to be_kind_of MangoModel::Transaction
191
+ expect(result.id).not_to be_nil
192
+ end
193
+ end
194
+ end
195
+ end
196
+ end
197
+
198
+ describe '.of_pre_authorization' do
199
+
200
+ describe "given a valid pre-authorization entity's ID" do
201
+ id = PRE_AUTHORIZATION_PERSISTED.id
202
+
203
+ context 'not having specified filters' do
204
+ results = MangoApi::Transactions.of_pre_authorization id
205
+
206
+ it 'retrieves list with default parameters' do
207
+ expect(results).to be_kind_of Array
208
+ results.each do |result|
209
+ expect(result).to be_kind_of MangoModel::Transaction
210
+ expect(result.id).not_to be_nil
211
+ end
212
+ end
213
+ end
214
+
215
+ context 'having specified filters' do
216
+ results = MangoApi::Transactions.of_pre_authorization id do |filter|
217
+ filter.page = 1
218
+ filter.per_page = 3
219
+ filter.sort_field = MangoPay::SortField::CREATION_DATE
220
+ filter.sort_direction = MangoPay::SortDirection::ASC
221
+ end
222
+
223
+ it 'retrieves list with specified parameters' do
224
+ expect(results).to be_kind_of Array
225
+ results.each do |result|
226
+ expect(result).to be_kind_of MangoModel::Transaction
227
+ expect(result.id).not_to be_nil
228
+ end
229
+ end
230
+ end
231
+ end
232
+ end
233
+ end