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,135 @@
1
+ require_relative '../context/card_context'
2
+ require_relative '../../lib/mangopay/api/service/cards'
3
+ require_relative '../../lib/mangopay/common/sort_field'
4
+ require_relative '../../lib/mangopay/common/sort_direction'
5
+
6
+ describe MangoApi::Cards do
7
+ include_context 'card_context'
8
+
9
+ describe '.create_registration' do
10
+
11
+ context 'given a valid object' do
12
+ card_registration = CARD_REGISTRATION_DATA
13
+
14
+ it 'creates the card registration entity' do
15
+ retrieved = MangoApi::Cards.create_registration card_registration
16
+
17
+ expect(retrieved).to be_kind_of MangoModel::CardRegistration
18
+ expect(retrieved.id).not_to be_nil
19
+ expect(retrieved.access_key).not_to be_nil
20
+ expect(retrieved.card_registration_url).not_to be_nil
21
+ expect(retrieved.preregistration_data).not_to be_nil
22
+ expect(retrieved.status).to be MangoModel::CardStatus::CREATED
23
+ end
24
+ end
25
+ end
26
+
27
+ describe '.complete_registration' do
28
+
29
+ context 'given the registration data from Tokenization Server' do
30
+ it 'completes the card registration process' do
31
+ created = CARD_REGISTRATION_PERSISTED
32
+ completed = CARD_REGISTRATION_COMPLETED
33
+ expect(completed).to be_kind_of MangoModel::CardRegistration
34
+ expect(completed.id).to eq created.id
35
+ expect(completed.status).to be MangoModel::CardStatus::VALIDATED
36
+ expect(completed.card_id).not_to be_nil
37
+ end
38
+ end
39
+ end
40
+
41
+ describe '.get_registration' do
42
+
43
+ context "given an existing entity's ID" do
44
+ card_registration = CARD_REGISTRATION_PERSISTED
45
+ id = card_registration.id
46
+
47
+ it 'retrieves the corresponding entity' do
48
+ retrieved = MangoApi::Cards.get_registration id
49
+
50
+ expect(retrieved).to be_kind_of MangoModel::CardRegistration
51
+ expect(retrieved.id).to eq card_registration.id
52
+ end
53
+ end
54
+ end
55
+
56
+ describe '.get' do
57
+
58
+ context "given a validated card entity's ID" do
59
+ id = CARD_REGISTRATION_COMPLETED.card_id
60
+ retrieved = MangoApi::Cards.get id
61
+
62
+ it 'retrieves the corresponding card entity' do
63
+ expect(retrieved).to be_kind_of MangoModel::Card
64
+ card = retrieved
65
+ expect(card.id).to eq id
66
+ expect(card.active).to be_truthy
67
+ expect(card.card_type).to be MangoModel::CardType::CB_VISA_MASTERCARD
68
+ expect(card.currency).to be MangoModel::CurrencyIso::EUR
69
+ expect(card.expiration_date).to eq CARD_EXPIRATION
70
+ expect(card.fingerprint).not_to be_nil
71
+ expect(card.user_id).to eq CARD_REGISTRATION_COMPLETED.user_id
72
+ expect(card.validity).to be MangoModel::CardValidity::UNKNOWN
73
+ end
74
+ end
75
+ end
76
+
77
+ describe '.of_user' do
78
+
79
+ context "given a valid user entity's ID" do
80
+ id = NATURAL_USER_PERSISTED.id
81
+
82
+ context 'not having specified filters' do
83
+ it 'retrieves list with default parameters' do
84
+ results = MangoApi::Cards.of_user id
85
+
86
+ expect(results).to be_kind_of Array
87
+ results.each do |result|
88
+ expect(result).to be_kind_of MangoModel::Card
89
+ expect(result.id).not_to be_nil
90
+ expect(result.user_id).to eq id
91
+ end
92
+ end
93
+ end
94
+
95
+ context 'having specified filters' do
96
+ per_page = 1
97
+
98
+ it 'retrieves list with specified parameters' do
99
+ results = MangoApi::Cards.of_user id do |filter|
100
+ filter.page = 1
101
+ filter.per_page = per_page
102
+ filter.sort_field = MangoPay::SortField::CREATION_DATE
103
+ filter.sort_direction = MangoPay::SortDirection::ASC
104
+ end
105
+
106
+ expect(results).to be_kind_of Array
107
+ expect(results.length).to eq per_page
108
+ results.each do |result|
109
+ expect(result).to be_kind_of MangoModel::Card
110
+ expect(result.id).not_to be_nil
111
+ expect(result.user_id).to eq id
112
+ end
113
+ end
114
+ end
115
+ end
116
+
117
+ # Currently disabled because it deactivates the only testing card.
118
+ # Works if ran alone.
119
+ #
120
+ # describe '.deactivate' do
121
+ #
122
+ # context "given a valid card entity's ID" do
123
+ # it 'deactivates the corresponding card entity' do
124
+ # card = CARD
125
+ # id = card.id
126
+ # deactivated = MangoApi::Cards.deactivate id
127
+ #
128
+ # expect(deactivated).to be_kind_of MangoModel::Card
129
+ # expect(deactivated.id).to eq id
130
+ # expect(deactivated.active).to be_falsey
131
+ # end
132
+ # end
133
+ # end
134
+ end
135
+ end
@@ -0,0 +1,148 @@
1
+ require_relative '../../lib/mangopay/api/service/client_wallets'
2
+ require_relative '../../lib/mangopay/model/entity/client_wallet'
3
+ require_relative '../../lib/mangopay/common/sort_field'
4
+ require_relative '../../lib/mangopay/common/sort_direction'
5
+
6
+ describe MangoApi::ClientWallets do
7
+
8
+ describe '.get' do
9
+
10
+ context 'from a correctly-configured environment' do
11
+ it "retrieves the environment's client's ClientWallet entities" do
12
+ funds_type = MangoModel::FundsType::CREDIT
13
+ currency = MangoModel::CurrencyIso::EUR
14
+ retrieved = MangoApi::ClientWallets.get(funds_type, currency)
15
+
16
+ expect(retrieved).to be_kind_of MangoModel::ClientWallet
17
+ expect(retrieved.funds_type).to be funds_type
18
+ expect(retrieved.currency).to be currency
19
+ end
20
+ end
21
+ end
22
+
23
+ describe '.all' do
24
+ default_per_page = 10
25
+
26
+ context 'not having specified filters' do
27
+ results = MangoApi::ClientWallets.all
28
+
29
+ it 'retrieves list with default parameters' do
30
+ expect(results).to be_kind_of Array
31
+ expect(results.length).to eq default_per_page
32
+ results.each do |result|
33
+ expect(result).to be_kind_of MangoModel::ClientWallet
34
+ end
35
+ end
36
+ end
37
+
38
+ context 'having specified filters' do
39
+ per_page = 3
40
+ results = MangoApi::ClientWallets.all do |filter|
41
+ filter.page = 1
42
+ filter.per_page = per_page
43
+ filter.sort_field = MangoPay::SortField::CREATION_DATE
44
+ filter.sort_direction = MangoPay::SortDirection::ASC
45
+ end
46
+
47
+ it 'retrieves list according to provided parameters' do
48
+ expect(results).to be_kind_of Array
49
+ expect(results.length).to eq per_page
50
+ results.each.with_index do |result, index|
51
+ expect(result).to be_kind_of MangoModel::ClientWallet
52
+ next if index == results.length - 1
53
+ first_date = result.creation_date
54
+ second_date = results[index + 1].creation_date
55
+ expect(first_date <= second_date).to be_truthy
56
+ end
57
+ end
58
+ end
59
+ end
60
+
61
+ describe '.of_funds_type' do
62
+ default_per_page = 10
63
+
64
+ describe '#FEES' do
65
+ funds_type = MangoModel::FundsType::FEES
66
+ MangoApi::ClientWallets.get(funds_type, MangoModel::CurrencyIso::FKP)
67
+ MangoApi::ClientWallets.get(funds_type, MangoModel::CurrencyIso::LAK)
68
+ MangoApi::ClientWallets.get(funds_type, MangoModel::CurrencyIso::MMK)
69
+ MangoApi::ClientWallets.get(funds_type, MangoModel::CurrencyIso::NOK)
70
+ MangoApi::ClientWallets.get(funds_type, MangoModel::CurrencyIso::XBA)
71
+
72
+ context 'not having specified filters' do
73
+ it 'retrieves list with default parameters' do
74
+ results = MangoApi::ClientWallets.of_funds_type(funds_type)
75
+
76
+ check_results(results, default_per_page, funds_type)
77
+ end
78
+ end
79
+
80
+ context 'having specified filters' do
81
+ per_page = 3
82
+ results = MangoApi::ClientWallets.of_funds_type(funds_type) do |filter|
83
+ filter.page = 1
84
+ filter.per_page = per_page
85
+ filter.sort_field = MangoPay::SortField::CREATION_DATE
86
+ filter.sort_direction = MangoPay::SortDirection::ASC
87
+ end
88
+
89
+ it 'retrieves list according to provided parameters' do
90
+ check_results(results, per_page, funds_type)
91
+ results.each.with_index do |result, index|
92
+ next if index == results.length - 1
93
+ first_date = result.creation_date
94
+ second_date = results[index + 1].creation_date
95
+ expect(first_date <= second_date).to be_truthy
96
+ end
97
+ end
98
+ end
99
+ end
100
+
101
+ describe '#CREDIT' do
102
+ funds_type = MangoModel::FundsType::FEES
103
+ MangoApi::ClientWallets.get(funds_type, MangoModel::CurrencyIso::FKP)
104
+ MangoApi::ClientWallets.get(funds_type, MangoModel::CurrencyIso::LAK)
105
+ MangoApi::ClientWallets.get(funds_type, MangoModel::CurrencyIso::MMK)
106
+ MangoApi::ClientWallets.get(funds_type, MangoModel::CurrencyIso::NOK)
107
+ MangoApi::ClientWallets.get(funds_type, MangoModel::CurrencyIso::XBA)
108
+
109
+ context 'not having specified filters' do
110
+ it 'retrieves list with default parameters' do
111
+ results = MangoApi::ClientWallets.of_funds_type(funds_type)
112
+
113
+ check_results(results, default_per_page, funds_type)
114
+ end
115
+ end
116
+
117
+ context 'having specified filters' do
118
+ per_page = 3
119
+ results = MangoApi::ClientWallets.of_funds_type(funds_type) do |filter|
120
+ filter.page = 1
121
+ filter.per_page = per_page
122
+ filter.sort_field = MangoPay::SortField::CREATION_DATE
123
+ filter.sort_direction = MangoPay::SortDirection::ASC
124
+ end
125
+
126
+ it 'retrieves list according to provided parameters' do
127
+ check_results(results, per_page, funds_type)
128
+ results.each.with_index do |result, index|
129
+ next if index == results.length - 1
130
+ first_date = result.creation_date
131
+ second_date = results[index + 1].creation_date
132
+ expect(first_date <= second_date).to be_truthy
133
+ end
134
+ end
135
+ end
136
+ end
137
+ end
138
+ end
139
+
140
+ # noinspection RubyResolve
141
+ def check_results(results, per_page, funds_type)
142
+ expect(results).to be_kind_of Array
143
+ expect(results.length).to eq per_page
144
+ results.each do |result|
145
+ expect(result).to be_kind_of MangoModel::ClientWallet
146
+ expect(result.funds_type).to be funds_type
147
+ end
148
+ end
@@ -0,0 +1,55 @@
1
+ require_relative '../context/client_context'
2
+ require_relative '../../lib/mangopay/api/service/clients'
3
+ require_relative '../../lib/mangopay/util/file_encoder'
4
+
5
+ describe MangoApi::Clients do
6
+ include_context 'client_context'
7
+
8
+ describe '.update' do
9
+
10
+ context 'given a valid object' do
11
+ client = CLIENT_DATA
12
+
13
+ it 'updates the corresponding entity' do
14
+ updated = MangoApi::Clients.update client
15
+
16
+ expect(updated).to be_kind_of MangoModel::Client
17
+ expect(updated.name).not_to be_nil
18
+ expect(updated.client_id).not_to be_nil
19
+ expect(updated.logo).not_to be_nil
20
+ expect(its_the_same_client(client, updated)).to be_truthy
21
+ end
22
+ end
23
+ end
24
+
25
+ describe '.upload_logo' do
26
+
27
+ context "given a valid image file's path" do
28
+ path = File.join(File.dirname(__FILE__), '..', 'resources', 'logo.png')
29
+ base64_to_upload = FileEncoder.encode_base64(path)
30
+
31
+ it "uploads the image as the client's logo" do
32
+ MangoApi::Clients.upload_logo path
33
+
34
+ client = MangoApi::Clients.get
35
+ uploaded_logo_uri = URI(client.logo)
36
+ uploaded_image = MangoApi::HttpClient.get_raw(uploaded_logo_uri)
37
+ uploaded_base64 = Base64.strict_encode64(uploaded_image)
38
+
39
+ expect(base64_to_upload).to eq uploaded_base64
40
+ end
41
+ end
42
+ end
43
+
44
+ describe '.get' do
45
+
46
+ context 'from a correctly-configured environment' do
47
+ it "retrieves the environment's Client entity" do
48
+ retrieved = MangoApi::Clients.get
49
+
50
+ expect(retrieved).to be_kind_of MangoModel::Client
51
+ expect(retrieved.client_id).to eq MangoPay.configuration.client_id
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,126 @@
1
+ require_relative '../spec_helper'
2
+ require_relative '../../lib/mangopay'
3
+ require_relative '../../lib/mangopay/api/service/users'
4
+ require_relative '../../lib/mangopay/model/entity/user/natural_user'
5
+
6
+ describe MangoPay::Configuration do
7
+
8
+ let(:thread_environment_hash) { retrieve_thread_env_hash }
9
+
10
+ after :all do
11
+ MangoPay.use_default
12
+ reconfig_mangopay
13
+ end
14
+
15
+ context 'without specifying environment' do
16
+
17
+ it 'automatically runs on :default environment' do
18
+ expect(MangoPay.environment.id).to be :default
19
+ end
20
+ end
21
+
22
+ context 'when specifying multiple environments' do
23
+ describe 'storing configurations' do
24
+ CLIENT_ID1 = 'CLIENT_ID1'.freeze
25
+ CLIENT_ID2 = 'CLIENT_ID2'.freeze
26
+ CLIENT_PASS1 = 'CLIENT_PASS1'.freeze
27
+ CLIENT_PASS2 = 'CLIENT_PASS2'.freeze
28
+
29
+ it 'is done environment-specifically' do
30
+ MangoPay.use_environment :env1
31
+ MangoPay.configure do |config|
32
+ config.client_id = CLIENT_ID1
33
+ config.client_passphrase = CLIENT_PASS1
34
+ end
35
+ MangoPay.use_environment :env2
36
+ MangoPay.configure do |config|
37
+ config.client_id = CLIENT_ID2
38
+ config.client_passphrase = CLIENT_PASS2
39
+ end
40
+
41
+ MangoPay.use_environment :env1
42
+ config = MangoPay.configuration
43
+ expect(config.client_id).to be CLIENT_ID1
44
+ expect(config.client_passphrase).to be CLIENT_PASS1
45
+
46
+ MangoPay.use_environment :env2
47
+ config = MangoPay.configuration
48
+ expect(config.client_id).to be CLIENT_ID2
49
+ expect(config.client_passphrase).to be CLIENT_PASS2
50
+ end
51
+ end
52
+
53
+ context 'across multiple threads' do
54
+ describe 'switching environments' do
55
+
56
+ it 'is done thread-independently' do
57
+ MangoPay.use_environment :env1
58
+ thread = Thread.new do
59
+ MangoPay.use_environment :env2
60
+ expect(MangoPay.environment.id).to be :env2
61
+ end
62
+ thread.join
63
+ expect(MangoPay.environment.id).to be :env1
64
+ # allow background threads to terminate
65
+ sleep 0.05
66
+ end
67
+ end
68
+
69
+ describe 'new thread-to-environment mappings' do
70
+ it 'live only as long as the threads' do
71
+ thread = Thread.new do
72
+ MangoPay.use_environment :env1
73
+ thread_id = Thread.current.object_id
74
+ expect(thread_environment_hash[thread_id]).to be :env1
75
+ end
76
+ thread.join
77
+ # allow any post-thread-death actions to execute
78
+ sleep 0.05
79
+ expect(thread_environment_hash[thread.object_id]).to be_nil
80
+ end
81
+
82
+ context 'unless environment is switched' do
83
+ it 'are to the same environment' do
84
+ MangoPay.use_environment :env1
85
+
86
+ thread_id = Thread.current.object_id
87
+ expect(thread_environment_hash[thread_id]).to be :env1
88
+
89
+ thread = Thread.new do
90
+ # request an environment to be assigned to thread
91
+ MangoPay.environment
92
+ thread_id = Thread.current.object_id
93
+ expect(thread_environment_hash[thread_id]).to be :env1
94
+ end
95
+ thread.join
96
+
97
+ MangoPay.use_environment :env2
98
+
99
+ thread_id = Thread.current.object_id
100
+ expect(thread_environment_hash[thread_id]).to be :env2
101
+
102
+ thread = Thread.new do
103
+ MangoPay.environment
104
+ thread_id = Thread.current.object_id
105
+ expect(thread_environment_hash[thread_id]).to be :env2
106
+ end
107
+ thread.join
108
+ # allow background threads to terminate
109
+ sleep 0.05
110
+ end
111
+ end
112
+ end
113
+ end
114
+ end
115
+ end
116
+
117
+ # Gets the thread-to-environment ID hash from the MangoPay module.
118
+ #
119
+ # noinspection RubyResolve
120
+ def retrieve_thread_env_hash
121
+ result = nil
122
+ MangoPay.instance_eval do
123
+ result = @env_id
124
+ end
125
+ result
126
+ end