diff --git a/.env b/.env index b54da45..e3fd00c 100644 --- a/.env +++ b/.env @@ -2,6 +2,6 @@ # You SHOULD specify point releases here so that build time and run time Erlang/OTPs # are the same. See: https://github.com/erlware/relx/pull/902 SERVICE_NAME=party-management -OTP_VERSION=27.1.2 -REBAR_VERSION=3.24 +OTP_VERSION=28.5.0 +REBAR_VERSION=3.26 THRIFT_VERSION=0.14.2.3 diff --git a/apps/party_management/src/pm_condition.erl b/apps/party_management/src/pm_condition.erl index c697a6b..5417f98 100644 --- a/apps/party_management/src/pm_condition.erl +++ b/apps/party_management/src/pm_condition.erl @@ -42,6 +42,8 @@ test({identification_level_is, V1}, #{identification_level := V2}, _) -> V1 =:= V2; test({bin_data, #domain_BinDataCondition{} = C}, #{bin_data := #domain_BinData{} = V}, Rev) -> test_bindata_tool(C, V, Rev); +test({trust_level_is, V1}, #{trust_level := V2}, _) -> + V1 =:= V2; test(_, #{}, _) -> undefined. diff --git a/apps/party_management/src/pm_varset.erl b/apps/party_management/src/pm_varset.erl index 9e2828a..5364435 100644 --- a/apps/party_management/src/pm_varset.erl +++ b/apps/party_management/src/pm_varset.erl @@ -18,7 +18,8 @@ shop_id => dmsl_domain_thrift:'ShopID'(), payment_tool => dmsl_domain_thrift:'PaymentTool'(), party_ref => dmsl_domain_thrift:'PartyConfigRef'(), - bin_data => dmsl_domain_thrift:'BinData'() + bin_data => dmsl_domain_thrift:'BinData'(), + trust_level => dmsl_domain_thrift:'ClientTrustLevel'() }. -type encoded_varset() :: dmsl_payproc_thrift:'Varset'(). @@ -34,7 +35,8 @@ encode_varset(Varset) -> shop_id = genlib_map:get(shop_id, Varset), payment_tool = genlib_map:get(payment_tool, Varset), party_ref = genlib_map:get(party_ref, Varset), - bin_data = genlib_map:get(bin_data, Varset) + bin_data = genlib_map:get(bin_data, Varset), + trust_level = genlib_map:get(trust_level, Varset) }. -spec decode_varset(encoded_varset()) -> varset(). @@ -54,7 +56,8 @@ decode_varset(#payproc_Varset{} = Varset, VS) -> Varset#payproc_Varset.payment_tool ), party_ref => Varset#payproc_Varset.party_ref, - bin_data => Varset#payproc_Varset.bin_data + bin_data => Varset#payproc_Varset.bin_data, + trust_level => Varset#payproc_Varset.trust_level }). prepare_payment_tool_var(_PaymentMethodRef, PaymentTool) when PaymentTool /= undefined -> @@ -95,7 +98,8 @@ encode_decode_test() -> bin_data => #domain_BinData{ payment_system = <<"payment_system">>, bank_name = <<"bank_name">> - } + }, + trust_level => well_known }, ?assertEqual(Varset, decode_varset(encode_varset(Varset))). diff --git a/apps/party_management/test/pm_party_tests_SUITE.erl b/apps/party_management/test/pm_party_tests_SUITE.erl index 071f7f2..3686577 100644 --- a/apps/party_management/test/pm_party_tests_SUITE.erl +++ b/apps/party_management/test/pm_party_tests_SUITE.erl @@ -47,6 +47,7 @@ -export([compute_payment_routing_ruleset_ok/1]). -export([compute_payment_routing_ruleset_irreducible/1]). -export([compute_payment_routing_ruleset_not_found/1]). +-export([compute_payment_routing_ruleset_with_trust_level_ok/1]). -export([compute_pred_w_partial_all_of/1]). -export([compute_pred_w_irreducible_criterion/1]). @@ -106,6 +107,7 @@ groups() -> compute_provider_terminal_not_found, compute_globals_ok, compute_payment_routing_ruleset_ok, + compute_payment_routing_ruleset_with_trust_level_ok, compute_payment_routing_ruleset_irreducible, compute_payment_routing_ruleset_not_found ]}, @@ -626,6 +628,24 @@ compute_payment_routing_ruleset_ok(C) -> ]} } = pm_client_party:compute_routing_ruleset(?ruleset(1), DomainRevision, Varset, Client). +-spec compute_payment_routing_ruleset_with_trust_level_ok(_) -> _. +compute_payment_routing_ruleset_with_trust_level_ok(C) -> + Client = cfg(client, C), + DomainRevision = pm_domain:head(), + Varset = #payproc_Varset{ + trust_level = well_known + }, + #domain_RoutingRuleset{ + name = <<"Rule#10">>, + decisions = + {candidates, [ + #domain_RoutingCandidate{ + terminal = ?trm(1), + allowed = {constant, true} + } + ]} + } = pm_client_party:compute_routing_ruleset(?ruleset(10), DomainRevision, Varset, Client). + compute_payment_routing_ruleset_irreducible(C) -> Client = cfg(client, C), DomainRevision = pm_domain:head(), @@ -938,6 +958,13 @@ construct_domain_fixture(PartyRef, PrevRev) -> terminal = ?trm(3) } ]}, + Decision10 = + {candidates, [ + #domain_RoutingCandidate{ + allowed = {condition, {trust_level_is, well_known}}, + terminal = ?trm(1) + } + ]}, [ pm_ct_fixture:construct_currency(?cur(<<"RUB">>)), pm_ct_fixture:construct_currency(?cur(<<"USD">>)), @@ -1001,6 +1028,7 @@ construct_domain_fixture(PartyRef, PrevRev) -> pm_ct_fixture:construct_payment_routing_ruleset(?ruleset(2), <<"Rule#2">>, Decision2), pm_ct_fixture:construct_payment_routing_ruleset(?ruleset(3), <<"Rule#3">>, Decision3), pm_ct_fixture:construct_payment_routing_ruleset(?ruleset(4), <<"Rule#4">>, Decision4), + pm_ct_fixture:construct_payment_routing_ruleset(?ruleset(10), <<"Rule#10">>, Decision10), {payment_institution, #domain_PaymentInstitutionObject{ ref = ?pinst(1), diff --git a/compose.yaml b/compose.yaml index e20a0f4..69e5db6 100644 --- a/compose.yaml +++ b/compose.yaml @@ -21,7 +21,7 @@ services: command: /sbin/init dmt: - image: ghcr.io/valitydev/dominant-v2:sha-3ad3a22 + image: ghcr.io/valitydev/dominant-v2:sha-c9430b5 command: /opt/dmt/bin/dmt foreground healthcheck: test: "/opt/dmt/bin/dmt ping" diff --git a/rebar.config b/rebar.config index 23b6dce..88f01e8 100644 --- a/rebar.config +++ b/rebar.config @@ -26,13 +26,14 @@ % Common project dependencies. {deps, [ + {cowboy, "2.12.0"}, {cache, "2.3.3"}, {gproc, "0.9.0"}, {genlib, {git, "https://github.com/valitydev/genlib.git", {tag, "v1.1.0"}}}, {prometheus, "4.11.0"}, {prometheus_cowboy, "0.1.9"}, {woody, {git, "https://github.com/valitydev/woody_erlang.git", {tag, "v1.1.0"}}}, - {damsel, {git, "https://github.com/valitydev/damsel.git", {tag, "v2.2.26"}}}, + {damsel, {git, "https://github.com/valitydev/damsel.git", {tag, "v2.2.33"}}}, {payproc_errors, {git, "https://github.com/valitydev/payproc-errors-erlang.git", {branch, "master"}}}, {dmt_client, {git, "https://github.com/valitydev/dmt_client.git", {tag, "v2.0.3"}}}, {scoper, {git, "https://github.com/valitydev/scoper.git", {tag, "v1.1.0"}}}, diff --git a/rebar.lock b/rebar.lock index 79e282b..300bb64 100644 --- a/rebar.lock +++ b/rebar.lock @@ -8,12 +8,12 @@ {ref,"5a87a37694e42b6592d3b4164ae54e0e87e24e18"}}, 1}, {<<"chatterbox">>,{pkg,<<"ts_chatterbox">>,<<"0.15.1">>},2}, - {<<"cowboy">>,{pkg,<<"cowboy">>,<<"2.9.0">>},1}, - {<<"cowlib">>,{pkg,<<"cowlib">>,<<"2.11.0">>},2}, + {<<"cowboy">>,{pkg,<<"cowboy">>,<<"2.12.0">>},0}, + {<<"cowlib">>,{pkg,<<"cowlib">>,<<"2.13.0">>},1}, {<<"ctx">>,{pkg,<<"ctx">>,<<"0.6.0">>},2}, {<<"damsel">>, {git,"https://github.com/valitydev/damsel.git", - {ref,"dfd664826a7d9a8728af6e97f4b63c1c277d7884"}}, + {ref,"e7a302a684deba1bb18a00d1056879329219d280"}}, 0}, {<<"dmt_client">>, {git,"https://github.com/valitydev/dmt_client.git", @@ -49,7 +49,7 @@ {<<"prometheus_cowboy">>,{pkg,<<"prometheus_cowboy">>,<<"0.1.9">>},0}, {<<"prometheus_httpd">>,{pkg,<<"prometheus_httpd">>,<<"2.1.15">>},1}, {<<"quantile_estimator">>,{pkg,<<"quantile_estimator">>,<<"0.2.1">>},1}, - {<<"ranch">>,{pkg,<<"ranch">>,<<"1.8.0">>},2}, + {<<"ranch">>,{pkg,<<"ranch">>,<<"1.8.0">>},1}, {<<"scoper">>, {git,"https://github.com/valitydev/scoper.git", {ref,"0e7aa01e9632daa39727edd62d4656ee715b4569"}}, @@ -78,8 +78,8 @@ {<<"cache">>, <<"B23A5FE7095445A88412A6E614C933377E0137B44FFED77C9B3FEF1A731A20B2">>}, {<<"certifi">>, <<"D4FB0A6BB20B7C9C3643E22507E42F356AC090A1DCEA9AB99E27E0376D695EBA">>}, {<<"chatterbox">>, <<"5CAC4D15DD7AD61FC3C4415CE4826FC563D4643DEE897A558EC4EA0B1C835C9C">>}, - {<<"cowboy">>, <<"865DD8B6607E14CF03282E10E934023A1BD8BE6F6BACF921A7E2A96D800CD452">>}, - {<<"cowlib">>, <<"0B9FF9C346629256C42EBE1EEB769A83C6CB771A6EE5960BD110AB0B9B872063">>}, + {<<"cowboy">>, <<"F276D521A1FF88B2B9B4C54D0E753DA6C66DD7BE6C9FCA3D9418B561828A3731">>}, + {<<"cowlib">>, <<"DB8F7505D8332D98EF50A3EF34B34C1AFDDEC7506E4EE4DD4A3A266285D282CA">>}, {<<"ctx">>, <<"8FF88B70E6400C4DF90142E7F130625B82086077A45364A78D208ED3ED53C7FE">>}, {<<"gproc">>, <<"853CCB7805E9ADA25D227A157BA966F7B34508F386A3E7E21992B1B484230699">>}, {<<"grpcbox">>, <<"6E040AB3EF16FE699FFB513B0EF8E2E896DA7B18931A1EF817143037C454BCCE">>}, @@ -107,8 +107,8 @@ {<<"cache">>, <<"44516CE6FA03594D3A2AF025DD3A87BFE711000EB730219E1DDEFC816E0AA2F4">>}, {<<"certifi">>, <<"6AC7EFC1C6F8600B08D625292D4BBF584E14847CE1B6B5C44D983D273E1097EA">>}, {<<"chatterbox">>, <<"4F75B91451338BC0DA5F52F3480FA6EF6E3A2AEECFC33686D6B3D0A0948F31AA">>}, - {<<"cowboy">>, <<"2C729F934B4E1AA149AFF882F57C6372C15399A20D54F65C8D67BEF583021BDE">>}, - {<<"cowlib">>, <<"2B3E9DA0B21C4565751A6D4901C20D1B4CC25CBB7FD50D91D2AB6DD287BC86A9">>}, + {<<"cowboy">>, <<"8A7ABE6D183372CEB21CAA2709BEC928AB2B72E18A3911AA1771639BEF82651E">>}, + {<<"cowlib">>, <<"E1E1284DC3FC030A64B1AD0D8382AE7E99DA46C3246B815318A4B848873800A4">>}, {<<"ctx">>, <<"A14ED2D1B67723DBEBBE423B28D7615EB0BDCBA6FF28F2D1F1B0A7E1D4AA5FC2">>}, {<<"gproc">>, <<"587E8AF698CCD3504CF4BA8D90F893EDE2B0F58CABB8A916E2BF9321DE3CF10B">>}, {<<"grpcbox">>, <<"4A3B5D7111DAABC569DC9CBD9B202A3237D81C80BF97212FBC676832CB0CEB17">>},