diff --git a/apps/ff_cth/include/ct_domain.hrl b/apps/ff_cth/include/ct_domain.hrl index e59fe9c5..596e6ebb 100644 --- a/apps/ff_cth/include/ct_domain.hrl +++ b/apps/ff_cth/include/ct_domain.hrl @@ -3,6 +3,9 @@ -include_lib("damsel/include/dmsl_domain_config_thrift.hrl"). +-define(IDENTITY_PROVIDER_NAME1, <<"Test provider payinst#1">>). +-define(IDENTITY_PROVIDER_NAME2, <<"Test provider payinst#2">>). + -define(ordset(Es), ordsets:from_list(Es)). -define(glob(), #domain_GlobalsRef{}). @@ -22,6 +25,7 @@ -define(insp(ID), #domain_InspectorRef{id = ID}). -define(payinst(ID), #domain_PaymentInstitutionRef{id = ID}). -define(ruleset(ID), #domain_RoutingRulesetRef{id = ID}). +-define(identprov(Name), #domain_IdentityProviderRef{id = Name}). -define(cash(Amount, SymCode), #domain_Cash{amount = Amount, currency = ?cur(SymCode)}). diff --git a/apps/ff_cth/src/ct_domain.erl b/apps/ff_cth/src/ct_domain.erl index c8ef029a..764d8c0f 100644 --- a/apps/ff_cth/src/ct_domain.erl +++ b/apps/ff_cth/src/ct_domain.erl @@ -20,7 +20,7 @@ -export([term_set_hierarchy/2]). -export([term_set_hierarchy/3]). -export([timed_term_set/1]). --export([globals/2]). +-export([globals/3]). -export([withdrawal_provider/4]). -export([withdrawal_terminal/1]). @@ -437,13 +437,15 @@ timed_term_set(TermSet) -> terms = TermSet }. --spec globals(?dtp('ExternalAccountSetRef'), [?dtp('PaymentInstitutionRef')]) -> object(). -globals(EASRef, PIRefs) -> +-spec globals(?dtp('ExternalAccountSetRef'), [?dtp('PaymentInstitutionRef')], [?dtp('IdentityProviderRef')]) -> + object(). +globals(EASRef, PIRefs, IPRefs) -> {globals, #domain_GlobalsObject{ ref = ?glob(), data = #domain_Globals{ external_account_set = {value, EASRef}, - payment_institutions = ?ordset(PIRefs) + payment_institutions = ?ordset(PIRefs), + identity_providers = ?ordset(IPRefs) } }}. diff --git a/apps/ff_cth/src/ct_payment_system.erl b/apps/ff_cth/src/ct_payment_system.erl index 826d4cd5..ee45efe0 100644 --- a/apps/ff_cth/src/ct_payment_system.erl +++ b/apps/ff_cth/src/ct_payment_system.erl @@ -1,5 +1,7 @@ -module(ct_payment_system). +-include_lib("ff_cth/include/ct_domain.hrl"). + -export([setup/0]). -export([setup/1]). -export([shutdown/1]). @@ -75,8 +77,7 @@ start_processing_apps(Options) -> woody, dmt_client, {fistful, [ - {services, services(Options)}, - {providers, identity_provider_config(Options)} + {services, services(Options)} ]}, ff_server ]), @@ -156,12 +157,12 @@ configure_processing_apps(Options) -> ok = create_crunch_identity( payment_inst_identity_id(Options), provider_identity_id(Options), - <<"good-one">> + ?IDENTITY_PROVIDER_NAME1 ), ok = create_crunch_identity( dummy_payment_inst_identity_id(Options), dummy_provider_identity_id(Options), - <<"good-two">> + ?IDENTITY_PROVIDER_NAME2 ). create_crunch_identity(PayInstIID, ProviderIID, ProviderID) -> @@ -172,7 +173,7 @@ create_crunch_identity(PayInstIID, ProviderIID, ProviderID) -> create_company_account() -> PartyID = create_party(), - IdentityID = create_identity(PartyID, <<"good-one">>), + IdentityID = create_identity(PartyID, ?IDENTITY_PROVIDER_NAME1), {ok, Currency} = ff_currency:get(<<"RUB">>), {ok, IdentityMachine} = ff_identity_machine:get(IdentityID), Identity = ff_identity_machine:identity(IdentityMachine), @@ -207,22 +208,6 @@ do_set_env([Key | Path], Value, Env) -> SubEnv = maps:get(Key, Env, #{}), Env#{Key => do_set_env(Path, Value, SubEnv)}. -%% Default options -identity_provider_config(Options) -> - Default = #{ - <<"good-one">> => #{ - payment_institution_id => 1, - contract_template_id => 1, - contractor_level => full - }, - <<"good-two">> => #{ - payment_institution_id => 2, - contract_template_id => 1, - contractor_level => full - } - }, - maps:get(identity_provider_config, Options, Default). - services(Options) -> Default = #{ ff_withdrawal_adapter_host => "http://fistful-server:8022/v1/ff_withdrawal_adapter_host", @@ -281,7 +266,10 @@ domain_config(Options, C) -> ]}, Default = [ - ct_domain:globals(?eas(1), [?payinst(1)]), + ct_domain:globals(?eas(1), [?payinst(1)], [ + ?identprov(?IDENTITY_PROVIDER_NAME1), + ?identprov(?IDENTITY_PROVIDER_NAME2) + ]), ct_domain:external_account_set(?eas(1), <<"Default">>, ?cur(<<"RUB">>), C), routing_ruleset(?ruleset(1), <<"WithdrawalRuleset#1">>, WithdrawalDecision1), @@ -596,7 +584,10 @@ domain_config(Options, C) -> ct_domain:payment_method(?pmt(bank_card_deprecated, mastercard)), ct_domain:payment_system(?pmtsys(<<"VISA">>), <<"VISA">>), - ct_domain:payment_system(?pmtsys(<<"NSPK MIR">>), <<"NSPK MIR">>) + ct_domain:payment_system(?pmtsys(<<"NSPK MIR">>), <<"NSPK MIR">>), + + identity_provider(?identprov(?IDENTITY_PROVIDER_NAME1), ?payinst(1), ?tmpl(1)), + identity_provider(?identprov(?IDENTITY_PROVIDER_NAME2), ?payinst(2), ?tmpl(1)) ], maps:get(domain_config, Options, Default). @@ -982,3 +973,13 @@ candidate(Allowed, Terminal) -> allowed = Allowed, terminal = Terminal }. + +identity_provider(Ref, PayInstRef, TmplRef) -> + {identity_provider, #domain_IdentityProviderObject{ + ref = Ref, + data = #domain_IdentityProvider{ + payment_institution = PayInstRef, + contract_template = TmplRef, + contractor_level = full + } + }}. diff --git a/apps/ff_server/src/ff_provider_handler.erl b/apps/ff_server/src/ff_provider_handler.erl index 89d4f51a..ad8f59d8 100644 --- a/apps/ff_server/src/ff_provider_handler.erl +++ b/apps/ff_server/src/ff_provider_handler.erl @@ -33,7 +33,8 @@ handle_function_('GetProvider', {ID}, _Opts) -> woody_error:raise(business, #fistful_ProviderNotFound{}) end; handle_function_('ListProviders', _, _Opts) -> - {ok, marshal_providers(ff_provider:list())}. + Providers = ff_provider:list(), + {ok, marshal_providers(Providers)}. %% diff --git a/apps/ff_server/test/ff_deposit_handler_SUITE.erl b/apps/ff_server/test/ff_deposit_handler_SUITE.erl index 429e3faf..548c9ffb 100644 --- a/apps/ff_server/test/ff_deposit_handler_SUITE.erl +++ b/apps/ff_server/test/ff_deposit_handler_SUITE.erl @@ -1,5 +1,6 @@ -module(ff_deposit_handler_SUITE). +-include_lib("ff_cth/include/ct_domain.hrl"). -include_lib("stdlib/include/assert.hrl"). -include_lib("damsel/include/dmsl_domain_thrift.hrl"). -include_lib("fistful_proto/include/ff_proto_deposit_thrift.hrl"). @@ -688,7 +689,7 @@ create_party(_C) -> ID. create_identity(Party, C) -> - create_identity(Party, <<"good-one">>, C). + create_identity(Party, ?IDENTITY_PROVIDER_NAME1, C). create_identity(Party, ProviderID, C) -> create_identity(Party, <<"Identity Name">>, ProviderID, C). diff --git a/apps/ff_server/test/ff_destination_handler_SUITE.erl b/apps/ff_server/test/ff_destination_handler_SUITE.erl index 87dc04e1..171c6630 100644 --- a/apps/ff_server/test/ff_destination_handler_SUITE.erl +++ b/apps/ff_server/test/ff_destination_handler_SUITE.erl @@ -1,5 +1,6 @@ -module(ff_destination_handler_SUITE). +-include_lib("ff_cth/include/ct_domain.hrl"). -include_lib("fistful_proto/include/ff_proto_destination_thrift.hrl"). -export([all/0]). @@ -180,7 +181,7 @@ create_party(_C) -> ID. create_identity(Party, C) -> - create_identity(Party, <<"good-one">>, C). + create_identity(Party, ?IDENTITY_PROVIDER_NAME1, C). create_identity(Party, ProviderID, C) -> create_identity(Party, <<"Identity Name">>, ProviderID, C). diff --git a/apps/ff_server/test/ff_eventsink_SUITE.erl b/apps/ff_server/test/ff_eventsink_SUITE.erl index d87b8a95..aa322561 100644 --- a/apps/ff_server/test/ff_eventsink_SUITE.erl +++ b/apps/ff_server/test/ff_eventsink_SUITE.erl @@ -1,5 +1,6 @@ -module(ff_eventsink_SUITE). +-include_lib("ff_cth/include/ct_domain.hrl"). -include_lib("fistful_proto/include/ff_proto_withdrawal_thrift.hrl"). -export([all/0]). @@ -94,7 +95,7 @@ get_identity_events_ok(C) -> id => ID, name => Name, party => Party, - provider => <<"good-one">> + provider => ?IDENTITY_PROVIDER_NAME1 }, #{<<"com.rbkmoney.wapi">> => #{<<"name">> => Name}} ), @@ -269,7 +270,7 @@ create_party(_C) -> ID. create_identity(Party, C) -> - create_identity(Party, <<"good-one">>, C). + create_identity(Party, ?IDENTITY_PROVIDER_NAME1, C). create_identity(Party, ProviderID, C) -> create_identity(Party, <<"Identity Name">>, ProviderID, C). @@ -359,8 +360,8 @@ process_withdrawal(WalID, DestID) -> {Events, _MaxID} = ct_eventsink:events(undefined, 1000, Sink), search_event_commited(Events, WdrID) end, - % genlib_retry:linear(15, 1000) - genlib_retry:linear(5, 1000) + genlib_retry:linear(15, 1000) + % genlib_retry:linear(5, 1000) ), WdrID. diff --git a/apps/ff_server/test/ff_identity_handler_SUITE.erl b/apps/ff_server/test/ff_identity_handler_SUITE.erl index b2c87eeb..e8a0b13d 100644 --- a/apps/ff_server/test/ff_identity_handler_SUITE.erl +++ b/apps/ff_server/test/ff_identity_handler_SUITE.erl @@ -1,5 +1,6 @@ -module(ff_identity_handler_SUITE). +-include_lib("ff_cth/include/ct_domain.hrl"). -include_lib("stdlib/include/assert.hrl"). -include_lib("fistful_proto/include/ff_proto_identity_thrift.hrl"). @@ -63,7 +64,7 @@ create_identity_ok(_C) -> PartyID = create_party(), EID = genlib:unique(), Name = <<"Identity Name">>, - ProvID = <<"good-one">>, + ProvID = ?IDENTITY_PROVIDER_NAME1, Ctx = #{<<"NS">> => #{<<"owner">> => PartyID}}, Metadata = ff_entity_context_codec:marshal(#{<<"metadata">> => #{<<"some key">> => <<"some data">>}}), Identity = create_identity(EID, Name, PartyID, ProvID, Ctx, Metadata), @@ -87,7 +88,7 @@ get_event_unknown_identity_ok(_C) -> EID = genlib:unique(), PID = create_party(), Name = <<"Identity Name">>, - ProvID = <<"good-one">>, + ProvID = ?IDENTITY_PROVIDER_NAME1, Metadata = ff_entity_context_codec:marshal(#{<<"metadata">> => #{<<"some key">> => <<"some data">>}}), create_identity(EID, Name, PID, ProvID, Ctx, Metadata), Range = #'EventRange'{ @@ -128,7 +129,3 @@ create_party() -> ID = genlib:bsuuid(), _ = ff_party:create(ID), ID. - -%% CONFIGS - --include_lib("ff_cth/include/ct_domain.hrl"). diff --git a/apps/ff_server/test/ff_provider_handler_SUITE.erl b/apps/ff_server/test/ff_provider_handler_SUITE.erl index 3e44782f..48119ccf 100644 --- a/apps/ff_server/test/ff_provider_handler_SUITE.erl +++ b/apps/ff_server/test/ff_provider_handler_SUITE.erl @@ -1,5 +1,6 @@ -module(ff_provider_handler_SUITE). +-include_lib("ff_cth/include/ct_domain.hrl"). -include_lib("stdlib/include/assert.hrl"). -include_lib("fistful_proto/include/ff_proto_provider_thrift.hrl"). @@ -73,8 +74,8 @@ end_per_testcase(_Name, _C) -> -spec get_provider_ok(config()) -> test_return(). get_provider_ok(_C) -> - {ok, Provider} = call_service('GetProvider', {<<"good-one">>}), - ?assertEqual(<<"good-one">>, Provider#provider_Provider.id), + {ok, Provider} = call_service('GetProvider', {?IDENTITY_PROVIDER_NAME1}), + ?assertEqual(?IDENTITY_PROVIDER_NAME1, Provider#provider_Provider.id), ?assertEqual(<<"Generic Payment Institution">>, Provider#provider_Provider.name), ?assertEqual([<<"RUS">>], Provider#provider_Provider.residences). diff --git a/apps/ff_server/test/ff_source_handler_SUITE.erl b/apps/ff_server/test/ff_source_handler_SUITE.erl index c39d6b0a..b75bee9e 100644 --- a/apps/ff_server/test/ff_source_handler_SUITE.erl +++ b/apps/ff_server/test/ff_source_handler_SUITE.erl @@ -2,6 +2,7 @@ -include_lib("stdlib/include/assert.hrl"). -include_lib("fistful_proto/include/ff_proto_source_thrift.hrl"). +-include_lib("ff_cth/include/ct_domain.hrl"). -export([all/0]). -export([groups/0]). @@ -172,7 +173,7 @@ create_party(_C) -> ID. create_identity(Party, C) -> - create_identity(Party, <<"good-one">>, C). + create_identity(Party, ?IDENTITY_PROVIDER_NAME1, C). create_identity(Party, ProviderID, C) -> create_identity(Party, <<"Identity Name">>, ProviderID, C). diff --git a/apps/ff_server/test/ff_w2w_transfer_handler_SUITE.erl b/apps/ff_server/test/ff_w2w_transfer_handler_SUITE.erl index 3e7dc1fa..98945e9a 100644 --- a/apps/ff_server/test/ff_w2w_transfer_handler_SUITE.erl +++ b/apps/ff_server/test/ff_w2w_transfer_handler_SUITE.erl @@ -1,5 +1,6 @@ -module(ff_w2w_transfer_handler_SUITE). +-include_lib("ff_cth/include/ct_domain.hrl"). -include_lib("stdlib/include/assert.hrl"). -include_lib("fistful_proto/include/ff_proto_w2w_transfer_thrift.hrl"). -include_lib("shumpune_proto/include/shumpune_shumpune_thrift.hrl"). @@ -345,7 +346,7 @@ call_accounter(Function, Args) -> ff_woody_client:call(accounter, {Service, Function, Args}, woody_context:new()). create_identity(Party, C) -> - create_identity(Party, <<"good-two">>, C). + create_identity(Party, ?IDENTITY_PROVIDER_NAME2, C). create_identity(Party, ProviderID, C) -> create_identity(Party, <<"Identity Name">>, ProviderID, C). diff --git a/apps/ff_server/test/ff_wallet_handler_SUITE.erl b/apps/ff_server/test/ff_wallet_handler_SUITE.erl index 2fcd2a61..667b641e 100644 --- a/apps/ff_server/test/ff_wallet_handler_SUITE.erl +++ b/apps/ff_server/test/ff_wallet_handler_SUITE.erl @@ -1,5 +1,6 @@ -module(ff_wallet_handler_SUITE). +-include_lib("ff_cth/include/ct_domain.hrl"). -include_lib("stdlib/include/assert.hrl"). -include_lib("fistful_proto/include/ff_proto_wallet_thrift.hrl"). -include_lib("damsel/include/dmsl_payment_processing_thrift.hrl"). @@ -185,7 +186,7 @@ create_party(_C) -> ID. create_identity(Party, C) -> - create_identity(Party, <<"good-one">>, C). + create_identity(Party, ?IDENTITY_PROVIDER_NAME1, C). create_identity(Party, ProviderID, C) -> create_identity(Party, <<"Identity Name">>, ProviderID, C). diff --git a/apps/ff_server/test/ff_withdrawal_handler_SUITE.erl b/apps/ff_server/test/ff_withdrawal_handler_SUITE.erl index a471afe4..2ccfde7e 100644 --- a/apps/ff_server/test/ff_withdrawal_handler_SUITE.erl +++ b/apps/ff_server/test/ff_withdrawal_handler_SUITE.erl @@ -1,5 +1,6 @@ -module(ff_withdrawal_handler_SUITE). +-include_lib("ff_cth/include/ct_domain.hrl"). -include_lib("stdlib/include/assert.hrl"). -include_lib("damsel/include/dmsl_domain_thrift.hrl"). -include_lib("fistful_proto/include/ff_proto_withdrawal_thrift.hrl"). @@ -556,7 +557,7 @@ create_party(_C) -> ID. create_identity(Party, C) -> - create_identity(Party, <<"good-one">>, C). + create_identity(Party, ?IDENTITY_PROVIDER_NAME1, C). create_identity(Party, ProviderID, C) -> create_identity(Party, <<"Identity Name">>, ProviderID, C). diff --git a/apps/ff_server/test/ff_withdrawal_session_repair_SUITE.erl b/apps/ff_server/test/ff_withdrawal_session_repair_SUITE.erl index 61cc24ee..b8fe15bd 100644 --- a/apps/ff_server/test/ff_withdrawal_session_repair_SUITE.erl +++ b/apps/ff_server/test/ff_withdrawal_session_repair_SUITE.erl @@ -3,6 +3,7 @@ -include_lib("stdlib/include/assert.hrl"). -include_lib("fistful_proto/include/ff_proto_withdrawal_session_thrift.hrl"). -include_lib("damsel/include/dmsl_domain_thrift.hrl"). +-include_lib("ff_cth/include/ct_domain.hrl"). -export([all/0]). -export([groups/0]). @@ -129,7 +130,7 @@ create_party(_C) -> ID. create_identity(Party, C) -> - create_identity(Party, <<"Owner">>, <<"good-one">>, C). + create_identity(Party, <<"Owner">>, ?IDENTITY_PROVIDER_NAME1, C). create_identity(Party, Name, ProviderID, _C) -> ID = genlib:unique(), diff --git a/apps/ff_transfer/test/ff_deposit_SUITE.erl b/apps/ff_transfer/test/ff_deposit_SUITE.erl index 0b94b8d9..6f432dc2 100644 --- a/apps/ff_transfer/test/ff_deposit_SUITE.erl +++ b/apps/ff_transfer/test/ff_deposit_SUITE.erl @@ -2,6 +2,7 @@ -include_lib("stdlib/include/assert.hrl"). -include_lib("damsel/include/dmsl_payment_processing_thrift.hrl"). +-include_lib("ff_cth/include/ct_domain.hrl"). %% Common test API @@ -291,7 +292,7 @@ create_party(_C) -> ID. create_identity(Party, C) -> - create_identity(Party, <<"good-one">>, C). + create_identity(Party, ?IDENTITY_PROVIDER_NAME1, C). create_identity(Party, ProviderID, C) -> create_identity(Party, <<"Identity Name">>, ProviderID, C). diff --git a/apps/ff_transfer/test/ff_deposit_adjustment_SUITE.erl b/apps/ff_transfer/test/ff_deposit_adjustment_SUITE.erl index 74f9685e..4ab8bd49 100644 --- a/apps/ff_transfer/test/ff_deposit_adjustment_SUITE.erl +++ b/apps/ff_transfer/test/ff_deposit_adjustment_SUITE.erl @@ -1,6 +1,7 @@ -module(ff_deposit_adjustment_SUITE). -include_lib("stdlib/include/assert.hrl"). +-include_lib("ff_cth/include/ct_domain.hrl"). %% Common test API @@ -384,7 +385,7 @@ create_party(_C) -> ID. create_identity(Party, C) -> - create_identity(Party, <<"good-one">>, C). + create_identity(Party, ?IDENTITY_PROVIDER_NAME1, C). create_identity(Party, ProviderID, C) -> create_identity(Party, <<"Identity Name">>, ProviderID, C). diff --git a/apps/ff_transfer/test/ff_deposit_revert_SUITE.erl b/apps/ff_transfer/test/ff_deposit_revert_SUITE.erl index 720b630f..436d8f72 100644 --- a/apps/ff_transfer/test/ff_deposit_revert_SUITE.erl +++ b/apps/ff_transfer/test/ff_deposit_revert_SUITE.erl @@ -1,5 +1,6 @@ -module(ff_deposit_revert_SUITE). +-include_lib("ff_cth/include/ct_domain.hrl"). -include_lib("stdlib/include/assert.hrl"). -include_lib("shumpune_proto/include/shumpune_shumpune_thrift.hrl"). @@ -390,7 +391,7 @@ create_party(_C) -> ID. create_identity(Party, C) -> - create_identity(Party, <<"good-one">>, C). + create_identity(Party, ?IDENTITY_PROVIDER_NAME1, C). create_identity(Party, ProviderID, C) -> create_identity(Party, <<"Identity Name">>, ProviderID, C). diff --git a/apps/ff_transfer/test/ff_deposit_revert_adjustment_SUITE.erl b/apps/ff_transfer/test/ff_deposit_revert_adjustment_SUITE.erl index a439b8a7..beffe129 100644 --- a/apps/ff_transfer/test/ff_deposit_revert_adjustment_SUITE.erl +++ b/apps/ff_transfer/test/ff_deposit_revert_adjustment_SUITE.erl @@ -2,6 +2,7 @@ -include_lib("stdlib/include/assert.hrl"). -include_lib("shumpune_proto/include/shumpune_shumpune_thrift.hrl"). +-include_lib("ff_cth/include/ct_domain.hrl"). %% Common test API @@ -439,7 +440,7 @@ create_party(_C) -> ID. create_identity(Party, C) -> - create_identity(Party, <<"good-one">>, C). + create_identity(Party, ?IDENTITY_PROVIDER_NAME1, C). create_identity(Party, ProviderID, C) -> create_identity(Party, <<"Identity Name">>, ProviderID, C). diff --git a/apps/ff_transfer/test/ff_destination_SUITE.erl b/apps/ff_transfer/test/ff_destination_SUITE.erl index 62cf97f6..688d11c9 100644 --- a/apps/ff_transfer/test/ff_destination_SUITE.erl +++ b/apps/ff_transfer/test/ff_destination_SUITE.erl @@ -3,6 +3,7 @@ -include_lib("fistful_proto/include/ff_proto_destination_thrift.hrl"). -include_lib("damsel/include/dmsl_domain_thrift.hrl"). -include_lib("stdlib/include/assert.hrl"). +-include_lib("ff_cth/include/ct_domain.hrl"). % Common test API -export([all/0]). @@ -166,7 +167,7 @@ create_party(_C) -> ID. create_identity(Party, C) -> - create_identity(Party, <<"good-one">>, C). + create_identity(Party, ?IDENTITY_PROVIDER_NAME1, C). create_identity(Party, ProviderID, C) -> create_identity(Party, <<"Identity Name">>, ProviderID, C). diff --git a/apps/ff_transfer/test/ff_source_SUITE.erl b/apps/ff_transfer/test/ff_source_SUITE.erl index 9d10c961..3a588894 100644 --- a/apps/ff_transfer/test/ff_source_SUITE.erl +++ b/apps/ff_transfer/test/ff_source_SUITE.erl @@ -3,6 +3,7 @@ -include_lib("fistful_proto/include/ff_proto_source_thrift.hrl"). -include_lib("damsel/include/dmsl_domain_thrift.hrl"). -include_lib("stdlib/include/assert.hrl"). +-include_lib("ff_cth/include/ct_domain.hrl"). % Common test API -export([all/0]). @@ -147,7 +148,7 @@ create_party(_C) -> ID. create_identity(Party, C) -> - create_identity(Party, <<"good-one">>, C). + create_identity(Party, ?IDENTITY_PROVIDER_NAME1, C). create_identity(Party, ProviderID, C) -> create_identity(Party, <<"Identity Name">>, ProviderID, C). diff --git a/apps/ff_transfer/test/ff_transfer_SUITE.erl b/apps/ff_transfer/test/ff_transfer_SUITE.erl index 994eddd4..7dae6842 100644 --- a/apps/ff_transfer/test/ff_transfer_SUITE.erl +++ b/apps/ff_transfer/test/ff_transfer_SUITE.erl @@ -3,6 +3,7 @@ -include_lib("fistful_proto/include/ff_proto_fistful_admin_thrift.hrl"). -include_lib("fistful_proto/include/ff_proto_withdrawal_thrift.hrl"). -include_lib("damsel/include/dmsl_domain_thrift.hrl"). +-include_lib("ff_cth/include/ct_domain.hrl"). -export([all/0]). -export([groups/0]). @@ -335,7 +336,7 @@ deposit_withdrawal_to_crypto_wallet(C) -> deposit_withdrawal_to_digital_wallet(C) -> Party = create_party(C), - IID = create_identity(Party, <<"good-two">>, C), + IID = create_identity(Party, ?IDENTITY_PROVIDER_NAME2, C), WalID = create_wallet(IID, <<"WalletName">>, <<"RUB">>, C), ok = await_wallet_balance({0, <<"RUB">>}, WalID), SrcID = create_source(IID, C), @@ -347,7 +348,7 @@ deposit_withdrawal_to_digital_wallet(C) -> deposit_quote_withdrawal_ok(C) -> Party = create_party(C), - IID = create_identity(Party, <<"good-two">>, C), + IID = create_identity(Party, ?IDENTITY_PROVIDER_NAME2, C), WalID = create_wallet(IID, <<"HAHA NO">>, <<"RUB">>, C), ok = await_wallet_balance({0, <<"RUB">>}, WalID), SrcID = create_source(IID, C), @@ -380,7 +381,7 @@ create_party(_C) -> ID. create_identity(Party, C) -> - create_identity(Party, <<"good-one">>, C). + create_identity(Party, ?IDENTITY_PROVIDER_NAME1, C). create_identity(Party, ProviderID, C) -> create_identity(Party, <<"Identity Name">>, ProviderID, C). diff --git a/apps/ff_transfer/test/ff_withdrawal_SUITE.erl b/apps/ff_transfer/test/ff_withdrawal_SUITE.erl index 6cd45933..2aec6e4e 100644 --- a/apps/ff_transfer/test/ff_withdrawal_SUITE.erl +++ b/apps/ff_transfer/test/ff_withdrawal_SUITE.erl @@ -162,7 +162,7 @@ session_fail_test(C) -> Party = create_party(C), Currency = <<"RUB">>, WithdrawalCash = {100, Currency}, - IdentityID = create_identity(Party, <<"good-two">>, C), + IdentityID = create_identity(Party, ?IDENTITY_PROVIDER_NAME2, C), WalletID = create_wallet(IdentityID, <<"My wallet">>, Currency, C), ok = await_wallet_balance({0, Currency}, WalletID), DestinationID = create_destination(IdentityID, undefined, C), @@ -382,7 +382,7 @@ create_identity_providers_mismatch_error_test(C) -> destination_id := DestinationID } = prepare_standard_environment(Cash, C), Party = create_party(C), - IdentityID = create_identity(Party, <<"good-two">>, C), + IdentityID = create_identity(Party, ?IDENTITY_PROVIDER_NAME2, C), WalletID = create_wallet(IdentityID, <<"My wallet">>, <<"RUB">>, C), WithdrawalID = generate_id(), WithdrawalParams = #{ @@ -392,7 +392,7 @@ create_identity_providers_mismatch_error_test(C) -> body => {100, <<"RUB">>} }, Result = ff_withdrawal_machine:create(WithdrawalParams, ff_entity_context:new()), - ?assertMatch({error, {identity_providers_mismatch, {<<"good-two">>, <<"good-one">>}}}, Result). + ?assertMatch({error, {identity_providers_mismatch, {?IDENTITY_PROVIDER_NAME2, ?IDENTITY_PROVIDER_NAME1}}}, Result). -spec create_destination_resource_notfound_test(config()) -> test_return(). create_destination_resource_notfound_test(C) -> @@ -498,7 +498,7 @@ crypto_quota_ok_test(C) -> Currency = <<"RUB">>, Cash = {100, Currency}, Party = create_party(C), - IdentityID = create_identity(Party, <<"good-two">>, C), + IdentityID = create_identity(Party, ?IDENTITY_PROVIDER_NAME2, C), WalletID = create_wallet(IdentityID, <<"My wallet">>, Currency, C), ok = await_wallet_balance({0, Currency}, WalletID), DestinationID = create_crypto_destination(IdentityID, C), @@ -835,7 +835,7 @@ create_party(_C) -> ID. create_person_identity(Party, C) -> - create_identity(Party, <<"good-one">>, C). + create_identity(Party, ?IDENTITY_PROVIDER_NAME1, C). create_identity(Party, ProviderID, C) -> create_identity(Party, <<"Identity Name">>, ProviderID, C). diff --git a/apps/ff_transfer/test/ff_withdrawal_adjustment_SUITE.erl b/apps/ff_transfer/test/ff_withdrawal_adjustment_SUITE.erl index 6c28d723..0095e0e2 100644 --- a/apps/ff_transfer/test/ff_withdrawal_adjustment_SUITE.erl +++ b/apps/ff_transfer/test/ff_withdrawal_adjustment_SUITE.erl @@ -2,6 +2,7 @@ -include_lib("stdlib/include/assert.hrl"). -include_lib("shumpune_proto/include/shumpune_shumpune_thrift.hrl"). +-include_lib("ff_cth/include/ct_domain.hrl"). %% Common test API @@ -386,7 +387,7 @@ create_party(_C) -> ID. create_identity(Party, C) -> - create_identity(Party, <<"good-one">>, C). + create_identity(Party, ?IDENTITY_PROVIDER_NAME1, C). create_identity(Party, ProviderID, C) -> create_identity(Party, <<"Identity Name">>, ProviderID, C). diff --git a/apps/ff_transfer/test/ff_withdrawal_routing_SUITE.erl b/apps/ff_transfer/test/ff_withdrawal_routing_SUITE.erl index 68fe78bf..b35ff7b3 100644 --- a/apps/ff_transfer/test/ff_withdrawal_routing_SUITE.erl +++ b/apps/ff_transfer/test/ff_withdrawal_routing_SUITE.erl @@ -19,6 +19,7 @@ -include_lib("stdlib/include/assert.hrl"). -include_lib("damsel/include/dmsl_domain_thrift.hrl"). -include_lib("shumpune_proto/include/shumpune_shumpune_thrift.hrl"). +-include_lib("ff_cth/include/ct_domain.hrl"). %% Common test API @@ -297,7 +298,7 @@ create_party(_C) -> ID. create_identity(Party, C) -> - create_identity(Party, <<"good-one">>, C). + create_identity(Party, ?IDENTITY_PROVIDER_NAME1, C). create_identity(Party, ProviderID, C) -> create_identity(Party, <<"Identity Name">>, ProviderID, C). diff --git a/apps/fistful/src/ff_provider.erl b/apps/fistful/src/ff_provider.erl index 9a29f015..21354237 100644 --- a/apps/fistful/src/ff_provider.erl +++ b/apps/fistful/src/ff_provider.erl @@ -13,25 +13,21 @@ -module(ff_provider). -include_lib("damsel/include/dmsl_domain_thrift.hrl"). +-include_lib("damsel/include/dmsl_domain_config_thrift.hrl"). -type contract_template_ref() :: dmsl_domain_thrift:'ContractTemplateRef'(). -type contractor_level() :: dmsl_domain_thrift:'ContractorIdentificationLevel'(). -type id() :: binary(). +-type provider_ref() :: dmsl_domain_thrift:'IdentityProviderRef'(). -type provider() :: #{ - id := id(), + id := provider_ref(), payinst_ref := payinst_ref(), payinst := payinst(), contract_template_ref := contract_template_ref(), contractor_level := contractor_level() }. --type configuration() :: #{ - payinst_id := integer(), - contract_template_id := integer(), - contractor_level := contractor_level() -}. - -type payinst() :: dmsl_domain_thrift:'PaymentInstitution'(). -type payinst_ref() :: dmsl_domain_thrift:'PaymentInstitutionRef'(). @@ -61,8 +57,8 @@ -spec contract_template(provider()) -> contract_template_ref(). -spec contractor_level(provider()) -> contractor_level(). -id(#{id := ID}) -> - ID. +id(#{id := Ref}) -> + Ref#domain_IdentityProviderRef.id. name(#{payinst := PI}) -> PI#domain_PaymentInstitution.name. @@ -83,63 +79,47 @@ contractor_level(#{contractor_level := Level}) -> -spec list() -> [provider()]. list() -> + ProviderRefs = list_providers(), [ Provider - || ID <- list_providers(), - {ok, Provider} <- [ff_provider:get(ID)] + || Ref <- ProviderRefs, + {ok, Provider} <- [ff_provider:get(Ref)] ]. --spec get(id()) -> +-spec get(id() | provider_ref()) -> {ok, provider()} | {error, notfound}. -get(ID) -> +get(ID) when is_binary(ID) -> + ff_provider:get(#domain_IdentityProviderRef{id = ID}); +get(IdentityProviderRef) -> do(fun() -> % TODO - % - We need to somehow expose these things in the domain config % - Possibly inconsistent view of domain config - Config = unwrap(get_config(ID)), - PaymentInstitutionRef = #domain_PaymentInstitutionRef{id = cfg(payment_institution, Config)}, + IdentityProvider = unwrap(ff_domain_config:object({identity_provider, IdentityProviderRef})), + PaymentInstitutionRef = IdentityProvider#domain_IdentityProvider.payment_institution, {ok, PaymentInstitution} = ff_domain_config:object({payment_institution, PaymentInstitutionRef}), - ContractTemplateRef = #domain_ContractTemplateRef{id = cfg(contract_template_id, Config)}, - % TODO FF-245: we shouldn't check after provider's configuration will be moved on domain_config - ok = validate_contract_template_ref(ContractTemplateRef), #{ - id => ID, + id => IdentityProviderRef, payinst_ref => PaymentInstitutionRef, payinst => PaymentInstitution, - contract_template_ref => ContractTemplateRef, - contractor_level => cfg(contractor_level, Config) + contract_template_ref => IdentityProvider#domain_IdentityProvider.contract_template, + contractor_level => IdentityProvider#domain_IdentityProvider.contractor_level } end). %% Provider Configuration --spec get_config(id()) -> - {ok, configuration()} - | {error, notfound}. -get_config(ID) -> - case genlib_app:env(fistful, providers, #{}) of - #{ID := ProviderConfig} -> - {ok, #{ - payinst_id => maps:get(payment_institution_id, ProviderConfig), - contract_template_id => maps:get(contract_template_id, ProviderConfig), - contractor_level => maps:get(contractor_level, ProviderConfig) - }}; - #{} -> - {error, notfound} +-spec list_providers() -> [provider_ref()]. +list_providers() -> + #'VersionedObject'{ + % version = Version, + object = {globals, #domain_GlobalsObject{data = Globals}} + } = dmt_client:checkout_versioned_object(latest, globals()), + + case Globals#domain_Globals.identity_providers of + undefined -> []; + List -> List end. -cfg(payment_institution, C) -> - maps:get(payinst_id, C); -cfg(contract_template_id, C) -> - maps:get(contract_template_id, C); -cfg(contractor_level, C) -> - maps:get(contractor_level, C). - -validate_contract_template_ref(ContractTemplateRef) -> - {ok, _} = ff_domain_config:object({contract_template, ContractTemplateRef}), - ok. - --spec list_providers() -> [id()]. -list_providers() -> - maps:keys(genlib_app:env(fistful, providers, #{})). +globals() -> + {globals, #domain_GlobalsRef{}}. diff --git a/apps/fistful/test/ff_identity_SUITE.erl b/apps/fistful/test/ff_identity_SUITE.erl index cc265456..e56955f9 100644 --- a/apps/fistful/test/ff_identity_SUITE.erl +++ b/apps/fistful/test/ff_identity_SUITE.erl @@ -10,6 +10,7 @@ -export([create_missing_fails/1]). -export([create_ok/1]). +-include_lib("ff_cth/include/ct_domain.hrl"). %% -import(ff_pipeline, [unwrap/1]). @@ -88,7 +89,7 @@ create_ok(C) -> id => ID, name => Name, party => Party, - provider => <<"good-one">> + provider => ?IDENTITY_PROVIDER_NAME1 }, #{<<"com.rbkmoney.wapi">> => #{<<"name">> => Name}} ), diff --git a/apps/fistful/test/ff_wallet_SUITE.erl b/apps/fistful/test/ff_wallet_SUITE.erl index a5cb6a9f..bf48616f 100644 --- a/apps/fistful/test/ff_wallet_SUITE.erl +++ b/apps/fistful/test/ff_wallet_SUITE.erl @@ -167,7 +167,7 @@ create_party(_C) -> ID. create_identity(Party, C) -> - create_identity(Party, <<"good-one">>, C). + create_identity(Party, ?IDENTITY_PROVIDER_NAME1, C). create_identity(Party, ProviderID, _C) -> ID = genlib:unique(), diff --git a/apps/w2w/test/w2w_adjustment_SUITE.erl b/apps/w2w/test/w2w_adjustment_SUITE.erl index 7a4940ca..94c27c1f 100644 --- a/apps/w2w/test/w2w_adjustment_SUITE.erl +++ b/apps/w2w/test/w2w_adjustment_SUITE.erl @@ -1,5 +1,6 @@ -module(w2w_adjustment_SUITE). +-include_lib("ff_cth/include/ct_domain.hrl"). -include_lib("stdlib/include/assert.hrl"). -include_lib("shumpune_proto/include/shumpune_shumpune_thrift.hrl"). @@ -396,7 +397,7 @@ create_party(_C) -> ID. create_identity(Party, C) -> - create_identity(Party, <<"good-one">>, C). + create_identity(Party, ?IDENTITY_PROVIDER_NAME1, C). create_identity(Party, ProviderID, C) -> create_identity(Party, <<"Identity Name">>, ProviderID, C). diff --git a/apps/w2w/test/w2w_transfer_SUITE.erl b/apps/w2w/test/w2w_transfer_SUITE.erl index e526fb24..d7d99fcf 100644 --- a/apps/w2w/test/w2w_transfer_SUITE.erl +++ b/apps/w2w/test/w2w_transfer_SUITE.erl @@ -1,5 +1,6 @@ -module(w2w_transfer_SUITE). +-include_lib("ff_cth/include/ct_domain.hrl"). -include_lib("stdlib/include/assert.hrl"). -include_lib("damsel/include/dmsl_payment_processing_thrift.hrl"). -include_lib("shumpune_proto/include/shumpune_shumpune_thrift.hrl"). @@ -304,7 +305,7 @@ create_party(_C) -> ID. create_identity(Party, C) -> - create_identity(Party, <<"good-one">>, C). + create_identity(Party, ?IDENTITY_PROVIDER_NAME1, C). create_identity(Party, ProviderID, C) -> create_identity(Party, <<"Identity Name">>, ProviderID, C). diff --git a/docker-compose.sh b/docker-compose.sh index 0b904821..0b76e517 100755 --- a/docker-compose.sh +++ b/docker-compose.sh @@ -51,7 +51,7 @@ services: retries: 20 dominant: - image: dr2.rbkmoney.com/rbkmoney/dominant:753f3e0711fc7fff91abcad6e279225a7e5b8b8c + image: dr2.rbkmoney.com/rbkmoney/dominant:5d719817065cf5c8c88db3d86588debb73dee2be command: /opt/dominant/bin/dominant foreground depends_on: machinegun: @@ -162,7 +162,7 @@ services: retries: 10 party-management: - image: dr2.rbkmoney.com/rbkmoney/party-management:f59c4b46971094c80bb5937045f6930f6c3091e5 + image: dr2.rbkmoney.com/rbkmoney/party-management:bb344c459fb694e2fa1af785c75ade8f6033fe42 command: /opt/party-management/bin/party-management foreground depends_on: - machinegun diff --git a/rebar.lock b/rebar.lock index beb0ba7d..440f576c 100644 --- a/rebar.lock +++ b/rebar.lock @@ -5,7 +5,7 @@ {ref,"410b2c241d199e3cd42a9b8b553e8aa645d6ff19"}}, 0}, {<<"cache">>,{pkg,<<"cache">>,<<"2.3.3">>},1}, - {<<"certifi">>,{pkg,<<"certifi">>,<<"2.6.1">>},2}, + {<<"certifi">>,{pkg,<<"certifi">>,<<"2.8.0">>},2}, {<<"cg_mon">>, {git,"https://github.com/rbkmoney/cg_mon.git", {ref,"5a87a37694e42b6592d3b4164ae54e0e87e24e18"}}, @@ -14,11 +14,11 @@ {<<"cowlib">>,{pkg,<<"cowlib">>,<<"2.11.0">>},2}, {<<"damsel">>, {git,"https://github.com/rbkmoney/damsel.git", - {ref,"a7c69ff2f576aae91ea68420f54a37cd6258af8e"}}, + {ref,"ab256c85413216c3356467a77c5f292cbfbb1287"}}, 0}, {<<"dmt_client">>, {git,"https://github.com/rbkmoney/dmt_client.git", - {ref,"3f66402843ffeb488010f707a193858cb09325e0"}}, + {ref,"64591401b00f216ddc18f0b6d317df8df0b0703a"}}, 0}, {<<"dmt_core">>, {git,"https://github.com/rbkmoney/dmt_core.git", @@ -34,10 +34,10 @@ 0}, {<<"genlib">>, {git,"https://github.com/rbkmoney/genlib.git", - {ref,"b08ef4d61e0dde98995ec3d2f69a4447255e79ef"}}, + {ref,"82c5ff3866e3019eb347c7f1d8f1f847bed28c10"}}, 0}, {<<"gproc">>,{pkg,<<"gproc">>,<<"0.9.0">>},1}, - {<<"hackney">>,{pkg,<<"hackney">>,<<"1.17.4">>},1}, + {<<"hackney">>,{pkg,<<"hackney">>,<<"1.18.0">>},1}, {<<"id_proto">>, {git,"https://github.com/rbkmoney/identification-proto.git", {ref,"0b031c14b02cb304b308c09d0de9b286aae3a2ac"}}, @@ -92,7 +92,7 @@ 0}, {<<"woody">>, {git,"https://github.com/rbkmoney/woody_erlang.git", - {ref,"68b191ed3655dbf40d0ba687f17f75ddd74e82da"}}, + {ref,"6f818c57e3b19f96260b1f968115c9bc5bcad4d2"}}, 0}, {<<"woody_user_identity">>, {git,"https://github.com/rbkmoney/woody_erlang_user_identity.git", @@ -102,11 +102,11 @@ {pkg_hash,[ {<<"accept">>, <<"B33B127ABCA7CC948BBE6CAA4C263369ABF1347CFA9D8E699C6D214660F10CD1">>}, {<<"cache">>, <<"B23A5FE7095445A88412A6E614C933377E0137B44FFED77C9B3FEF1A731A20B2">>}, - {<<"certifi">>, <<"DBAB8E5E155A0763EEA978C913CA280A6B544BFA115633FA20249C3D396D9493">>}, + {<<"certifi">>, <<"D4FB0A6BB20B7C9C3643E22507E42F356AC090A1DCEA9AB99E27E0376D695EBA">>}, {<<"cowboy">>, <<"865DD8B6607E14CF03282E10E934023A1BD8BE6F6BACF921A7E2A96D800CD452">>}, {<<"cowlib">>, <<"0B9FF9C346629256C42EBE1EEB769A83C6CB771A6EE5960BD110AB0B9B872063">>}, {<<"gproc">>, <<"853CCB7805E9ADA25D227A157BA966F7B34508F386A3E7E21992B1B484230699">>}, - {<<"hackney">>, <<"99DA4674592504D3FB0CFEF0DB84C3BA02B4508BAE2DFF8C0108BAA0D6E0977C">>}, + {<<"hackney">>, <<"C4443D960BB9FBA6D01161D01CD81173089686717D9490E5D3606644C48D121F">>}, {<<"idna">>, <<"8A63070E9F7D0C62EB9D9FCB360A7DE382448200FBBD1B106CC96D3D8099DF8D">>}, {<<"jsx">>, <<"D12516BAA0BB23A59BB35DCCAF02A1BD08243FCBB9EFE24F2D9D056CCFF71268">>}, {<<"metrics">>, <<"25F094DEA2CDA98213CECC3AEFF09E940299D950904393B2A29D191C346A8486">>}, @@ -122,11 +122,11 @@ {pkg_hash_ext,[ {<<"accept">>, <<"11B18C220BCC2EAB63B5470C038EF10EB6783BCB1FCDB11AA4137DEFA5AC1BB8">>}, {<<"cache">>, <<"44516CE6FA03594D3A2AF025DD3A87BFE711000EB730219E1DDEFC816E0AA2F4">>}, - {<<"certifi">>, <<"524C97B4991B3849DD5C17A631223896272C6B0AF446778BA4675A1DFF53BB7E">>}, + {<<"certifi">>, <<"6AC7EFC1C6F8600B08D625292D4BBF584E14847CE1B6B5C44D983D273E1097EA">>}, {<<"cowboy">>, <<"2C729F934B4E1AA149AFF882F57C6372C15399A20D54F65C8D67BEF583021BDE">>}, {<<"cowlib">>, <<"2B3E9DA0B21C4565751A6D4901C20D1B4CC25CBB7FD50D91D2AB6DD287BC86A9">>}, {<<"gproc">>, <<"587E8AF698CCD3504CF4BA8D90F893EDE2B0F58CABB8A916E2BF9321DE3CF10B">>}, - {<<"hackney">>, <<"DE16FF4996556C8548D512F4DBE22DD58A587BF3332E7FD362430A7EF3986B16">>}, + {<<"hackney">>, <<"9AFCDA620704D720DB8C6A3123E9848D09C87586DC1C10479C42627B905B5C5E">>}, {<<"idna">>, <<"92376EB7894412ED19AC475E4A86F7B413C1B9FBB5BD16DCCD57934157944CEA">>}, {<<"jsx">>, <<"0C5CC8FDC11B53CC25CF65AC6705AD39E54ECC56D1C22E4ADB8F5A53FB9427F3">>}, {<<"metrics">>, <<"69B09ADDDC4F74A40716AE54D140F93BEB0FB8978D8636EADED0C31B6F099F16">>},