mangopay-v4 4.0.0 → 4.0.1

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 (234) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +29 -29
  3. data/.rspec +3 -3
  4. data/.rubocop.yml +1 -1
  5. data/.travis.yml +21 -13
  6. data/Gemfile +2 -2
  7. data/LICENSE +20 -20
  8. data/README.md +379 -379
  9. data/bin/mangopay +9 -9
  10. data/lib/mangopay.rb +132 -132
  11. data/lib/mangopay/api/api.rb +8 -8
  12. data/lib/mangopay/api/api_methods.rb +160 -136
  13. data/lib/mangopay/api/auth_token_manager.rb +173 -173
  14. data/lib/mangopay/api/http_client.rb +324 -324
  15. data/lib/mangopay/api/service/bank_accounts.rb +145 -145
  16. data/lib/mangopay/api/service/banking_aliases.rb +83 -0
  17. data/lib/mangopay/api/service/cards.rb +151 -151
  18. data/lib/mangopay/api/service/client_wallets.rb +88 -88
  19. data/lib/mangopay/api/service/clients.rb +67 -67
  20. data/lib/mangopay/api/service/dispute_documents.rb +157 -157
  21. data/lib/mangopay/api/service/disputes.rb +186 -186
  22. data/lib/mangopay/api/service/e_money.rb +63 -41
  23. data/lib/mangopay/api/service/events.rb +46 -46
  24. data/lib/mangopay/api/service/hooks.rb +92 -92
  25. data/lib/mangopay/api/service/kyc_documents.rb +152 -152
  26. data/lib/mangopay/api/service/mandates.rb +141 -141
  27. data/lib/mangopay/api/service/oauth_tokens.rb +24 -24
  28. data/lib/mangopay/api/service/pay_ins.rb +369 -259
  29. data/lib/mangopay/api/service/pay_outs.rb +53 -53
  30. data/lib/mangopay/api/service/pre_authorizations.rb +126 -68
  31. data/lib/mangopay/api/service/refunds.rb +159 -61
  32. data/lib/mangopay/api/service/reports.rb +150 -150
  33. data/lib/mangopay/api/service/repudiations.rb +31 -31
  34. data/lib/mangopay/api/service/responses.rb +101 -101
  35. data/lib/mangopay/api/service/settlement_transfers.rb +54 -54
  36. data/lib/mangopay/api/service/transactions.rb +246 -182
  37. data/lib/mangopay/api/service/transfers.rb +53 -53
  38. data/lib/mangopay/api/service/ubo_declarations.rb +94 -69
  39. data/lib/mangopay/api/service/users.rb +162 -162
  40. data/lib/mangopay/api/service/wallets.rb +98 -98
  41. data/lib/mangopay/api/uri_provider.rb +32 -34
  42. data/lib/mangopay/common/json_tag_converter.rb +70 -67
  43. data/lib/mangopay/common/jsonifier.rb +266 -248
  44. data/lib/mangopay/common/log_provider.rb +33 -33
  45. data/lib/mangopay/common/rate_limit_interval.rb +16 -16
  46. data/lib/mangopay/common/read_only_fields.rb +26 -26
  47. data/lib/mangopay/common/response_error.rb +61 -61
  48. data/lib/mangopay/common/sort_direction.rb +14 -14
  49. data/lib/mangopay/common/sort_field.rb +12 -12
  50. data/lib/mangopay/common/template_url_options.rb +8 -8
  51. data/lib/mangopay/configuration.rb +38 -38
  52. data/lib/mangopay/environment.rb +65 -65
  53. data/lib/mangopay/model/address.rb +26 -26
  54. data/lib/mangopay/model/billing.rb +13 -0
  55. data/lib/mangopay/model/birthplace.rb +15 -0
  56. data/lib/mangopay/model/declared_ubo.rb +20 -20
  57. data/lib/mangopay/model/dispute_reason.rb +14 -14
  58. data/lib/mangopay/model/document_page_consult.rb +14 -14
  59. data/lib/mangopay/model/e_money.rb +17 -17
  60. data/lib/mangopay/model/entity/account/bank_account.rb +25 -25
  61. data/lib/mangopay/model/entity/account/ca_bank_account.rb +26 -26
  62. data/lib/mangopay/model/entity/account/debited_bank_account.rb +31 -0
  63. data/lib/mangopay/model/entity/account/gb_bank_account.rb +20 -20
  64. data/lib/mangopay/model/entity/account/iban_bank_account.rb +20 -20
  65. data/lib/mangopay/model/entity/account/other_bank_account.rb +23 -23
  66. data/lib/mangopay/model/entity/account/us_bank_account.rb +23 -23
  67. data/lib/mangopay/model/entity/banking_alias.rb +27 -0
  68. data/lib/mangopay/model/entity/card.rb +44 -44
  69. data/lib/mangopay/model/entity/card_registration.rb +42 -42
  70. data/lib/mangopay/model/entity/client.rb +65 -62
  71. data/lib/mangopay/model/entity/client_wallet.rb +22 -22
  72. data/lib/mangopay/model/entity/dispute.rb +49 -49
  73. data/lib/mangopay/model/entity/dispute_document.rb +28 -28
  74. data/lib/mangopay/model/entity/entity_base.rb +17 -17
  75. data/lib/mangopay/model/entity/hook.rb +25 -25
  76. data/lib/mangopay/model/entity/kyc_document.rb +27 -27
  77. data/lib/mangopay/model/entity/mandate.rb +50 -50
  78. data/lib/mangopay/model/entity/pay_in/apple_pay_direct_pay_in.rb +26 -0
  79. data/lib/mangopay/model/entity/pay_in/bank_wire_direct_pay_in.rb +24 -21
  80. data/lib/mangopay/model/entity/pay_in/bank_wire_external_instruction_pay_in.rb +19 -0
  81. data/lib/mangopay/model/entity/pay_in/card_direct_pay_in.rb +41 -32
  82. data/lib/mangopay/model/entity/pay_in/card_pre_authorized_pay_in.rb +15 -12
  83. data/lib/mangopay/model/entity/pay_in/card_web_pay_in.rb +36 -39
  84. data/lib/mangopay/model/entity/pay_in/direct_debit_direct_pay_in.rb +25 -22
  85. data/lib/mangopay/model/entity/pay_in/direct_debit_web_pay_in.rb +37 -37
  86. data/lib/mangopay/model/entity/pay_in/google_pay_direct_pay_in.rb +28 -0
  87. data/lib/mangopay/model/entity/pay_in/pay_in.rb +18 -15
  88. data/lib/mangopay/model/entity/pay_in/paypal_web_pay_in.rb +15 -0
  89. data/lib/mangopay/model/entity/pay_out.rb +21 -21
  90. data/lib/mangopay/model/entity/pre_authorization.rb +74 -67
  91. data/lib/mangopay/model/entity/refund.rb +17 -17
  92. data/lib/mangopay/model/entity/report.rb +50 -50
  93. data/lib/mangopay/model/entity/repudiation.rb +17 -17
  94. data/lib/mangopay/model/entity/settlement_transfer.rb +16 -16
  95. data/lib/mangopay/model/entity/transaction.rb +51 -51
  96. data/lib/mangopay/model/entity/transfer.rb +12 -12
  97. data/lib/mangopay/model/entity/ubo.rb +30 -0
  98. data/lib/mangopay/model/entity/ubo_declaration.rb +29 -31
  99. data/lib/mangopay/model/entity/user/legal_user.rb +55 -52
  100. data/lib/mangopay/model/entity/user/natural_user.rb +49 -49
  101. data/lib/mangopay/model/entity/user/user.rb +17 -17
  102. data/lib/mangopay/model/entity/wallet.rb +27 -27
  103. data/lib/mangopay/model/enum/account_type.rb +23 -23
  104. data/lib/mangopay/model/enum/avs_result.rb +19 -0
  105. data/lib/mangopay/model/enum/banking_alias_type.rb +12 -0
  106. data/lib/mangopay/model/enum/business_type.rb +17 -0
  107. data/lib/mangopay/model/enum/card_status.rb +14 -14
  108. data/lib/mangopay/model/enum/card_type.rb +32 -32
  109. data/lib/mangopay/model/enum/card_validity.rb +18 -18
  110. data/lib/mangopay/model/enum/country_iso.rb +758 -758
  111. data/lib/mangopay/model/enum/culture_code.rb +43 -43
  112. data/lib/mangopay/model/enum/currency_iso.rb +551 -551
  113. data/lib/mangopay/model/enum/declared_ubo_refused_reason_type.rb +15 -15
  114. data/lib/mangopay/model/enum/declared_ubo_status.rb +17 -17
  115. data/lib/mangopay/model/enum/deposit_type.rb +14 -14
  116. data/lib/mangopay/model/enum/direct_debit_type.rb +12 -12
  117. data/lib/mangopay/model/enum/dispute_doc_refused_reason_type.rb +24 -24
  118. data/lib/mangopay/model/enum/dispute_document_type.rb +22 -22
  119. data/lib/mangopay/model/enum/dispute_reason_type.rb +32 -32
  120. data/lib/mangopay/model/enum/dispute_status.rb +20 -20
  121. data/lib/mangopay/model/enum/dispute_type.rb +14 -14
  122. data/lib/mangopay/model/enum/document_status.rb +20 -20
  123. data/lib/mangopay/model/enum/download_format.rb +10 -10
  124. data/lib/mangopay/model/enum/event_type.rb +76 -73
  125. data/lib/mangopay/model/enum/funds_type.rb +14 -14
  126. data/lib/mangopay/model/enum/hook_status.rb +12 -12
  127. data/lib/mangopay/model/enum/hook_validity.rb +14 -14
  128. data/lib/mangopay/model/enum/income_range.rb +20 -20
  129. data/lib/mangopay/model/enum/kyc_doc_refused_reason_type.rb +36 -36
  130. data/lib/mangopay/model/enum/kyc_document_type.rb +18 -18
  131. data/lib/mangopay/model/enum/kyc_level.rb +12 -12
  132. data/lib/mangopay/model/enum/legal_person_type.rb +14 -14
  133. data/lib/mangopay/model/enum/mandate_culture_code.rb +22 -22
  134. data/lib/mangopay/model/enum/mandate_execution_type.rb +10 -10
  135. data/lib/mangopay/model/enum/mandate_scheme.rb +12 -12
  136. data/lib/mangopay/model/enum/mandate_status.rb +23 -23
  137. data/lib/mangopay/model/enum/mandate_type.rb +10 -10
  138. data/lib/mangopay/model/enum/natural_user_capacity.rb +14 -14
  139. data/lib/mangopay/model/enum/pay_in_execution_type.rb +17 -17
  140. data/lib/mangopay/model/enum/pay_in_payment_type.rb +29 -20
  141. data/lib/mangopay/model/enum/pay_out_payment_type.rb +10 -10
  142. data/lib/mangopay/model/enum/payment_status.rb +20 -20
  143. data/lib/mangopay/model/enum/person_type.rb +14 -14
  144. data/lib/mangopay/model/enum/platform_type.rb +22 -22
  145. data/lib/mangopay/model/enum/pre_authorization_execution_type.rb +10 -10
  146. data/lib/mangopay/model/enum/pre_authorization_status.rb +17 -17
  147. data/lib/mangopay/model/enum/refund_reason_type.rb +20 -20
  148. data/lib/mangopay/model/enum/report_status.rb +16 -16
  149. data/lib/mangopay/model/enum/report_type.rb +12 -12
  150. data/lib/mangopay/model/enum/sector.rb +29 -0
  151. data/lib/mangopay/model/enum/secure_mode.rb +15 -15
  152. data/lib/mangopay/model/enum/transaction_nature.rb +16 -16
  153. data/lib/mangopay/model/enum/transaction_status.rb +14 -14
  154. data/lib/mangopay/model/enum/transaction_type.rb +14 -14
  155. data/lib/mangopay/model/enum/ubo_declaration_refused_reason_type.rb +18 -18
  156. data/lib/mangopay/model/enum/ubo_declaration_status.rb +20 -20
  157. data/lib/mangopay/model/event.rb +17 -17
  158. data/lib/mangopay/model/model.rb +214 -193
  159. data/lib/mangopay/model/money.rb +16 -16
  160. data/lib/mangopay/model/pay_in_web_extended_view.rb +30 -30
  161. data/lib/mangopay/model/platform_categorization.rb +15 -0
  162. data/lib/mangopay/model/refund_reason.rb +14 -14
  163. data/lib/mangopay/model/report_filter.rb +82 -82
  164. data/lib/mangopay/model/request/cancel_request.rb +15 -15
  165. data/lib/mangopay/model/request/complete_registration_request.rb +12 -12
  166. data/lib/mangopay/model/request/currency_request.rb +12 -12
  167. data/lib/mangopay/model/request/deactivation_request.rb +9 -9
  168. data/lib/mangopay/model/request/filter_request.rb +37 -37
  169. data/lib/mangopay/model/request/submit_document_request.rb +13 -13
  170. data/lib/mangopay/model/request/submit_ubo_declaration_request.rb +16 -13
  171. data/lib/mangopay/model/request/upload_file_request.rb +8 -8
  172. data/lib/mangopay/model/response_replica.rb +26 -26
  173. data/lib/mangopay/model/security_info.rb +13 -0
  174. data/lib/mangopay/util/custom_formatter.rb +11 -11
  175. data/lib/mangopay/util/custom_logger.rb +33 -33
  176. data/lib/mangopay/util/enum.rb +51 -51
  177. data/lib/mangopay/util/file_encoder.rb +15 -15
  178. data/lib/mangopay/util/non_instantiable.rb +5 -5
  179. data/lib/mangopay/util/storage_strategy.rb +9 -9
  180. data/lib/mangopay/util/void_logger.rb +5 -5
  181. data/mangopay-v4.gemspec +32 -0
  182. data/mangopay.gemspec +32 -32
  183. data/spec/context/address_context.rb +24 -24
  184. data/spec/context/bank_account_context.rb +137 -137
  185. data/spec/context/banking_alias_context.rb +17 -0
  186. data/spec/context/birthplace_context.rb +17 -0
  187. data/spec/context/card_context.rb +45 -45
  188. data/spec/context/client_context.rb +43 -44
  189. data/spec/context/dispute_context.rb +36 -36
  190. data/spec/context/dispute_document_context.rb +19 -19
  191. data/spec/context/hook_context.rb +15 -15
  192. data/spec/context/kyc_document_context.rb +22 -22
  193. data/spec/context/mandate_context.rb +26 -26
  194. data/spec/context/pay_in_context.rb +319 -224
  195. data/spec/context/pay_out_context.rb +39 -38
  196. data/spec/context/pre_authorization_context.rb +44 -40
  197. data/spec/context/refund_context.rb +32 -32
  198. data/spec/context/report_context.rb +21 -21
  199. data/spec/context/repudiation_context.rb +18 -18
  200. data/spec/context/settlement_transfer_context.rb +27 -27
  201. data/spec/context/transfer_context.rb +50 -50
  202. data/spec/context/ubo_declaration_context.rb +29 -24
  203. data/spec/context/user_context.rb +83 -82
  204. data/spec/context/wallet_context.rb +52 -52
  205. data/spec/mangopay/bank_accounts_spec.rb +228 -228
  206. data/spec/mangopay/banking_alias_spec.rb +85 -0
  207. data/spec/mangopay/cards_spec.rb +133 -134
  208. data/spec/mangopay/client_wallets_spec.rb +147 -147
  209. data/spec/mangopay/clients_spec.rb +56 -54
  210. data/spec/mangopay/configuration_spec.rb +125 -125
  211. data/spec/mangopay/dispute_documents_spec.rb +173 -173
  212. data/spec/mangopay/disputes_spec.rb +264 -264
  213. data/spec/mangopay/e_money_spec.rb +57 -37
  214. data/spec/mangopay/events_spec.rb +49 -49
  215. data/spec/mangopay/hooks_spec.rb +70 -70
  216. data/spec/mangopay/kyc_documents_spec.rb +179 -179
  217. data/spec/mangopay/mandates_spec.rb +218 -218
  218. data/spec/mangopay/oauth_tokens_spec.rb +40 -40
  219. data/spec/mangopay/pay_ins_spec.rb +279 -180
  220. data/spec/mangopay/pay_outs_spec.rb +38 -38
  221. data/spec/mangopay/pre_authorizations_spec.rb +134 -57
  222. data/spec/mangopay/refunds_spec.rb +187 -39
  223. data/spec/mangopay/reports_spec.rb +118 -120
  224. data/spec/mangopay/responses_spec.rb +324 -294
  225. data/spec/mangopay/settlement_transfers_spec.rb +36 -36
  226. data/spec/mangopay/transactions_spec.rb +347 -232
  227. data/spec/mangopay/transfers_spec.rb +37 -37
  228. data/spec/mangopay/ubo_declarations_spec.rb +127 -64
  229. data/spec/mangopay/users_spec.rb +145 -145
  230. data/spec/mangopay/wallets_spec.rb +103 -103
  231. data/spec/spec_helper.rb +72 -72
  232. data/spec/tmp/MangoPay.AuthorizationToken.FileStore.tmp +6 -0
  233. data/spec/tmp/mangopay.log.tmp +1201 -0
  234. metadata +31 -5
@@ -1,55 +1,57 @@
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
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', :focus 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(updated.headquarters_phone_number).not_to be_nil
21
+ expect(its_the_same_client(client, updated)).to be_truthy
22
+ end
23
+ end
24
+ end
25
+
26
+ describe '.upload_logo' do
27
+
28
+ context "given a valid image file's path" do
29
+ path = File.join(File.dirname(__FILE__), '..', 'resources', 'logo.png')
30
+ base64_to_upload = FileEncoder.encode_base64(path)
31
+
32
+ it "uploads the image as the client's logo" do
33
+ MangoApi::Clients.upload_logo path
34
+
35
+ client = MangoApi::Clients.get
36
+ uploaded_logo_uri = URI(client.logo)
37
+ uploaded_image = MangoApi::HttpClient.get_raw(uploaded_logo_uri)
38
+ uploaded_base64 = Base64.strict_encode64(uploaded_image)
39
+
40
+ expect(base64_to_upload).to eq uploaded_base64
41
+ end
42
+ end
43
+ end
44
+
45
+ describe '.get' do
46
+
47
+ context 'from a correctly-configured environment' do
48
+ it "retrieves the environment's Client entity" do
49
+ retrieved = MangoApi::Clients.get
50
+
51
+ expect(retrieved).to be_kind_of MangoModel::Client
52
+ expect(retrieved.client_id).to eq MangoPay.configuration.client_id
53
+ expect(retrieved.platform_categorization).to be_kind_of MangoModel::PlatformCategorization
54
+ end
55
+ end
56
+ end
55
57
  end
@@ -1,126 +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
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_apiKey = CLIENT_PASS1
34
+ end
35
+ MangoPay.use_environment :env2
36
+ MangoPay.configure do |config|
37
+ config.client_id = CLIENT_ID2
38
+ config.client_apiKey = 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_apiKey).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_apiKey).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
126
  end
@@ -1,174 +1,174 @@
1
- require_relative '../../lib/mangopay/api/service/dispute_documents'
2
- require_relative '../context/dispute_document_context'
3
- require_relative '../../lib/mangopay/common/sort_field'
4
- require_relative '../../lib/mangopay/common/sort_direction'
5
-
6
- describe MangoApi::DisputeDocuments do
7
- include_context 'dispute_document_context'
8
-
9
- describe '.create' do
10
-
11
- context 'given a valid object' do
12
- id = DISPUTE_PERSISTED.id
13
- document = DISPUTE_DOCUMENT_DATA
14
-
15
- it 'creates the dispute document entity' do
16
- expect { MangoApi::DisputeDocuments.create(document, id) }.to(raise_error { |err|
17
- expect(err).to be_kind_of MangoPay::ResponseError
18
- expect(err.type).to eq 'dispute_can_not_currently_accept_documents'
19
- })
20
- end
21
- end
22
- end
23
-
24
- describe '.upload_page' do
25
-
26
- context "given a valid file's path" do
27
- path = File.join(File.dirname(__FILE__), '..', 'resources', 'test_pdf.pdf')
28
-
29
- it "uploads the file as one of the dispute document's pages" do
30
- expect do
31
- MangoApi::DisputeDocuments.upload_page(DISPUTE_DOCUMENT_PERSISTED.id,
32
- DISPUTE_DOCUMENT_PERSISTED.dispute_id,
33
- path)
34
- end.to(raise_error do |err|
35
- expect(err).to be_kind_of MangoPay::ResponseError
36
- expect(err.type).to eq 'dispute_can_not_currently_accept_documents'
37
- end)
38
- end
39
- end
40
- end
41
-
42
- describe '.submit' do
43
-
44
- context "given an existing entity's ID" do
45
- created = DISPUTE_DOCUMENT_PERSISTED
46
- id = created.id
47
-
48
- it 'submits the corresponding entity for approval' do
49
- expect { MangoApi::DisputeDocuments.submit(id, created.dispute_id) }.to(raise_error do |err|
50
- expect(err).to be_kind_of MangoPay::ResponseError
51
- expect(err.type).to eq 'cant_validate_empty_document'
52
- end)
53
- end
54
- end
55
- end
56
-
57
- describe '.get' do
58
-
59
- context "given an existing entity's ID" do
60
- document = DISPUTE_DOCUMENT_PERSISTED
61
- id = document.id
62
-
63
- it 'retrieves the corresponding entity' do
64
- retrieved = MangoApi::DisputeDocuments.get id
65
-
66
- expect(retrieved).to be_kind_of MangoModel::DisputeDocument
67
- expect(retrieved.id).to eq id
68
- end
69
- end
70
- end
71
-
72
- describe '.of_dispute' do
73
-
74
- context "given an existing dispute entity's ID" do
75
- id = DISPUTE_PERSISTED.id
76
-
77
- context 'not having specified filters' do
78
- it 'retrieves list with default parameters' do
79
- results = MangoApi::DisputeDocuments.of_dispute id
80
-
81
- expect(results).to be_kind_of Array
82
- results.each do |result|
83
- expect(result).to be_kind_of MangoModel::DisputeDocument
84
- expect(result.id).not_to be_nil
85
- end
86
- end
87
- end
88
-
89
- context 'having specified filters' do
90
- per_page = 5
91
-
92
- it 'retrieves a list with specified parameters' do
93
- results = MangoApi::DisputeDocuments.of_dispute id do |filter|
94
- filter.page = 1
95
- filter.per_page = per_page
96
- filter.sort_field = MangoPay::SortField::CREATION_DATE
97
- filter.sort_direction = MangoPay::SortDirection::DESC
98
- end
99
-
100
- expect(results).to be_kind_of Array
101
- expect(results.length).to eq per_page
102
- results.each.with_index do |result, index|
103
- expect(result).to be_kind_of MangoModel::DisputeDocument
104
- expect(result.id).not_to be_nil
105
- next if index == results.length - 1
106
- first_date = result.creation_date
107
- second_date = results[index + 1].creation_date
108
- expect(first_date >= second_date).to be_truthy
109
- end
110
- end
111
- end
112
- end
113
- end
114
-
115
- describe '.all' do
116
-
117
- context 'from a correctly-configured environment' do
118
- context 'not having specified filters' do
119
- default_per_page = 10
120
-
121
- it 'retrieves list with default parameters' do
122
- results = MangoApi::DisputeDocuments.all
123
-
124
- expect(results).to be_kind_of Array
125
- expect(results.length).to eq default_per_page
126
- results.each do |result|
127
- expect(result).to be_kind_of MangoModel::DisputeDocument
128
- expect(result.id).not_to be_nil
129
- end
130
- end
131
- end
132
-
133
- context 'having specified filters' do
134
- per_page = 11
135
-
136
- it 'retrieves list with specified parameters' do
137
- results = MangoApi::DisputeDocuments.all do |filter|
138
- filter.page = 1
139
- filter.per_page = per_page
140
- filter.sort_field = MangoPay::SortField::CREATION_DATE
141
- filter.sort_direction = MangoPay::SortDirection::DESC
142
- end
143
-
144
- expect(results).to be_kind_of Array
145
- expect(results.length).to eq per_page
146
- results.each.with_index do |result, index|
147
- expect(result).to be_kind_of MangoModel::DisputeDocument
148
- expect(result.id).not_to be_nil
149
- next if index == results.length - 1
150
- first_date = result.creation_date
151
- second_date = results[index + 1].creation_date
152
- expect(first_date >= second_date).to be_truthy
153
- end
154
- end
155
- end
156
- end
157
- end
158
-
159
- describe '.consult' do
160
-
161
- context "given an existing entity's ID" do
162
- id = DISPUTE_DOCUMENT_PERSISTED.id
163
-
164
- it 'creates the document page consult entities' do
165
- results = MangoApi::DisputeDocuments.consult id
166
-
167
- expect(results).to be_kind_of Array
168
- results.each do |result|
169
- expect(result).to be_kind_of MangoModel::DocumentPageConsult
170
- end
171
- end
172
- end
173
- end
1
+ require_relative '../../lib/mangopay/api/service/dispute_documents'
2
+ require_relative '../context/dispute_document_context'
3
+ require_relative '../../lib/mangopay/common/sort_field'
4
+ require_relative '../../lib/mangopay/common/sort_direction'
5
+
6
+ describe MangoApi::DisputeDocuments do
7
+ include_context 'dispute_document_context'
8
+
9
+ describe '.create' do
10
+
11
+ context 'given a valid object' do
12
+ id = DISPUTE_PERSISTED.id
13
+ document = DISPUTE_DOCUMENT_DATA
14
+
15
+ it 'creates the dispute document entity' do
16
+ expect { MangoApi::DisputeDocuments.create(document, id) }.to(raise_error { |err|
17
+ expect(err).to be_kind_of MangoPay::ResponseError
18
+ expect(err.type).to eq 'dispute_can_not_currently_accept_documents'
19
+ })
20
+ end
21
+ end
22
+ end
23
+
24
+ describe '.upload_page' do
25
+
26
+ context "given a valid file's path" do
27
+ path = File.join(File.dirname(__FILE__), '..', 'resources', 'test_pdf.pdf')
28
+
29
+ it "uploads the file as one of the dispute document's pages" do
30
+ expect do
31
+ MangoApi::DisputeDocuments.upload_page(DISPUTE_DOCUMENT_PERSISTED.id,
32
+ DISPUTE_DOCUMENT_PERSISTED.dispute_id,
33
+ path)
34
+ end.to(raise_error do |err|
35
+ expect(err).to be_kind_of MangoPay::ResponseError
36
+ expect(err.type).to eq 'dispute_can_not_currently_accept_documents'
37
+ end)
38
+ end
39
+ end
40
+ end
41
+
42
+ describe '.submit' do
43
+
44
+ context "given an existing entity's ID" do
45
+ created = DISPUTE_DOCUMENT_PERSISTED
46
+ id = created.id
47
+
48
+ it 'submits the corresponding entity for approval' do
49
+ expect { MangoApi::DisputeDocuments.submit(id, created.dispute_id) }.to(raise_error do |err|
50
+ expect(err).to be_kind_of MangoPay::ResponseError
51
+ expect(err.type).to eq 'cant_validate_empty_document'
52
+ end)
53
+ end
54
+ end
55
+ end
56
+
57
+ describe '.get' do
58
+
59
+ context "given an existing entity's ID" do
60
+ document = DISPUTE_DOCUMENT_PERSISTED
61
+ id = document.id
62
+
63
+ it 'retrieves the corresponding entity' do
64
+ retrieved = MangoApi::DisputeDocuments.get id
65
+
66
+ expect(retrieved).to be_kind_of MangoModel::DisputeDocument
67
+ expect(retrieved.id).to eq id
68
+ end
69
+ end
70
+ end
71
+
72
+ describe '.of_dispute' do
73
+
74
+ context "given an existing dispute entity's ID" do
75
+ id = DISPUTE_PERSISTED.id
76
+
77
+ context 'not having specified filters' do
78
+ it 'retrieves list with default parameters' do
79
+ results = MangoApi::DisputeDocuments.of_dispute id
80
+
81
+ expect(results).to be_kind_of Array
82
+ results.each do |result|
83
+ expect(result).to be_kind_of MangoModel::DisputeDocument
84
+ expect(result.id).not_to be_nil
85
+ end
86
+ end
87
+ end
88
+
89
+ context 'having specified filters' do
90
+ per_page = 5
91
+
92
+ it 'retrieves a list with specified parameters' do
93
+ results = MangoApi::DisputeDocuments.of_dispute id do |filter|
94
+ filter.page = 1
95
+ filter.per_page = per_page
96
+ filter.sort_field = MangoPay::SortField::CREATION_DATE
97
+ filter.sort_direction = MangoPay::SortDirection::DESC
98
+ end
99
+
100
+ expect(results).to be_kind_of Array
101
+ expect(results.length).to eq per_page
102
+ results.each.with_index do |result, index|
103
+ expect(result).to be_kind_of MangoModel::DisputeDocument
104
+ expect(result.id).not_to be_nil
105
+ next if index == results.length - 1
106
+ first_date = result.creation_date
107
+ second_date = results[index + 1].creation_date
108
+ expect(first_date >= second_date).to be_truthy
109
+ end
110
+ end
111
+ end
112
+ end
113
+ end
114
+
115
+ describe '.all' do
116
+
117
+ context 'from a correctly-configured environment' do
118
+ context 'not having specified filters' do
119
+ default_per_page = 10
120
+
121
+ it 'retrieves list with default parameters' do
122
+ results = MangoApi::DisputeDocuments.all
123
+
124
+ expect(results).to be_kind_of Array
125
+ expect(results.length).to eq default_per_page
126
+ results.each do |result|
127
+ expect(result).to be_kind_of MangoModel::DisputeDocument
128
+ expect(result.id).not_to be_nil
129
+ end
130
+ end
131
+ end
132
+
133
+ context 'having specified filters' do
134
+ per_page = 11
135
+
136
+ it 'retrieves list with specified parameters' do
137
+ results = MangoApi::DisputeDocuments.all do |filter|
138
+ filter.page = 1
139
+ filter.per_page = per_page
140
+ filter.sort_field = MangoPay::SortField::CREATION_DATE
141
+ filter.sort_direction = MangoPay::SortDirection::DESC
142
+ end
143
+
144
+ expect(results).to be_kind_of Array
145
+ expect(results.length).to eq per_page
146
+ results.each.with_index do |result, index|
147
+ expect(result).to be_kind_of MangoModel::DisputeDocument
148
+ expect(result.id).not_to be_nil
149
+ next if index == results.length - 1
150
+ first_date = result.creation_date
151
+ second_date = results[index + 1].creation_date
152
+ expect(first_date >= second_date).to be_truthy
153
+ end
154
+ end
155
+ end
156
+ end
157
+ end
158
+
159
+ describe '.consult' do
160
+
161
+ context "given an existing entity's ID" do
162
+ id = DISPUTE_DOCUMENT_PERSISTED.id
163
+
164
+ it 'creates the document page consult entities' do
165
+ results = MangoApi::DisputeDocuments.consult id
166
+
167
+ expect(results).to be_kind_of Array
168
+ results.each do |result|
169
+ expect(result).to be_kind_of MangoModel::DocumentPageConsult
170
+ end
171
+ end
172
+ end
173
+ end
174
174
  end