From 66f4df6cb8237eeaab31f03a87c01e13f8cd7a31 Mon Sep 17 00:00:00 2001 From: Aleksey Kashapov Date: Wed, 22 Jan 2025 14:54:31 +0300 Subject: [PATCH 1/5] EMP-228: Adds `date_of_birth` and `document_id` to `ContactInfo` --- apps/capi/src/capi_handler_decoder_party.erl | 8 ++++++-- apps/capi/src/capi_handler_encoder.erl | 4 +++- apps/capi/src/capi_handler_search.erl | 16 ++++++++++++---- apps/capi/test/capi_dummy_data.hrl | 4 +++- rebar.config | 2 +- rebar.lock | 2 +- 6 files changed, 26 insertions(+), 10 deletions(-) diff --git a/apps/capi/src/capi_handler_decoder_party.erl b/apps/capi/src/capi_handler_decoder_party.erl index 4992038..62e5c88 100644 --- a/apps/capi/src/capi_handler_decoder_party.erl +++ b/apps/capi/src/capi_handler_decoder_party.erl @@ -40,7 +40,9 @@ decode_contact_info(#domain_ContactInfo{ state = State, city = City, address = Address, - postal_code = PostalCode + postal_code = PostalCode, + date_of_birth = DateOfBirth, + document_id = DocumentId }) -> genlib_map:compact(#{ <<"phoneNumber">> => PhoneNumber, @@ -51,7 +53,9 @@ decode_contact_info(#domain_ContactInfo{ <<"state">> => State, <<"city">> => City, <<"address">> => Address, - <<"postalCode">> => PostalCode + <<"postalCode">> => PostalCode, + <<"dateOfBirth">> => DateOfBirth, + <<"documentId">> => DocumentId }). -spec decode_party(capi_handler_encoder:encode_data()) -> capi_handler_decoder_utils:decode_data(). diff --git a/apps/capi/src/capi_handler_encoder.erl b/apps/capi/src/capi_handler_encoder.erl index b28ae99..7997b7e 100644 --- a/apps/capi/src/capi_handler_encoder.erl +++ b/apps/capi/src/capi_handler_encoder.erl @@ -33,7 +33,9 @@ encode_contact_info(ContactInfo) -> state = genlib_map:get(<<"state">>, ContactInfo), city = genlib_map:get(<<"city">>, ContactInfo), address = genlib_map:get(<<"address">>, ContactInfo), - postal_code = genlib_map:get(<<"postalCode">>, ContactInfo) + postal_code = genlib_map:get(<<"postalCode">>, ContactInfo), + date_of_birth = genlib_map:get(<<"dateOfBirth">>, ContactInfo), + document_id = genlib_map:get(<<"documentId">>, ContactInfo) }. -spec encode_client_info(request_data()) -> encode_data(). diff --git a/apps/capi/src/capi_handler_search.erl b/apps/capi/src/capi_handler_search.erl index 1ead0fe..19e3d4a 100644 --- a/apps/capi/src/capi_handler_search.erl +++ b/apps/capi/src/capi_handler_search.erl @@ -295,7 +295,9 @@ decode_stat_payer( state = State, city = City, address = Address, - postal_code = PostalCode + postal_code = PostalCode, + date_of_birth = DateOfBirth, + document_id = DocumentId } }} ) -> @@ -311,7 +313,9 @@ decode_stat_payer( <<"state">> => State, <<"city">> => City, <<"address">> => Address, - <<"postalCode">> => PostalCode + <<"postalCode">> => PostalCode, + <<"dateOfBirth">> => DateOfBirth, + <<"documentId">> => DocumentId }), <<"recurrentParentPayment">> => capi_handler_decoder_invoicing:decode_recurrent_parent(RecurrentParent) }; @@ -334,7 +338,9 @@ decode_stat_payer( state = State, city = City, address = Address, - postal_code = PostalCode + postal_code = PostalCode, + date_of_birth = DateOfBirth, + document_id = DocumentId } }} ) -> @@ -355,7 +361,9 @@ decode_stat_payer( <<"state">> => State, <<"city">> => City, <<"address">> => Address, - <<"postalCode">> => PostalCode + <<"postalCode">> => PostalCode, + <<"dateOfBirth">> => DateOfBirth, + <<"documentId">> => DocumentId }) }). diff --git a/apps/capi/test/capi_dummy_data.hrl b/apps/capi/test/capi_dummy_data.hrl index 1ee8207..824966f 100644 --- a/apps/capi/test/capi_dummy_data.hrl +++ b/apps/capi/test/capi_dummy_data.hrl @@ -254,7 +254,9 @@ state = <<"State">>, city = <<"City">>, address = <<"Address">>, - postal_code = <<"PostalCode">> + postal_code = <<"PostalCode">>, + date_of_birth = <<"1970-01-01">>, + document_id = <<"DocumentId">> }). -define(EXP_DATE(Month, Year), #domain_BankCardExpDate{ diff --git a/rebar.config b/rebar.config index 55eda3c..e4f88df 100644 --- a/rebar.config +++ b/rebar.config @@ -36,7 +36,7 @@ {cowboy_draining_server, {git, "https://github.com/valitydev/cowboy_draining_server.git", {branch, "master"}}}, {woody, {git, "https://github.com/valitydev/woody_erlang.git", {branch, master}}}, {woody_user_identity, {git, "https://github.com/valitydev/woody_erlang_user_identity.git", {branch, "master"}}}, - {damsel, {git, "https://github.com/valitydev/damsel.git", {branch, "master"}}}, + {damsel, {git, "https://github.com/valitydev/damsel.git", {branch, "EMP-228/ft/additional-contact-info-fields"}}}, {bender_proto, {git, "https://github.com/valitydev/bender-proto.git", {branch, "master"}}}, {bender_client, {git, "https://github.com/valitydev/bender-client-erlang.git", {branch, "master"}}}, {dmt_client, {git, "https://github.com/valitydev/dmt_client.git", {branch, "master"}}}, diff --git a/rebar.lock b/rebar.lock index 8998303..61b7b14 100644 --- a/rebar.lock +++ b/rebar.lock @@ -41,7 +41,7 @@ {<<"ctx">>,{pkg,<<"ctx">>,<<"0.6.0">>},2}, {<<"damsel">>, {git,"https://github.com/valitydev/damsel.git", - {ref,"81d1edce2043500e4581867da3f5f4c31e682f44"}}, + {ref,"b1a63a7dd84d525bd2d8fe811f3ed830027cbcde"}}, 0}, {<<"dmt_client">>, {git,"https://github.com/valitydev/dmt_client.git", From 2bb8d0d7d73496d337a05ef2ed03acfa627063b5 Mon Sep 17 00:00:00 2001 From: Aleksey Kashapov Date: Thu, 23 Jan 2025 10:13:48 +0300 Subject: [PATCH 2/5] Bumps CI --- .github/workflows/erlang-checks.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/erlang-checks.yml b/.github/workflows/erlang-checks.yml index 28e0363..0828e69 100644 --- a/.github/workflows/erlang-checks.yml +++ b/.github/workflows/erlang-checks.yml @@ -30,7 +30,7 @@ jobs: run: name: Run checks needs: setup - uses: valitydev/erlang-workflows/.github/workflows/erlang-parallel-build.yml@v1.0.14 + uses: valitydev/erlang-workflows/.github/workflows/erlang-parallel-build.yml@v1.0.16 with: otp-version: ${{ needs.setup.outputs.otp-version }} rebar-version: ${{ needs.setup.outputs.rebar-version }} From 7c3ce6143a9796b27d84dce1ad792feb5180c0e5 Mon Sep 17 00:00:00 2001 From: Aleksey Kashapov Date: Thu, 23 Jan 2025 17:15:06 +0300 Subject: [PATCH 3/5] Updates idempotency testcases --- apps/capi/src/capi_feature_schemas.erl | 14 +++++++++++--- apps/capi/test/capi_idempotency_tests_SUITE.erl | 15 ++++++++++++--- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/apps/capi/src/capi_feature_schemas.erl b/apps/capi/src/capi_feature_schemas.erl index 5701b7a..1a0e3b8 100644 --- a/apps/capi/src/capi_feature_schemas.erl +++ b/apps/capi/src/capi_feature_schemas.erl @@ -75,6 +75,8 @@ -define(city, 69). -define(address, 70). -define(postal_code, 71). +-define(date_of_birth, 72). +-define(document_id, 73). -export([payment/0]). -export([invoice/0]). @@ -340,7 +342,9 @@ contact_info_schema() -> ?state => <<"state">>, ?city => <<"city">>, ?address => <<"address">>, - ?postal_code => <<"postalCode">> + ?postal_code => <<"postalCode">>, + ?date_of_birth => <<"dateOfBirth">>, + ?document_id => <<"documentId">> }. -ifdef(TEST). @@ -623,7 +627,9 @@ read_customer_features_test() -> ?state => undefined, ?city => undefined, ?address => undefined, - ?postal_code => undefined + ?postal_code => undefined, + ?date_of_birth => undefined, + ?document_id => undefined } }, ?assertEqual( @@ -650,7 +656,9 @@ compare_customer_features_test() -> <<"state">> => <<"state">>, <<"city">> => <<"city">>, <<"address">> => <<"address">>, - <<"postalCode">> => <<"postalCode">> + <<"postalCode">> => <<"postalCode">>, + <<"dateOfBirth">> => <<"dateOfBirth">>, + <<"documentId">> => <<"documentId">> } }, common_compare_tests( diff --git a/apps/capi/test/capi_idempotency_tests_SUITE.erl b/apps/capi/test/capi_idempotency_tests_SUITE.erl index 05b7b88..74678be 100644 --- a/apps/capi/test/capi_idempotency_tests_SUITE.erl +++ b/apps/capi/test/capi_idempotency_tests_SUITE.erl @@ -199,7 +199,11 @@ end_per_testcase(_Name, C) -> create_payment_ok_test(Config) -> BenderKey = <<"bender_key">>, ExternalID = <<"merch_id">>, - ContactInfo = #{}, + ContactInfo = #{ + <<"phoneNumber">> => ?STRING, + <<"email">> => ?EMAIL, + <<"dateOfBirth">> => <<"1970-01-01">> + }, Jwe1 = get_encrypted_token(<<"visa">>, ?EXP_DATE(2, 2020)), Jwe2 = get_encrypted_token(<<"visa">>, ?EXP_DATE(2, 2020)), Req1 = payment_params(ExternalID, Jwe1, ContactInfo, undefined), @@ -212,7 +216,9 @@ create_payment_ok_test(Config) -> [ [<<"externalID">>], [<<"metadata">>, <<"bla">>, 0], - [<<"payer">>, <<"contactInfo">>], + [<<"payer">>, <<"contactInfo">>, <<"dateOfBirth">>], + [<<"payer">>, <<"contactInfo">>, <<"email">>], + [<<"payer">>, <<"contactInfo">>, <<"phoneNumber">>], [<<"payer">>, <<"paymentSession">>], [<<"payer">>, <<"paymentTool">>, <<"payment_system">>], [<<"payer">>, <<"paymentToolToken">>], @@ -267,7 +273,10 @@ different_payment_tools_test(Config) -> second_request_without_idempotent_feature_test(Config) -> BenderKey = <<"bender_key">>, ExternalID = <<"merch_id">>, - ContactInfo = #{}, + ContactInfo = #{ + <<"email">> => ?EMAIL, + <<"documentId">> => ?STRING + }, Jwe1 = encrypt_payment_tool({bank_card, ?BANK_CARD(<<"visa">>, ?EXP_DATE(2, 2020), <<"Mr. Surname">>)}), Jwe2 = encrypt_payment_tool({bank_card, ?BANK_CARD(<<"visa">>, undefined, <<"Mr. Surname">>)}), Req1 = payment_params(ExternalID, Jwe1, ContactInfo, undefined), From f55b427dd99f4100bd4b491798af929889d8f775 Mon Sep 17 00:00:00 2001 From: Aleksey Kashapov Date: Thu, 23 Jan 2025 17:24:21 +0300 Subject: [PATCH 4/5] Bumps CI --- .github/workflows/erlang-checks.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/erlang-checks.yml b/.github/workflows/erlang-checks.yml index 0828e69..3c868a6 100644 --- a/.github/workflows/erlang-checks.yml +++ b/.github/workflows/erlang-checks.yml @@ -30,7 +30,7 @@ jobs: run: name: Run checks needs: setup - uses: valitydev/erlang-workflows/.github/workflows/erlang-parallel-build.yml@v1.0.16 + uses: valitydev/erlang-workflows/.github/workflows/erlang-parallel-build.yml@v1.0.17 with: otp-version: ${{ needs.setup.outputs.otp-version }} rebar-version: ${{ needs.setup.outputs.rebar-version }} From 8bca646bf43efaf6c01cbb525d1d43e7623ae1d4 Mon Sep 17 00:00:00 2001 From: Aleksey Kashapov Date: Thu, 23 Jan 2025 19:05:02 +0300 Subject: [PATCH 5/5] Bumps deps --- rebar.config | 2 +- rebar.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/rebar.config b/rebar.config index e4f88df..55eda3c 100644 --- a/rebar.config +++ b/rebar.config @@ -36,7 +36,7 @@ {cowboy_draining_server, {git, "https://github.com/valitydev/cowboy_draining_server.git", {branch, "master"}}}, {woody, {git, "https://github.com/valitydev/woody_erlang.git", {branch, master}}}, {woody_user_identity, {git, "https://github.com/valitydev/woody_erlang_user_identity.git", {branch, "master"}}}, - {damsel, {git, "https://github.com/valitydev/damsel.git", {branch, "EMP-228/ft/additional-contact-info-fields"}}}, + {damsel, {git, "https://github.com/valitydev/damsel.git", {branch, "master"}}}, {bender_proto, {git, "https://github.com/valitydev/bender-proto.git", {branch, "master"}}}, {bender_client, {git, "https://github.com/valitydev/bender-client-erlang.git", {branch, "master"}}}, {dmt_client, {git, "https://github.com/valitydev/dmt_client.git", {branch, "master"}}}, diff --git a/rebar.lock b/rebar.lock index 61b7b14..0fa2a9f 100644 --- a/rebar.lock +++ b/rebar.lock @@ -41,7 +41,7 @@ {<<"ctx">>,{pkg,<<"ctx">>,<<"0.6.0">>},2}, {<<"damsel">>, {git,"https://github.com/valitydev/damsel.git", - {ref,"b1a63a7dd84d525bd2d8fe811f3ed830027cbcde"}}, + {ref,"24932cdc557a75bfb3a4aeb1738638366003aba4"}}, 0}, {<<"dmt_client">>, {git,"https://github.com/valitydev/dmt_client.git", @@ -137,11 +137,11 @@ {<<"ssl_verify_fun">>,{pkg,<<"ssl_verify_fun">>,<<"1.1.7">>},2}, {<<"swag_client">>, {git,"https://github.com/valitydev/swag-payments", - {ref,"078842bf8c25f7b962103943034544cc93d0459c"}}, + {ref,"09f10e9ad8d73e8ec8aeb7bb29d4d4dbdff4d08e"}}, 0}, {<<"swag_server">>, {git,"https://github.com/valitydev/swag-payments", - {ref,"40e01d346c4902ec2ef5a66f11b88429cbcdcccd"}}, + {ref,"ccda42f457771049198632685779bcbecf3b4e7e"}}, 0}, {<<"thrift">>, {git,"https://github.com/valitydev/thrift_erlang.git",