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.
- checksums.yaml +7 -0
- data/.gitignore +30 -0
- data/.rspec +4 -0
- data/.rubocop.yml +2 -0
- data/.travis.yml +13 -0
- data/Gemfile +2 -0
- data/LICENSE +20 -0
- data/README.md +380 -0
- data/bin/mangopay +9 -0
- data/lib/mangopay.rb +133 -0
- data/lib/mangopay/api/api.rb +9 -0
- data/lib/mangopay/api/api_methods.rb +137 -0
- data/lib/mangopay/api/auth_token_manager.rb +173 -0
- data/lib/mangopay/api/http_client.rb +325 -0
- data/lib/mangopay/api/service/bank_accounts.rb +146 -0
- data/lib/mangopay/api/service/cards.rb +152 -0
- data/lib/mangopay/api/service/client_wallets.rb +89 -0
- data/lib/mangopay/api/service/clients.rb +68 -0
- data/lib/mangopay/api/service/dispute_documents.rb +158 -0
- data/lib/mangopay/api/service/disputes.rb +187 -0
- data/lib/mangopay/api/service/e_money.rb +42 -0
- data/lib/mangopay/api/service/events.rb +47 -0
- data/lib/mangopay/api/service/hooks.rb +93 -0
- data/lib/mangopay/api/service/kyc_documents.rb +153 -0
- data/lib/mangopay/api/service/mandates.rb +142 -0
- data/lib/mangopay/api/service/oauth_tokens.rb +25 -0
- data/lib/mangopay/api/service/pay_ins.rb +260 -0
- data/lib/mangopay/api/service/pay_outs.rb +54 -0
- data/lib/mangopay/api/service/pre_authorizations.rb +69 -0
- data/lib/mangopay/api/service/refunds.rb +62 -0
- data/lib/mangopay/api/service/reports.rb +151 -0
- data/lib/mangopay/api/service/repudiations.rb +32 -0
- data/lib/mangopay/api/service/responses.rb +102 -0
- data/lib/mangopay/api/service/settlement_transfers.rb +55 -0
- data/lib/mangopay/api/service/transactions.rb +183 -0
- data/lib/mangopay/api/service/transfers.rb +54 -0
- data/lib/mangopay/api/service/ubo_declarations.rb +70 -0
- data/lib/mangopay/api/service/users.rb +163 -0
- data/lib/mangopay/api/service/wallets.rb +99 -0
- data/lib/mangopay/api/uri_provider.rb +35 -0
- data/lib/mangopay/common/json_tag_converter.rb +68 -0
- data/lib/mangopay/common/jsonifier.rb +249 -0
- data/lib/mangopay/common/log_provider.rb +34 -0
- data/lib/mangopay/common/rate_limit_interval.rb +17 -0
- data/lib/mangopay/common/read_only_fields.rb +27 -0
- data/lib/mangopay/common/response_error.rb +61 -0
- data/lib/mangopay/common/sort_direction.rb +15 -0
- data/lib/mangopay/common/sort_field.rb +13 -0
- data/lib/mangopay/common/template_url_options.rb +9 -0
- data/lib/mangopay/configuration.rb +39 -0
- data/lib/mangopay/environment.rb +66 -0
- data/lib/mangopay/model/address.rb +27 -0
- data/lib/mangopay/model/declared_ubo.rb +21 -0
- data/lib/mangopay/model/dispute_reason.rb +15 -0
- data/lib/mangopay/model/document_page_consult.rb +15 -0
- data/lib/mangopay/model/e_money.rb +18 -0
- data/lib/mangopay/model/entity/account/bank_account.rb +26 -0
- data/lib/mangopay/model/entity/account/ca_bank_account.rb +27 -0
- data/lib/mangopay/model/entity/account/gb_bank_account.rb +21 -0
- data/lib/mangopay/model/entity/account/iban_bank_account.rb +21 -0
- data/lib/mangopay/model/entity/account/other_bank_account.rb +24 -0
- data/lib/mangopay/model/entity/account/us_bank_account.rb +24 -0
- data/lib/mangopay/model/entity/card.rb +45 -0
- data/lib/mangopay/model/entity/card_registration.rb +43 -0
- data/lib/mangopay/model/entity/client.rb +63 -0
- data/lib/mangopay/model/entity/client_wallet.rb +23 -0
- data/lib/mangopay/model/entity/dispute.rb +50 -0
- data/lib/mangopay/model/entity/dispute_document.rb +29 -0
- data/lib/mangopay/model/entity/entity_base.rb +18 -0
- data/lib/mangopay/model/entity/hook.rb +26 -0
- data/lib/mangopay/model/entity/kyc_document.rb +28 -0
- data/lib/mangopay/model/entity/mandate.rb +51 -0
- data/lib/mangopay/model/entity/pay_in/bank_wire_direct_pay_in.rb +22 -0
- data/lib/mangopay/model/entity/pay_in/card_direct_pay_in.rb +33 -0
- data/lib/mangopay/model/entity/pay_in/card_pre_authorized_pay_in.rb +13 -0
- data/lib/mangopay/model/entity/pay_in/card_web_pay_in.rb +40 -0
- data/lib/mangopay/model/entity/pay_in/direct_debit_direct_pay_in.rb +23 -0
- data/lib/mangopay/model/entity/pay_in/direct_debit_web_pay_in.rb +38 -0
- data/lib/mangopay/model/entity/pay_in/pay_in.rb +16 -0
- data/lib/mangopay/model/entity/pay_out.rb +22 -0
- data/lib/mangopay/model/entity/pre_authorization.rb +68 -0
- data/lib/mangopay/model/entity/refund.rb +18 -0
- data/lib/mangopay/model/entity/report.rb +51 -0
- data/lib/mangopay/model/entity/repudiation.rb +18 -0
- data/lib/mangopay/model/entity/settlement_transfer.rb +17 -0
- data/lib/mangopay/model/entity/transaction.rb +52 -0
- data/lib/mangopay/model/entity/transfer.rb +13 -0
- data/lib/mangopay/model/entity/ubo_declaration.rb +32 -0
- data/lib/mangopay/model/entity/user/legal_user.rb +53 -0
- data/lib/mangopay/model/entity/user/natural_user.rb +50 -0
- data/lib/mangopay/model/entity/user/user.rb +18 -0
- data/lib/mangopay/model/entity/wallet.rb +28 -0
- data/lib/mangopay/model/enum/account_type.rb +24 -0
- data/lib/mangopay/model/enum/card_status.rb +15 -0
- data/lib/mangopay/model/enum/card_type.rb +33 -0
- data/lib/mangopay/model/enum/card_validity.rb +19 -0
- data/lib/mangopay/model/enum/country_iso.rb +759 -0
- data/lib/mangopay/model/enum/culture_code.rb +44 -0
- data/lib/mangopay/model/enum/currency_iso.rb +552 -0
- data/lib/mangopay/model/enum/declared_ubo_refused_reason_type.rb +16 -0
- data/lib/mangopay/model/enum/declared_ubo_status.rb +18 -0
- data/lib/mangopay/model/enum/deposit_type.rb +15 -0
- data/lib/mangopay/model/enum/direct_debit_type.rb +13 -0
- data/lib/mangopay/model/enum/dispute_doc_refused_reason_type.rb +25 -0
- data/lib/mangopay/model/enum/dispute_document_type.rb +23 -0
- data/lib/mangopay/model/enum/dispute_reason_type.rb +33 -0
- data/lib/mangopay/model/enum/dispute_status.rb +21 -0
- data/lib/mangopay/model/enum/dispute_type.rb +15 -0
- data/lib/mangopay/model/enum/document_status.rb +21 -0
- data/lib/mangopay/model/enum/download_format.rb +11 -0
- data/lib/mangopay/model/enum/event_type.rb +74 -0
- data/lib/mangopay/model/enum/funds_type.rb +15 -0
- data/lib/mangopay/model/enum/hook_status.rb +13 -0
- data/lib/mangopay/model/enum/hook_validity.rb +15 -0
- data/lib/mangopay/model/enum/income_range.rb +21 -0
- data/lib/mangopay/model/enum/kyc_doc_refused_reason_type.rb +37 -0
- data/lib/mangopay/model/enum/kyc_document_type.rb +19 -0
- data/lib/mangopay/model/enum/kyc_level.rb +13 -0
- data/lib/mangopay/model/enum/legal_person_type.rb +15 -0
- data/lib/mangopay/model/enum/mandate_culture_code.rb +23 -0
- data/lib/mangopay/model/enum/mandate_execution_type.rb +11 -0
- data/lib/mangopay/model/enum/mandate_scheme.rb +13 -0
- data/lib/mangopay/model/enum/mandate_status.rb +24 -0
- data/lib/mangopay/model/enum/mandate_type.rb +11 -0
- data/lib/mangopay/model/enum/natural_user_capacity.rb +15 -0
- data/lib/mangopay/model/enum/pay_in_execution_type.rb +18 -0
- data/lib/mangopay/model/enum/pay_in_payment_type.rb +21 -0
- data/lib/mangopay/model/enum/pay_out_payment_type.rb +11 -0
- data/lib/mangopay/model/enum/payment_status.rb +21 -0
- data/lib/mangopay/model/enum/person_type.rb +15 -0
- data/lib/mangopay/model/enum/platform_type.rb +23 -0
- data/lib/mangopay/model/enum/pre_authorization_execution_type.rb +11 -0
- data/lib/mangopay/model/enum/pre_authorization_status.rb +18 -0
- data/lib/mangopay/model/enum/refund_reason_type.rb +21 -0
- data/lib/mangopay/model/enum/report_status.rb +17 -0
- data/lib/mangopay/model/enum/report_type.rb +13 -0
- data/lib/mangopay/model/enum/secure_mode.rb +16 -0
- data/lib/mangopay/model/enum/transaction_nature.rb +17 -0
- data/lib/mangopay/model/enum/transaction_status.rb +15 -0
- data/lib/mangopay/model/enum/transaction_type.rb +15 -0
- data/lib/mangopay/model/enum/ubo_declaration_refused_reason_type.rb +19 -0
- data/lib/mangopay/model/enum/ubo_declaration_status.rb +21 -0
- data/lib/mangopay/model/event.rb +18 -0
- data/lib/mangopay/model/model.rb +194 -0
- data/lib/mangopay/model/money.rb +17 -0
- data/lib/mangopay/model/pay_in_web_extended_view.rb +31 -0
- data/lib/mangopay/model/refund_reason.rb +15 -0
- data/lib/mangopay/model/report_filter.rb +83 -0
- data/lib/mangopay/model/request/cancel_request.rb +16 -0
- data/lib/mangopay/model/request/complete_registration_request.rb +13 -0
- data/lib/mangopay/model/request/currency_request.rb +13 -0
- data/lib/mangopay/model/request/deactivation_request.rb +10 -0
- data/lib/mangopay/model/request/filter_request.rb +38 -0
- data/lib/mangopay/model/request/submit_document_request.rb +14 -0
- data/lib/mangopay/model/request/submit_ubo_declaration_request.rb +14 -0
- data/lib/mangopay/model/request/upload_file_request.rb +9 -0
- data/lib/mangopay/model/response_replica.rb +27 -0
- data/lib/mangopay/util/custom_formatter.rb +12 -0
- data/lib/mangopay/util/custom_logger.rb +34 -0
- data/lib/mangopay/util/enum.rb +52 -0
- data/lib/mangopay/util/file_encoder.rb +16 -0
- data/lib/mangopay/util/non_instantiable.rb +6 -0
- data/lib/mangopay/util/storage_strategy.rb +10 -0
- data/lib/mangopay/util/void_logger.rb +6 -0
- data/mangopay.gemspec +32 -0
- data/spec/context/address_context.rb +25 -0
- data/spec/context/bank_account_context.rb +138 -0
- data/spec/context/card_context.rb +46 -0
- data/spec/context/client_context.rb +45 -0
- data/spec/context/dispute_context.rb +37 -0
- data/spec/context/dispute_document_context.rb +20 -0
- data/spec/context/hook_context.rb +16 -0
- data/spec/context/kyc_document_context.rb +23 -0
- data/spec/context/mandate_context.rb +27 -0
- data/spec/context/pay_in_context.rb +225 -0
- data/spec/context/pay_out_context.rb +39 -0
- data/spec/context/pre_authorization_context.rb +41 -0
- data/spec/context/refund_context.rb +33 -0
- data/spec/context/report_context.rb +22 -0
- data/spec/context/repudiation_context.rb +19 -0
- data/spec/context/settlement_transfer_context.rb +28 -0
- data/spec/context/transfer_context.rb +51 -0
- data/spec/context/ubo_declaration_context.rb +25 -0
- data/spec/context/user_context.rb +83 -0
- data/spec/context/wallet_context.rb +53 -0
- data/spec/mangopay/bank_accounts_spec.rb +229 -0
- data/spec/mangopay/cards_spec.rb +135 -0
- data/spec/mangopay/client_wallets_spec.rb +148 -0
- data/spec/mangopay/clients_spec.rb +55 -0
- data/spec/mangopay/configuration_spec.rb +126 -0
- data/spec/mangopay/dispute_documents_spec.rb +174 -0
- data/spec/mangopay/disputes_spec.rb +265 -0
- data/spec/mangopay/e_money_spec.rb +38 -0
- data/spec/mangopay/events_spec.rb +50 -0
- data/spec/mangopay/hooks_spec.rb +71 -0
- data/spec/mangopay/kyc_documents_spec.rb +180 -0
- data/spec/mangopay/mandates_spec.rb +219 -0
- data/spec/mangopay/oauth_tokens_spec.rb +41 -0
- data/spec/mangopay/pay_ins_spec.rb +181 -0
- data/spec/mangopay/pay_outs_spec.rb +39 -0
- data/spec/mangopay/pre_authorizations_spec.rb +58 -0
- data/spec/mangopay/refunds_spec.rb +40 -0
- data/spec/mangopay/reports_spec.rb +121 -0
- data/spec/mangopay/responses_spec.rb +295 -0
- data/spec/mangopay/settlement_transfers_spec.rb +37 -0
- data/spec/mangopay/transactions_spec.rb +233 -0
- data/spec/mangopay/transfers_spec.rb +38 -0
- data/spec/mangopay/ubo_declarations_spec.rb +65 -0
- data/spec/mangopay/users_spec.rb +146 -0
- data/spec/mangopay/wallets_spec.rb +104 -0
- data/spec/resources/logo.png +0 -0
- data/spec/resources/test_pdf.pdf +0 -0
- data/spec/spec_helper.rb +72 -0
- metadata +349 -0
@@ -0,0 +1,14 @@
|
|
1
|
+
require_relative '../../common/jsonifier'
|
2
|
+
|
3
|
+
# Model object for body of a request to submit a document for approval
|
4
|
+
class SubmitDocumentRequest
|
5
|
+
include MangoPay::Jsonifier
|
6
|
+
|
7
|
+
# [String] Custom data added with the request
|
8
|
+
attr_accessor :tag
|
9
|
+
|
10
|
+
def initialize(tag = nil)
|
11
|
+
self.tag = tag
|
12
|
+
@status = MangoModel::DocumentStatus::VALIDATION_ASKED
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require_relative '../../common/jsonifier'
|
2
|
+
|
3
|
+
# Model object for body of request to submit a UBO declaration for approval
|
4
|
+
class SubmitUboDeclarationRequest
|
5
|
+
include MangoPay::Jsonifier
|
6
|
+
|
7
|
+
# [String] Custom data added with the request
|
8
|
+
attr_accessor :tag
|
9
|
+
|
10
|
+
def initialize(tag = nil)
|
11
|
+
self.tag = tag
|
12
|
+
@status = MangoModel::UboDeclarationStatus::VALIDATION_ASKED
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require_relative '../common/jsonifier'
|
2
|
+
|
3
|
+
module MangoModel
|
4
|
+
|
5
|
+
# Replication of a previous request's response
|
6
|
+
class ResponseReplica
|
7
|
+
include MangoPay::Jsonifier
|
8
|
+
|
9
|
+
# [String] Original response's status code
|
10
|
+
attr_accessor :status_code
|
11
|
+
|
12
|
+
# [String] Value of the original response's Content-Length header
|
13
|
+
attr_accessor :content_length
|
14
|
+
|
15
|
+
# [String] Value of the original response's Content-Type header
|
16
|
+
attr_accessor :content_type
|
17
|
+
|
18
|
+
# [DateTime] Time of request of the original response
|
19
|
+
attr_accessor :long_date
|
20
|
+
|
21
|
+
# [Object] The original response object
|
22
|
+
attr_accessor :resource
|
23
|
+
|
24
|
+
# [String] URL of the original request
|
25
|
+
attr_accessor :request_url
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# Formatter for log messages
|
2
|
+
class CustomFormatter < Logger::Formatter
|
3
|
+
def call(severity, time, progname, msg)
|
4
|
+
"[#{time}] #{five_chars(severity)} - #{progname}: #{msg2str(msg)}\n"
|
5
|
+
end
|
6
|
+
|
7
|
+
def five_chars(string)
|
8
|
+
result = ''
|
9
|
+
(5 - string.length).times { result << ' ' }
|
10
|
+
result + string
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'logger'
|
2
|
+
|
3
|
+
# Custom Logger implementation which handles concatenation
|
4
|
+
# of multiple provided arguments into the log message string,
|
5
|
+
# allowing for much cleaner logging statements.
|
6
|
+
class CustomLogger < Logger
|
7
|
+
|
8
|
+
def debug(message, *args)
|
9
|
+
super(format(message, args))
|
10
|
+
end
|
11
|
+
|
12
|
+
def info(message, *args)
|
13
|
+
super(format(message, args))
|
14
|
+
end
|
15
|
+
|
16
|
+
def warn(message, *args)
|
17
|
+
super(format(message, args))
|
18
|
+
end
|
19
|
+
|
20
|
+
def error(message, *args)
|
21
|
+
super(format(message, args))
|
22
|
+
end
|
23
|
+
|
24
|
+
def fatal(message, *args)
|
25
|
+
super(format(message, args))
|
26
|
+
end
|
27
|
+
|
28
|
+
def format(msg, msg_args)
|
29
|
+
msg_args.each do |arg|
|
30
|
+
msg.sub! '{}', arg.to_s
|
31
|
+
end
|
32
|
+
msg
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
# Extend in order to apply methods for Enum instantiation.
|
2
|
+
module Enum
|
3
|
+
|
4
|
+
# Restrict enum instantiation to the +value+ method.
|
5
|
+
def self.extended(base)
|
6
|
+
base.class_eval do
|
7
|
+
disable_instantiation
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
def value_of(string)
|
12
|
+
value = nil
|
13
|
+
constants.each do |const|
|
14
|
+
value = const_get const if const.to_s == string
|
15
|
+
end
|
16
|
+
value
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
# Temporary self-called method which instantiates Enums.
|
22
|
+
# Assign returned values to accordingly-named constant variables.
|
23
|
+
#
|
24
|
+
# @param +enum_value+ Representation value for the Enum instance
|
25
|
+
def value(enum_value)
|
26
|
+
enable_instantiation
|
27
|
+
enum_instance = new
|
28
|
+
disable_instantiation
|
29
|
+
enum_instance.instance_variable_set :@value, enum_value
|
30
|
+
enum_instance.define_singleton_method :to_s do
|
31
|
+
enum_value.to_s
|
32
|
+
end
|
33
|
+
enum_instance
|
34
|
+
end
|
35
|
+
|
36
|
+
# Enables instantiation of extending class.
|
37
|
+
def enable_instantiation
|
38
|
+
class_eval do
|
39
|
+
define_method :initialize do
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
# Disables instantiation of extending class.
|
45
|
+
def disable_instantiation
|
46
|
+
class_eval do
|
47
|
+
define_method :initialize do
|
48
|
+
raise 'Use the Enum#value method to instantiate Enums.'
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'base64'
|
2
|
+
|
3
|
+
# Encodes files
|
4
|
+
module FileEncoder
|
5
|
+
class << self
|
6
|
+
|
7
|
+
# Encodes a file to a Base64 string.
|
8
|
+
#
|
9
|
+
# @param +path+ [String] path to the file to be encoded
|
10
|
+
# @return [String] the file as a Base64-encoded string
|
11
|
+
def encode_base64(path)
|
12
|
+
data = File.open(path, 'rb', &:read)
|
13
|
+
Base64.strict_encode64 data
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
data/mangopay.gemspec
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), 'lib'))
|
2
|
+
|
3
|
+
require 'mangopay'
|
4
|
+
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = 'mangopay-v4'
|
7
|
+
spec.version = MangoPay::VERSION
|
8
|
+
spec.summary = 'Ruby bindings for the version 2 of the MANGOPAY API'
|
9
|
+
spec.description = <<-EOF
|
10
|
+
The mangopay Gem makes interacting with MANGOPAY Services much easier.
|
11
|
+
For any questions regarding the use of MANGOPAY's Services feel free to contact us at http://www.mangopay.com/get-started-2/
|
12
|
+
You can find more documentation about MANGOPAY Services at http://docs.mangopay.com/
|
13
|
+
EOF
|
14
|
+
spec.authors = ['Paul Hristea']
|
15
|
+
spec.email = 'support@mangopay.com'
|
16
|
+
spec.homepage = 'http://docs.mangopay.com/'
|
17
|
+
spec.license = 'MIT'
|
18
|
+
|
19
|
+
spec.required_ruby_version = '>= 1.9.2'
|
20
|
+
|
21
|
+
spec.add_dependency('multi_json', '>= 1.7.7')
|
22
|
+
|
23
|
+
spec.add_development_dependency('rake', '>= 10.1.0')
|
24
|
+
spec.add_development_dependency('rspec', '>= 3.0.0')
|
25
|
+
|
26
|
+
spec.files = `git ls-files`.split("\n")
|
27
|
+
spec.test_files = `git ls-files -- spec/*`.split("\n")
|
28
|
+
spec.executables = `git ls-files -- bin/*`
|
29
|
+
.split("\n")
|
30
|
+
.map { |file| File.basename(file) }
|
31
|
+
spec.require_paths = ['lib']
|
32
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
shared_context 'address_context' do
|
2
|
+
|
3
|
+
let(:address_data) { build_address }
|
4
|
+
end
|
5
|
+
|
6
|
+
def build_address
|
7
|
+
address = MangoModel::Address.new
|
8
|
+
address.address_line1 = 'Test st., no. 18'
|
9
|
+
address.address_line2 = 'bl. 16, int. 32'
|
10
|
+
address.city = 'Brasov'
|
11
|
+
address.region = 'Tractoru'
|
12
|
+
address.postal_code = '505600'
|
13
|
+
address.country = MangoModel::CountryIso::RO
|
14
|
+
address
|
15
|
+
end
|
16
|
+
|
17
|
+
def its_the_same_address(address1, address2)
|
18
|
+
address1.address_line1 == address2.address_line1\
|
19
|
+
&& address1.address_line2 == address2.address_line2\
|
20
|
+
&& address1.city == address2.city\
|
21
|
+
&& address1.region == address2.region\
|
22
|
+
&& address1.region == address2.region\
|
23
|
+
&& address1.postal_code == address2.postal_code\
|
24
|
+
&& address1.country.eql?(address2.country)
|
25
|
+
end
|
@@ -0,0 +1,138 @@
|
|
1
|
+
require_relative 'user_context'
|
2
|
+
require_relative '../../lib/mangopay/model/entity/account/iban_bank_account'
|
3
|
+
require_relative '../../lib/mangopay/model/entity/account/us_bank_account'
|
4
|
+
require_relative '../../lib/mangopay/model/entity/account/ca_bank_account'
|
5
|
+
require_relative '../../lib/mangopay/model/entity/account/gb_bank_account'
|
6
|
+
require_relative '../../lib/mangopay/model/entity/account/other_bank_account'
|
7
|
+
require_relative '../../lib/mangopay/api/service/bank_accounts'
|
8
|
+
|
9
|
+
shared_context 'bank_account_context' do
|
10
|
+
include_context 'user_context'
|
11
|
+
|
12
|
+
IBAN_ACCOUNT_DATA ||= build_iban_account
|
13
|
+
US_CHECKING_ACCOUNT_DATA ||= build_us_checking_account
|
14
|
+
US_SAVINGS_ACCOUNT_DATA ||= build_us_savings_account
|
15
|
+
CA_ACCOUNT_DATA ||= build_ca_account
|
16
|
+
GB_ACCOUNT_DATA ||= build_gb_account
|
17
|
+
OTHER_ACCOUNT_DATA ||= build_other_account
|
18
|
+
IBAN_ACCOUNT_PERSISTED ||= persist_account IBAN_ACCOUNT_DATA
|
19
|
+
US_CHECKING_ACCOUNT_PERSISTED ||= persist_account US_CHECKING_ACCOUNT_DATA
|
20
|
+
US_SAVINGS_ACCOUNT_PERSISTED ||= persist_account US_SAVINGS_ACCOUNT_DATA
|
21
|
+
CA_ACCOUNT_PERSISTED ||= persist_account CA_ACCOUNT_DATA
|
22
|
+
GB_ACCOUNT_PERSISTED ||= persist_account GB_ACCOUNT_DATA
|
23
|
+
OTHER_ACCOUNT_PERSISTED ||= persist_account OTHER_ACCOUNT_DATA
|
24
|
+
|
25
|
+
let(:new_iban_account_persisted) { persist_account IBAN_ACCOUNT_DATA }
|
26
|
+
let(:new_us_checking_account_persisted) { persist_account US_CHECKING_ACCOUNT_DATA }
|
27
|
+
let(:new_us_savings_account_persisted) { persist_account US_SAVINGS_ACCOUNT_DATA }
|
28
|
+
let(:new_ca_account_persisted) { persist_account CA_ACCOUNT_DATA }
|
29
|
+
let(:new_gb_account_persisted) { persist_account GB_ACCOUNT_DATA }
|
30
|
+
let(:new_other_account_persisted) { persist_account OTHER_ACCOUNT_DATA }
|
31
|
+
end
|
32
|
+
|
33
|
+
def persist_account(account)
|
34
|
+
MangoApi::BankAccounts.create account
|
35
|
+
end
|
36
|
+
|
37
|
+
def build_iban_account
|
38
|
+
account = MangoModel::IbanBankAccount.new
|
39
|
+
add_user_details account
|
40
|
+
account.iban = 'FR7618829754160173622224154'
|
41
|
+
account.bic = 'CMBRFR2BCME'
|
42
|
+
account
|
43
|
+
end
|
44
|
+
|
45
|
+
def build_us_account
|
46
|
+
account = MangoModel::UsBankAccount.new
|
47
|
+
add_user_details account
|
48
|
+
account.account_number = '234234234234'
|
49
|
+
account.aba = '234334789'
|
50
|
+
account
|
51
|
+
end
|
52
|
+
|
53
|
+
def build_us_checking_account
|
54
|
+
account = build_us_account
|
55
|
+
account.deposit_account_type = MangoModel::DepositType::CHECKING
|
56
|
+
account
|
57
|
+
end
|
58
|
+
|
59
|
+
def build_us_savings_account
|
60
|
+
account = build_us_account
|
61
|
+
account.deposit_account_type = MangoModel::DepositType::SAVINGS
|
62
|
+
account
|
63
|
+
end
|
64
|
+
|
65
|
+
def build_ca_account
|
66
|
+
account = MangoModel::CaBankAccount.new
|
67
|
+
add_user_details account
|
68
|
+
account.institution_number = '123'
|
69
|
+
account.account_number = '234234234234'
|
70
|
+
account.branch_code = '12345'
|
71
|
+
account.bank_name = 'Mango Bank'
|
72
|
+
account
|
73
|
+
end
|
74
|
+
|
75
|
+
def build_gb_account
|
76
|
+
account = MangoModel::GbBankAccount.new
|
77
|
+
add_user_details account
|
78
|
+
account.sort_code = '200000'
|
79
|
+
account.account_number = '63956474'
|
80
|
+
account
|
81
|
+
end
|
82
|
+
|
83
|
+
def build_other_account
|
84
|
+
account = MangoModel::OtherBankAccount.new
|
85
|
+
add_user_details account
|
86
|
+
account.bic = 'BINAADADXXX'
|
87
|
+
account.account_number = '234234234234'
|
88
|
+
account.country = MangoModel::CountryIso::FR
|
89
|
+
account
|
90
|
+
end
|
91
|
+
|
92
|
+
def add_user_details(account)
|
93
|
+
user = NATURAL_USER_PERSISTED
|
94
|
+
account.user_id = user.id
|
95
|
+
account.owner_name = user.first_name + ' ' + user.last_name
|
96
|
+
account.owner_address = user.address
|
97
|
+
end
|
98
|
+
|
99
|
+
def its_the_same_iban(account1, account2)
|
100
|
+
return false unless its_the_same_account(account1, account2)
|
101
|
+
account1.iban == account2.iban\
|
102
|
+
&& account1.bic == account2.bic
|
103
|
+
end
|
104
|
+
|
105
|
+
def its_the_same_us(account1, account2)
|
106
|
+
return false unless its_the_same_account(account1, account2)
|
107
|
+
account1.account_number == account2.account_number\
|
108
|
+
&& account1.aba == account2.aba\
|
109
|
+
&& account1.deposit_account_type.eql?(account2.deposit_account_type)
|
110
|
+
end
|
111
|
+
|
112
|
+
def its_the_same_ca(account1, account2)
|
113
|
+
return false unless its_the_same_account(account1, account2)
|
114
|
+
account1.institution_number == account2.institution_number\
|
115
|
+
&& account1.account_number == account2.account_number\
|
116
|
+
&& account1.branch_code == account2.branch_code\
|
117
|
+
&& account1.bank_name == account2.bank_name
|
118
|
+
end
|
119
|
+
|
120
|
+
def its_the_same_gb(account1, account2)
|
121
|
+
return false unless its_the_same_account(account1, account2)
|
122
|
+
account1.sort_code == account2.sort_code\
|
123
|
+
&& account1.account_number == account2.account_number
|
124
|
+
end
|
125
|
+
|
126
|
+
def its_the_same_other(account1, account2)
|
127
|
+
return false unless its_the_same_account(account1, account2)
|
128
|
+
account1.bic == account2.bic\
|
129
|
+
&& account1.account_number == account2.account_number\
|
130
|
+
&& account1.country.eql?(account2.country)
|
131
|
+
end
|
132
|
+
|
133
|
+
def its_the_same_account(account1, account2)
|
134
|
+
account1.user_id == account2.user_id\
|
135
|
+
&& account1.type.eql?(account2.type)\
|
136
|
+
&& account1.owner_name == account2.owner_name\
|
137
|
+
&& its_the_same_address(account1.owner_address, account2.owner_address)
|
138
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require_relative 'user_context'
|
2
|
+
require_relative '../../lib/mangopay/model/entity/card_registration'
|
3
|
+
require_relative '../../lib/mangopay/api/service/cards'
|
4
|
+
|
5
|
+
shared_context 'card_context' do
|
6
|
+
include_context 'user_context'
|
7
|
+
|
8
|
+
CARD_REGISTRATION_DATA ||= build_card_registration
|
9
|
+
CARD_REGISTRATION_PERSISTED ||= persist_card_registration CARD_REGISTRATION_DATA
|
10
|
+
# MangoPay test data
|
11
|
+
CARD_NUMBER ||= '4970100000000154'
|
12
|
+
CARD_EXPIRATION ||= '1218'
|
13
|
+
CARD_CVX ||= '123'
|
14
|
+
CARD_REGISTRATION_COMPLETED ||= complete_card_registration CARD_REGISTRATION_PERSISTED
|
15
|
+
CARD ||= retrieve_card CARD_REGISTRATION_COMPLETED.card_id
|
16
|
+
end
|
17
|
+
|
18
|
+
def persist_card_registration(card_registration)
|
19
|
+
MangoApi::Cards.create_registration card_registration
|
20
|
+
end
|
21
|
+
|
22
|
+
def complete_card_registration(card_registration)
|
23
|
+
test_body = "data=#{card_registration.preregistration_data}" +
|
24
|
+
"&accessKeyRef=#{card_registration.access_key}" +
|
25
|
+
"&cardNumber=#{CARD_NUMBER}" +
|
26
|
+
"&cardExpirationDate=#{CARD_EXPIRATION}" +
|
27
|
+
"&cardCvx=#{CARD_CVX}"
|
28
|
+
|
29
|
+
uri = URI(card_registration.card_registration_url)
|
30
|
+
response = MangoApi::HttpClient.post_raw(uri) do |request|
|
31
|
+
request.body = test_body
|
32
|
+
end
|
33
|
+
MangoApi::Cards.complete_registration(CARD_REGISTRATION_PERSISTED.id, response.to_s)
|
34
|
+
end
|
35
|
+
|
36
|
+
def build_card_registration
|
37
|
+
registration = MangoModel::CardRegistration.new
|
38
|
+
registration.user_id = NATURAL_USER_PERSISTED.id
|
39
|
+
registration.card_type = MangoModel::CardType::CB_VISA_MASTERCARD
|
40
|
+
registration.currency = MangoModel::CurrencyIso::EUR
|
41
|
+
registration
|
42
|
+
end
|
43
|
+
|
44
|
+
def retrieve_card(id)
|
45
|
+
MangoApi::Cards.get id
|
46
|
+
end
|