mirror of
https://github.com/valitydev/capi-v2.git
synced 2024-11-06 10:05:21 +00:00
CAPI-32 Move to the newest images and fix missed fields (#16)
* CAPI-32 Move to the newest images and fix missed fields. Change linter code complexity change to soothe the unnecessary warnings. Add new swag version and fix ip_address source
This commit is contained in:
parent
730ad23d13
commit
26f1e2beca
6
Makefile
6
Makefile
@ -27,7 +27,7 @@ CALL_ANYWHERE := all submodules rebar-update compile xref lint dialyze test star
|
|||||||
|
|
||||||
CALL_W_CONTAINER := $(CALL_ANYWHERE)
|
CALL_W_CONTAINER := $(CALL_ANYWHERE)
|
||||||
|
|
||||||
.PHONY: $(CALL_W_CONTAINER) all
|
.PHONY: $(CALL_W_CONTAINER) all cover
|
||||||
|
|
||||||
all: compile
|
all: compile
|
||||||
|
|
||||||
@ -65,6 +65,7 @@ release: distclean $(SWAGGER_APP_TARGET)
|
|||||||
$(REBAR) as prod release
|
$(REBAR) as prod release
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
|
$(REBAR) cover -r
|
||||||
$(REBAR) clean
|
$(REBAR) clean
|
||||||
|
|
||||||
distclean:
|
distclean:
|
||||||
@ -86,3 +87,6 @@ $(SWAGGER_APP_TARGET): $(SWAGGER_SCHEME)
|
|||||||
|
|
||||||
swagger_regenerate:
|
swagger_regenerate:
|
||||||
$(call swagger_regenerate)
|
$(call swagger_regenerate)
|
||||||
|
|
||||||
|
cover:
|
||||||
|
$(REBAR) cover
|
||||||
|
@ -84,10 +84,7 @@ process_request(OperationID = 'CreatePayment', Req, Context) ->
|
|||||||
Token = genlib_map:get(<<"paymentToolToken">>, PaymentParams),
|
Token = genlib_map:get(<<"paymentToolToken">>, PaymentParams),
|
||||||
ContactInfo = genlib_map:get(<<"contactInfo">>, PaymentParams),
|
ContactInfo = genlib_map:get(<<"contactInfo">>, PaymentParams),
|
||||||
PaymentTool = decode_bank_card(Token),
|
PaymentTool = decode_bank_card(Token),
|
||||||
#{
|
|
||||||
ip_address := IP
|
|
||||||
} = get_peer_info(Context),
|
|
||||||
PreparedIP = genlib:to_binary(inet:ntoa(IP)),
|
|
||||||
EncodedSession = genlib_map:get(<<"paymentSession">>, PaymentParams),
|
EncodedSession = genlib_map:get(<<"paymentSession">>, PaymentParams),
|
||||||
{ClientInfo, PaymentSession} = unwrap_session(EncodedSession),
|
{ClientInfo, PaymentSession} = unwrap_session(EncodedSession),
|
||||||
Params = #payproc_InvoicePaymentParams{
|
Params = #payproc_InvoicePaymentParams{
|
||||||
@ -96,7 +93,7 @@ process_request(OperationID = 'CreatePayment', Req, Context) ->
|
|||||||
session = PaymentSession,
|
session = PaymentSession,
|
||||||
client_info = #domain_ClientInfo{
|
client_info = #domain_ClientInfo{
|
||||||
fingerprint = maps:get(<<"fingerprint">>, ClientInfo),
|
fingerprint = maps:get(<<"fingerprint">>, ClientInfo),
|
||||||
ip_address = PreparedIP
|
ip_address = maps:get(<<"ip_address">>, ClientInfo)
|
||||||
},
|
},
|
||||||
contact_info = #domain_ContactInfo{
|
contact_info = #domain_ContactInfo{
|
||||||
phone_number = genlib_map:get(<<"phoneNumber">>, ContactInfo),
|
phone_number = genlib_map:get(<<"phoneNumber">>, ContactInfo),
|
||||||
@ -120,10 +117,10 @@ process_request(OperationID = 'CreatePayment', Req, Context) ->
|
|||||||
process_request_error(OperationID, Error)
|
process_request_error(OperationID, Error)
|
||||||
end;
|
end;
|
||||||
|
|
||||||
process_request(OperationID = 'CreatePaymentToolToken', Req, _Context) ->
|
process_request(OperationID = 'CreatePaymentToolToken', Req, Context) ->
|
||||||
Params = maps:get('CreatePaymentToolTokenArgs', Req),
|
Params = maps:get('CreatePaymentToolTokenArgs', Req),
|
||||||
RequestID = maps:get('X-Request-ID', Req),
|
RequestID = maps:get('X-Request-ID', Req),
|
||||||
ClientInfo = maps:get(<<"clientInfo">>, Params),
|
ClientInfo0 = maps:get(<<"clientInfo">>, Params),
|
||||||
PaymentTool = maps:get(<<"paymentTool">>, Params),
|
PaymentTool = maps:get(<<"paymentTool">>, Params),
|
||||||
case PaymentTool of
|
case PaymentTool of
|
||||||
#{<<"paymentToolType">> := <<"CardData">>} ->
|
#{<<"paymentToolType">> := <<"CardData">>} ->
|
||||||
@ -150,6 +147,12 @@ process_request(OperationID = 'CreatePaymentToolToken', Req, _Context) ->
|
|||||||
bank_card = BankCard
|
bank_card = BankCard
|
||||||
}} ->
|
}} ->
|
||||||
Token = encode_bank_card(BankCard),
|
Token = encode_bank_card(BankCard),
|
||||||
|
#{
|
||||||
|
ip_address := IP
|
||||||
|
} = get_peer_info(Context),
|
||||||
|
PreparedIP = genlib:to_binary(inet:ntoa(IP)),
|
||||||
|
ClientInfo = ClientInfo0#{<<"ip_address">> => PreparedIP},
|
||||||
|
|
||||||
Session = wrap_session(ClientInfo, PaymentSession),
|
Session = wrap_session(ClientInfo, PaymentSession),
|
||||||
Resp = #{
|
Resp = #{
|
||||||
<<"token">> => Token,
|
<<"token">> => Token,
|
||||||
@ -192,7 +195,7 @@ process_request(OperationID = 'GetInvoiceByID', Req, Context) ->
|
|||||||
}}} ->
|
}}} ->
|
||||||
%%% InvoiceContext = jsx:decode(RawInvoiceContext, [return_maps]), @TODO deal with non json contexts
|
%%% InvoiceContext = jsx:decode(RawInvoiceContext, [return_maps]), @TODO deal with non json contexts
|
||||||
InvoiceContext = #{
|
InvoiceContext = #{
|
||||||
<<"context">> => RawInvoiceContext
|
<<"context">> => decode_context(RawInvoiceContext)
|
||||||
},
|
},
|
||||||
Resp = #{
|
Resp = #{
|
||||||
<<"id">> => InvoiceID,
|
<<"id">> => InvoiceID,
|
||||||
@ -226,7 +229,7 @@ process_request(OperationID = 'FulfillInvoice', Req, Context) ->
|
|||||||
create_context(RequestID)
|
create_context(RequestID)
|
||||||
),
|
),
|
||||||
case Result of
|
case Result of
|
||||||
{ok, _} ->
|
ok ->
|
||||||
{200, [], #{}};
|
{200, [], #{}};
|
||||||
Error ->
|
Error ->
|
||||||
process_request_error(OperationID, Error)
|
process_request_error(OperationID, Error)
|
||||||
@ -247,7 +250,7 @@ process_request(OperationID = 'RescindInvoice', Req, Context) ->
|
|||||||
create_context(RequestID)
|
create_context(RequestID)
|
||||||
),
|
),
|
||||||
case Result of
|
case Result of
|
||||||
{ok, _} ->
|
ok ->
|
||||||
{200, [], #{}};
|
{200, [], #{}};
|
||||||
Error ->
|
Error ->
|
||||||
process_request_error(OperationID, Error)
|
process_request_error(OperationID, Error)
|
||||||
@ -281,11 +284,10 @@ process_request(OperationID = 'GetPaymentByID', Req, Context) ->
|
|||||||
InvoiceID = maps:get(invoiceID, Req),
|
InvoiceID = maps:get(invoiceID, Req),
|
||||||
RequestID = maps:get('X-Request-ID', Req),
|
RequestID = maps:get('X-Request-ID', Req),
|
||||||
UserInfo = get_user_info(Context),
|
UserInfo = get_user_info(Context),
|
||||||
PartyID = get_party_id(Context),
|
|
||||||
{Result, _NewContext} = service_call(
|
{Result, _NewContext} = service_call(
|
||||||
invoicing,
|
invoicing,
|
||||||
'GetPayment',
|
'GetPayment',
|
||||||
[UserInfo, PartyID, PaymentID],
|
[UserInfo, InvoiceID, PaymentID],
|
||||||
create_context(RequestID)
|
create_context(RequestID)
|
||||||
),
|
),
|
||||||
case Result of
|
case Result of
|
||||||
@ -415,8 +417,7 @@ process_request(OperationID = 'CreateShop', Req, Context) ->
|
|||||||
ShopParams = #payproc_ShopParams{
|
ShopParams = #payproc_ShopParams{
|
||||||
category = encode_category_ref(genlib_map:get(<<"categoryRef">>, Params)),
|
category = encode_category_ref(genlib_map:get(<<"categoryRef">>, Params)),
|
||||||
details = encode_shop_details(genlib_map:get(<<"shopDetails">>, Params)),
|
details = encode_shop_details(genlib_map:get(<<"shopDetails">>, Params)),
|
||||||
% contractor = encode_contractor(genlib_map:get(<<"contractor">>, Params))
|
contractor = encode_contractor(genlib_map:get(<<"contractor">>, Params))
|
||||||
contractor = encode_contractor(undefined)
|
|
||||||
},
|
},
|
||||||
|
|
||||||
{Result, _} = prepare_party(
|
{Result, _} = prepare_party(
|
||||||
@ -823,7 +824,7 @@ encode_shop_details(Details = #{
|
|||||||
}) ->
|
}) ->
|
||||||
#domain_ShopDetails{
|
#domain_ShopDetails{
|
||||||
name = Name,
|
name = Name,
|
||||||
description = genlib_map:get(<<"details">>, Details),
|
description = genlib_map:get(<<"description">>, Details),
|
||||||
location = genlib_map:get(<<"location">>, Details)
|
location = genlib_map:get(<<"location">>, Details)
|
||||||
}.
|
}.
|
||||||
|
|
||||||
@ -844,7 +845,7 @@ encode_contractor(#{
|
|||||||
}) ->
|
}) ->
|
||||||
#domain_Contractor{
|
#domain_Contractor{
|
||||||
registered_name = RegisteredName,
|
registered_name = RegisteredName,
|
||||||
legal_entity = undefined
|
legal_entity = #domain_LegalEntity{}
|
||||||
}.
|
}.
|
||||||
|
|
||||||
decode_bank_card(Encoded) ->
|
decode_bank_card(Encoded) ->
|
||||||
|
@ -9,13 +9,11 @@
|
|||||||
|
|
||||||
%%
|
%%
|
||||||
|
|
||||||
-define(COWBOY_PORT, 9988).
|
|
||||||
|
|
||||||
-spec get_service_spec() ->
|
-spec get_service_spec() ->
|
||||||
{Path :: string(), Service :: {module(), atom()}}.
|
{Path :: string(), Service :: {module(), atom()}}.
|
||||||
|
|
||||||
get_service_spec() ->
|
get_service_spec() ->
|
||||||
{"/test/proxy/provider/dummy", {capi_proxy_provider_thrift, 'ProviderProxy'}}.
|
{"/test/proxy/provider/dummy", {cp_proxy_provider_thrift, 'ProviderProxy'}}.
|
||||||
|
|
||||||
%%
|
%%
|
||||||
|
|
||||||
@ -26,8 +24,8 @@ get_service_spec() ->
|
|||||||
|
|
||||||
handle_function(
|
handle_function(
|
||||||
'ProcessPayment',
|
'ProcessPayment',
|
||||||
{#'Context'{
|
{#prxprv_Context{
|
||||||
session = #'Session'{target = Target, state = State},
|
session = #prxprv_Session{target = Target, state = State},
|
||||||
payment = PaymentInfo,
|
payment = PaymentInfo,
|
||||||
options = _
|
options = _
|
||||||
}},
|
}},
|
||||||
@ -38,8 +36,8 @@ handle_function(
|
|||||||
|
|
||||||
handle_function(
|
handle_function(
|
||||||
'HandlePaymentCallback',
|
'HandlePaymentCallback',
|
||||||
{_Payload, #'Context'{
|
{_Payload, #prxprv_Context{
|
||||||
session = #'Session'{target = _Target, state = _State},
|
session = #prxprv_Session{target = _Target, state = _State},
|
||||||
payment = PaymentInfo,
|
payment = PaymentInfo,
|
||||||
options = _
|
options = _
|
||||||
}},
|
}},
|
||||||
@ -48,18 +46,20 @@ handle_function(
|
|||||||
) ->
|
) ->
|
||||||
{{ok, respond(<<"sure">>, finish(PaymentInfo))}, Context}.
|
{{ok, respond(<<"sure">>, finish(PaymentInfo))}, Context}.
|
||||||
|
|
||||||
|
process_payment({captured, #domain_InvoicePaymentCaptured{}}, _, PaymentInfo, _, Context) ->
|
||||||
|
{{ok, finish(PaymentInfo)}, Context};
|
||||||
|
|
||||||
process_payment({processed, #domain_InvoicePaymentProcessed{}}, _, PaymentInfo, _, Context) ->
|
process_payment({processed, #domain_InvoicePaymentProcessed{}}, _, PaymentInfo, _, Context) ->
|
||||||
{{ok, finish(PaymentInfo)}, Context}.
|
{{ok, finish(PaymentInfo)}, Context}.
|
||||||
|
|
||||||
finish(#'PaymentInfo'{payment = Payment}) ->
|
finish(#prxprv_PaymentInfo{payment = Payment}) ->
|
||||||
#'ProxyResult'{
|
#prxprv_ProxyResult{
|
||||||
intent = {finish, #'FinishIntent'{status = {ok, #'Ok'{}}}},
|
intent = {finish, #'FinishIntent'{status = {ok, #'Ok'{}}}},
|
||||||
trx = #domain_TransactionInfo{id = Payment#domain_InvoicePayment.id}
|
trx = #domain_TransactionInfo{id = Payment#prxprv_InvoicePayment.id}
|
||||||
}.
|
}.
|
||||||
|
|
||||||
respond(Response, Result) ->
|
respond(Response, Result) ->
|
||||||
#'CallbackResult'{
|
#prxprv_CallbackResult{
|
||||||
response = Response,
|
response = Response,
|
||||||
result = Result
|
result = Result
|
||||||
}.
|
}.
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
-include_lib("common_test/include/ct.hrl").
|
-include_lib("common_test/include/ct.hrl").
|
||||||
-include_lib("cp_proto/include/cp_payment_processing_thrift.hrl").
|
-include_lib("cp_proto/include/cp_payment_processing_thrift.hrl").
|
||||||
-include_lib("cp_proto/include/cp_domain_config_thrift.hrl").
|
-include_lib("cp_proto/include/cp_domain_config_thrift.hrl").
|
||||||
|
-include_lib("cp_proto/include/cp_accounter_thrift.hrl").
|
||||||
|
|
||||||
|
|
||||||
-export([all/0]).
|
-export([all/0]).
|
||||||
@ -24,6 +25,8 @@
|
|||||||
create_payment_tool_token_ok_test/1,
|
create_payment_tool_token_ok_test/1,
|
||||||
get_invoice_by_id_ok_test/1,
|
get_invoice_by_id_ok_test/1,
|
||||||
get_invoice_events_ok_test/1,
|
get_invoice_events_ok_test/1,
|
||||||
|
rescind_invoice_ok_test/1,
|
||||||
|
fulfill_invoice_ok_test/1,
|
||||||
get_payment_by_id_ok_test/1,
|
get_payment_by_id_ok_test/1,
|
||||||
%%%%
|
%%%%
|
||||||
get_invoices_stats_ok_test/1,
|
get_invoices_stats_ok_test/1,
|
||||||
@ -59,6 +62,8 @@
|
|||||||
-define(CAPI_MERCHANT_STAT_URL, "http://magista:8022/stat").
|
-define(CAPI_MERCHANT_STAT_URL, "http://magista:8022/stat").
|
||||||
-define(CAPI_PARTY_MANAGEMENT_URL, "http://hellgate:8022/v1/processing/partymgmt").
|
-define(CAPI_PARTY_MANAGEMENT_URL, "http://hellgate:8022/v1/processing/partymgmt").
|
||||||
-define(CAPI_REPOSITORY_URL, "http://dominant:8022/v1/domain/repository").
|
-define(CAPI_REPOSITORY_URL, "http://dominant:8022/v1/domain/repository").
|
||||||
|
-define(CAPI_ACCOUNTER_URL, "http://shumway:8022/accounter").
|
||||||
|
-define(CAPI_HOST_NAME, "capi").
|
||||||
|
|
||||||
-define(MERCHANT_ID, <<"hg_tests_SUITE">>).
|
-define(MERCHANT_ID, <<"hg_tests_SUITE">>).
|
||||||
|
|
||||||
@ -81,6 +86,7 @@ init([]) ->
|
|||||||
all() ->
|
all() ->
|
||||||
[
|
[
|
||||||
{group, authorization},
|
{group, authorization},
|
||||||
|
{group, invoice_management},
|
||||||
{group, card_payment},
|
{group, card_payment},
|
||||||
{group, statistics},
|
{group, statistics},
|
||||||
{group, party_management},
|
{group, party_management},
|
||||||
@ -103,11 +109,18 @@ groups() ->
|
|||||||
authorization_error_no_header_test,
|
authorization_error_no_header_test,
|
||||||
authorization_error_expired_test
|
authorization_error_expired_test
|
||||||
]},
|
]},
|
||||||
{card_payment, [sequence], [
|
{invoice_management, [sequence], [
|
||||||
create_invoice_badard_test,
|
create_invoice_badard_test,
|
||||||
|
create_invoice_ok_test,
|
||||||
|
get_invoice_by_id_ok_test,
|
||||||
|
rescind_invoice_ok_test
|
||||||
|
]},
|
||||||
|
{card_payment, [sequence], [
|
||||||
create_invoice_ok_test,
|
create_invoice_ok_test,
|
||||||
create_payment_tool_token_ok_test,
|
create_payment_tool_token_ok_test,
|
||||||
create_payment_ok_test,
|
create_payment_ok_test,
|
||||||
|
get_payment_by_id_ok_test,
|
||||||
|
fulfill_invoice_ok_test,
|
||||||
get_invoice_events_ok_test
|
get_invoice_events_ok_test
|
||||||
]},
|
]},
|
||||||
{statistics, [parallel], [
|
{statistics, [parallel], [
|
||||||
@ -160,7 +173,8 @@ init_per_suite(Config) ->
|
|||||||
invoicing => ?CAPI_INVOICING_URL,
|
invoicing => ?CAPI_INVOICING_URL,
|
||||||
merchant_stat => ?CAPI_MERCHANT_STAT_URL,
|
merchant_stat => ?CAPI_MERCHANT_STAT_URL,
|
||||||
party_management => ?CAPI_PARTY_MANAGEMENT_URL,
|
party_management => ?CAPI_PARTY_MANAGEMENT_URL,
|
||||||
repository => ?CAPI_REPOSITORY_URL
|
repository => ?CAPI_REPOSITORY_URL,
|
||||||
|
accounter => ?CAPI_ACCOUNTER_URL
|
||||||
}}
|
}}
|
||||||
]) ++
|
]) ++
|
||||||
capi_ct_helper:start_app(capi, [
|
capi_ct_helper:start_app(capi, [
|
||||||
@ -170,6 +184,7 @@ init_per_suite(Config) ->
|
|||||||
{api_secret_path, filename:join(?config(data_dir, Config), "public_api_key.pem")}
|
{api_secret_path, filename:join(?config(data_dir, Config), "public_api_key.pem")}
|
||||||
]),
|
]),
|
||||||
{ok, SupPid} = supervisor:start_link(?MODULE, []),
|
{ok, SupPid} = supervisor:start_link(?MODULE, []),
|
||||||
|
_ = unlink(SupPid),
|
||||||
NewConfig = [{apps, lists:reverse(Apps)}, {test_sup, SupPid} | Config],
|
NewConfig = [{apps, lists:reverse(Apps)}, {test_sup, SupPid} | Config],
|
||||||
ProxyUrl = start_service_handler(capi_dummy_provider, NewConfig),
|
ProxyUrl = start_service_handler(capi_dummy_provider, NewConfig),
|
||||||
populate_snapshot(ProxyUrl),
|
populate_snapshot(ProxyUrl),
|
||||||
@ -179,7 +194,6 @@ init_per_suite(Config) ->
|
|||||||
-spec end_per_suite(config()) -> _.
|
-spec end_per_suite(config()) -> _.
|
||||||
|
|
||||||
end_per_suite(C) ->
|
end_per_suite(C) ->
|
||||||
_ = unlink(?config(test_sup, C)),
|
|
||||||
exit(?config(test_sup, C), shutdown),
|
exit(?config(test_sup, C), shutdown),
|
||||||
ok = cleanup(),
|
ok = cleanup(),
|
||||||
[application:stop(App) || App <- proplists:get_value(apps, C)].
|
[application:stop(App) || App <- proplists:get_value(apps, C)].
|
||||||
@ -222,6 +236,24 @@ create_invoice_ok_test(Config) ->
|
|||||||
#{<<"id">> := InvoiceID} = default_create_invoice(Config),
|
#{<<"id">> := InvoiceID} = default_create_invoice(Config),
|
||||||
{save_config, InvoiceID}.
|
{save_config, InvoiceID}.
|
||||||
|
|
||||||
|
-spec fulfill_invoice_ok_test(config()) -> _.
|
||||||
|
|
||||||
|
fulfill_invoice_ok_test(Config) ->
|
||||||
|
{get_payment_by_id_ok_test,
|
||||||
|
#{invoice_id := InvoiceID} = Info
|
||||||
|
} = ?config(saved_config, Config),
|
||||||
|
#{} = default_fulfill_invoice(InvoiceID, Config),
|
||||||
|
{save_config, Info}.
|
||||||
|
|
||||||
|
-spec rescind_invoice_ok_test(config()) -> _.
|
||||||
|
|
||||||
|
rescind_invoice_ok_test(Config) ->
|
||||||
|
{get_invoice_by_id_ok_test,
|
||||||
|
InvoiceID
|
||||||
|
} = ?config(saved_config, Config),
|
||||||
|
#{} = default_rescind_invoice(InvoiceID, Config).
|
||||||
|
|
||||||
|
|
||||||
-spec create_payment_ok_test(config()) -> _.
|
-spec create_payment_ok_test(config()) -> _.
|
||||||
|
|
||||||
create_payment_ok_test(Config) ->
|
create_payment_ok_test(Config) ->
|
||||||
@ -230,7 +262,14 @@ create_payment_ok_test(Config) ->
|
|||||||
<<"token">> := PaymentToolToken,
|
<<"token">> := PaymentToolToken,
|
||||||
<<"invoiceID">> := InvoiceID
|
<<"invoiceID">> := InvoiceID
|
||||||
}} = ?config(saved_config, Config),
|
}} = ?config(saved_config, Config),
|
||||||
#{<<"id">> := _PaymentID} = default_create_payment(InvoiceID, PaymentSession, PaymentToolToken, Config).
|
#{<<"id">> := PaymentID} = default_create_payment(
|
||||||
|
InvoiceID,
|
||||||
|
PaymentSession,
|
||||||
|
PaymentToolToken,
|
||||||
|
Config
|
||||||
|
),
|
||||||
|
{save_config, #{payment_id => PaymentID, invoice_id => InvoiceID}}.
|
||||||
|
|
||||||
|
|
||||||
-spec create_payment_tool_token_ok_test(config()) -> _.
|
-spec create_payment_tool_token_ok_test(config()) -> _.
|
||||||
|
|
||||||
@ -247,36 +286,31 @@ create_payment_tool_token_ok_test(Config) ->
|
|||||||
-spec get_invoice_by_id_ok_test(config()) -> _.
|
-spec get_invoice_by_id_ok_test(config()) -> _.
|
||||||
|
|
||||||
get_invoice_by_id_ok_test(Config) ->
|
get_invoice_by_id_ok_test(Config) ->
|
||||||
#{<<"id">> := InvoiceID} = default_create_invoice(Config),
|
{create_invoice_ok_test,
|
||||||
|
InvoiceID
|
||||||
|
} = ?config(saved_config, Config),
|
||||||
Path = "/v1/processing/invoices/" ++ genlib:to_list(InvoiceID),
|
Path = "/v1/processing/invoices/" ++ genlib:to_list(InvoiceID),
|
||||||
{ok, 200, _RespHeaders, _Body} = default_call(get, Path, #{}, Config).
|
{ok, 200, _RespHeaders, _Body} = default_call(get, Path, #{}, Config),
|
||||||
|
{save_config, InvoiceID}.
|
||||||
|
|
||||||
-spec get_invoice_events_ok_test(config()) -> _.
|
-spec get_invoice_events_ok_test(config()) -> _.
|
||||||
|
|
||||||
get_invoice_events_ok_test(Config) ->
|
get_invoice_events_ok_test(Config) ->
|
||||||
#{<<"id">> := InvoiceID} = default_create_invoice(Config),
|
{fulfill_invoice_ok_test,
|
||||||
#{
|
#{invoice_id := InvoiceID}
|
||||||
<<"session">> := PaymentSession,
|
} = ?config(saved_config, Config),
|
||||||
<<"token">> := PaymentToolToken
|
|
||||||
} = default_tokenize_card(Config),
|
|
||||||
#{<<"id">> := _PaymentID} = default_create_payment(InvoiceID, PaymentSession, PaymentToolToken, Config),
|
|
||||||
|
|
||||||
timer:sleep(1000),
|
|
||||||
Path = "/v1/processing/invoices/" ++ genlib:to_list(InvoiceID) ++ "/events/?limit=100",
|
Path = "/v1/processing/invoices/" ++ genlib:to_list(InvoiceID) ++ "/events/?limit=100",
|
||||||
{ok, 200, _RespHeaders, _Body} = default_call(get, Path, #{}, Config).
|
{ok, 200, _RespHeaders, _Body} = default_call(get, Path, #{}, Config).
|
||||||
|
|
||||||
-spec get_payment_by_id_ok_test(config()) -> _.
|
-spec get_payment_by_id_ok_test(config()) -> _.
|
||||||
|
|
||||||
get_payment_by_id_ok_test(Config) ->
|
get_payment_by_id_ok_test(Config) ->
|
||||||
#{<<"id">> := InvoiceID} = default_create_invoice(Config),
|
{create_payment_ok_test,
|
||||||
#{
|
#{payment_id := PaymentID, invoice_id := InvoiceID} = Info
|
||||||
<<"session">> := PaymentSession,
|
} = ?config(saved_config, Config),
|
||||||
<<"token">> := PaymentToolToken
|
|
||||||
} = default_tokenize_card(Config),
|
|
||||||
#{<<"id">> := PaymentID} = default_create_payment(InvoiceID, PaymentSession, PaymentToolToken, Config),
|
|
||||||
|
|
||||||
Path = "/v1/processing/invoices/" ++ genlib:to_list(InvoiceID) ++ "/payments/" ++ genlib:to_list(PaymentID),
|
Path = "/v1/processing/invoices/" ++ genlib:to_list(InvoiceID) ++ "/payments/" ++ genlib:to_list(PaymentID),
|
||||||
{ok, 200, _RespHeaders, _Body} = default_call(get, Path, #{}, Config).
|
{ok, 200, _RespHeaders, _Body} = default_call(get, Path, #{}, Config),
|
||||||
|
{save_config, Info}.
|
||||||
|
|
||||||
-spec get_invoices_stats_ok_test(config()) -> _.
|
-spec get_invoices_stats_ok_test(config()) -> _.
|
||||||
|
|
||||||
@ -769,6 +803,10 @@ default_create_shop(CategoryRef, Config) ->
|
|||||||
<<"shopDetails">> => #{
|
<<"shopDetails">> => #{
|
||||||
<<"name">> => <<"OOOBlackMaster">>,
|
<<"name">> => <<"OOOBlackMaster">>,
|
||||||
<<"description">> => <<"Goods for education">>
|
<<"description">> => <<"Goods for education">>
|
||||||
|
},
|
||||||
|
<<"contractor">> => #{
|
||||||
|
<<"registeredName">> => <<"DefaultRegisteredName">>,
|
||||||
|
<<"legalEntity">> => <<"DefaultLegalEntity">>
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{ok, 202, _RespHeaders, Body} = default_call(post, Path, Req, Config),
|
{ok, 202, _RespHeaders, Body} = default_call(post, Path, Req, Config),
|
||||||
@ -797,6 +835,24 @@ default_revoke_claim(ClaimID, Config) ->
|
|||||||
{ok, 200, _RespHeaders, Body} = default_call(post, Path, Req, Config),
|
{ok, 200, _RespHeaders, Body} = default_call(post, Path, Req, Config),
|
||||||
decode_body(Body).
|
decode_body(Body).
|
||||||
|
|
||||||
|
|
||||||
|
default_fulfill_invoice(InvoiceID, Config) ->
|
||||||
|
Path = "/v1/processing/invoices/" ++ genlib:to_list(InvoiceID) ++ "/fulfill",
|
||||||
|
Req = #{
|
||||||
|
<<"reason">> => <<"me want dat">>
|
||||||
|
},
|
||||||
|
{ok, 200, _RespHeaders, Body} = default_call(post, Path, Req, Config),
|
||||||
|
decode_body(Body).
|
||||||
|
|
||||||
|
|
||||||
|
default_rescind_invoice(InvoiceID, Config) ->
|
||||||
|
Path = "/v1/processing/invoices/" ++ genlib:to_list(InvoiceID) ++ "/rescind",
|
||||||
|
Req = #{
|
||||||
|
<<"reason">> => <<"me want dat">>
|
||||||
|
},
|
||||||
|
{ok, 200, _RespHeaders, Body} = default_call(post, Path, Req, Config),
|
||||||
|
decode_body(Body).
|
||||||
|
|
||||||
%% @FIXME thats dirty
|
%% @FIXME thats dirty
|
||||||
default_approve_claim(ClaimID) ->
|
default_approve_claim(ClaimID) ->
|
||||||
UserInfo = #payproc_UserInfo{
|
UserInfo = #payproc_UserInfo{
|
||||||
@ -816,6 +872,7 @@ default_approve_claim(ClaimID) ->
|
|||||||
-define(prv(ID), #domain_ProviderRef{id = ID}).
|
-define(prv(ID), #domain_ProviderRef{id = ID}).
|
||||||
-define(trm(ID), #domain_TerminalRef{id = ID}).
|
-define(trm(ID), #domain_TerminalRef{id = ID}).
|
||||||
-define(pst(ID), #domain_PaymentsServiceTermsRef{id = ID}).
|
-define(pst(ID), #domain_PaymentsServiceTermsRef{id = ID}).
|
||||||
|
-define(sas(ID), #domain_SystemAccountSetRef{id = ID}).
|
||||||
|
|
||||||
-define(trmacc(Cur, Rec, Com),
|
-define(trmacc(Cur, Rec, Com),
|
||||||
#domain_TerminalAccountSet{currency = ?cur(Cur), receipt = Rec, compensation = Com}).
|
#domain_TerminalAccountSet{currency = ?cur(Cur), receipt = Rec, compensation = Com}).
|
||||||
@ -851,23 +908,44 @@ populate_snapshot(ProxyUrl) ->
|
|||||||
ops = Ops
|
ops = Ops
|
||||||
},
|
},
|
||||||
|
|
||||||
cp_proto:call_service_safe(
|
{{ok, _Version}, _} = cp_proto:call_service_safe(
|
||||||
repository,
|
repository,
|
||||||
'Commit',
|
'Commit',
|
||||||
[Version, Commit],
|
[Version, Commit],
|
||||||
Context0
|
Context0
|
||||||
),
|
),
|
||||||
|
|
||||||
timer:sleep(8000).
|
timer:sleep(8000).
|
||||||
|
|
||||||
get_domain_fixture(ProxyUrl) ->
|
get_domain_fixture(ProxyUrl) ->
|
||||||
|
Context = create_context(),
|
||||||
|
{Accounts, _Context} = lists:foldl(
|
||||||
|
fun ({N, CurrencyCode}, {M, C0}) ->
|
||||||
|
{AccountID, C1} = create_account(CurrencyCode, C0),
|
||||||
|
{M#{N => AccountID}, C1}
|
||||||
|
end,
|
||||||
|
{#{}, Context},
|
||||||
|
[
|
||||||
|
{system_compensation , <<"RUB">>},
|
||||||
|
{terminal_1_receipt , <<"RUB">>},
|
||||||
|
{terminal_1_compensation , <<"RUB">>}
|
||||||
|
]
|
||||||
|
),
|
||||||
[
|
[
|
||||||
{globals, #domain_GlobalsObject{
|
{globals, #domain_GlobalsObject{
|
||||||
ref = #domain_GlobalsRef{},
|
ref = #domain_GlobalsRef{},
|
||||||
data = #domain_Globals{
|
data = #domain_Globals{
|
||||||
party_prototype = #domain_PartyPrototypeRef{id = 42},
|
party_prototype = #domain_PartyPrototypeRef{id = 42},
|
||||||
providers = {value, [?prv(1)]},
|
providers = {value, [?prv(1)]},
|
||||||
system_accounts = {predicates, []}
|
system_accounts = {value, [?sas(1)]}
|
||||||
|
}
|
||||||
|
}},
|
||||||
|
{system_account_set, #domain_SystemAccountSetObject{
|
||||||
|
ref = ?sas(1),
|
||||||
|
data = #domain_SystemAccountSet{
|
||||||
|
name = <<"Primaries">>,
|
||||||
|
description = <<"Primaries">>,
|
||||||
|
currency = ?cur(<<"RUB">>),
|
||||||
|
compensation = maps:get(system_compensation, Accounts)
|
||||||
}
|
}
|
||||||
}},
|
}},
|
||||||
{party_prototype, #domain_PartyPrototypeObject{
|
{party_prototype, #domain_PartyPrototypeObject{
|
||||||
@ -955,7 +1033,11 @@ get_domain_fixture(ProxyUrl) ->
|
|||||||
?cfpost(provider, receipt, merchant, general, ?share(1, 1, payment_amount)),
|
?cfpost(provider, receipt, merchant, general, ?share(1, 1, payment_amount)),
|
||||||
?cfpost(system, compensation, provider, compensation, ?share(18, 1000, payment_amount))
|
?cfpost(system, compensation, provider, compensation, ?share(18, 1000, payment_amount))
|
||||||
],
|
],
|
||||||
accounts = ?trmacc(<<"RUB">>, 10001, 10002),
|
accounts = ?trmacc(
|
||||||
|
<<"RUB">>,
|
||||||
|
maps:get(terminal_1_receipt, Accounts),
|
||||||
|
maps:get(terminal_1_compensation, Accounts)
|
||||||
|
),
|
||||||
options = #{
|
options = #{
|
||||||
<<"override">> => <<"Brominal 1">>
|
<<"override">> => <<"Brominal 1">>
|
||||||
}
|
}
|
||||||
@ -1027,12 +1109,11 @@ get_any_category(Config) ->
|
|||||||
Category.
|
Category.
|
||||||
|
|
||||||
start_service_handler(Module, C) ->
|
start_service_handler(Module, C) ->
|
||||||
IP = "127.0.0.1",
|
|
||||||
Port = get_random_port(),
|
Port = get_random_port(),
|
||||||
Opts = #{},
|
Opts = #{},
|
||||||
ChildSpec = capi_test_proxy:get_child_spec(Module, IP, Port, Opts),
|
ChildSpec = capi_test_proxy:get_child_spec(Module, "0.0.0.0", Port, Opts),
|
||||||
{ok, _} = supervisor:start_child(?config(test_sup, C), ChildSpec),
|
{ok, _} = supervisor:start_child(?config(test_sup, C), ChildSpec),
|
||||||
capi_test_proxy:get_url(Module, IP, Port).
|
capi_test_proxy:get_url(Module, ?CAPI_HOST_NAME, Port).
|
||||||
|
|
||||||
get_random_port() ->
|
get_random_port() ->
|
||||||
rand:uniform(32768) + 32767.
|
rand:uniform(32768) + 32767.
|
||||||
@ -1059,3 +1140,16 @@ cleanup() ->
|
|||||||
Context0
|
Context0
|
||||||
),
|
),
|
||||||
ok.
|
ok.
|
||||||
|
|
||||||
|
|
||||||
|
create_account(CurrencyCode, Context0) ->
|
||||||
|
AccountPrototype = #accounter_AccountPrototype{
|
||||||
|
currency_sym_code = CurrencyCode
|
||||||
|
},
|
||||||
|
{{ok, AccountID}, Context} = cp_proto:call_service_safe(
|
||||||
|
accounter,
|
||||||
|
'CreateAccount',
|
||||||
|
[AccountPrototype],
|
||||||
|
Context0
|
||||||
|
),
|
||||||
|
{AccountID, Context}.
|
||||||
|
@ -1 +1 @@
|
|||||||
Subproject commit 7a56dfce898cbc4c989f5d900ef3e50e0b8c2977
|
Subproject commit 557f5493cfb24728cd4171a9b3f9df86c529fa07
|
@ -17,6 +17,7 @@
|
|||||||
"payment_processing.thrift",
|
"payment_processing.thrift",
|
||||||
"merch_stat.thrift",
|
"merch_stat.thrift",
|
||||||
"proxy_provider.thrift",
|
"proxy_provider.thrift",
|
||||||
|
"accounter.thrift",
|
||||||
"domain_config.thrift"
|
"domain_config.thrift"
|
||||||
]},
|
]},
|
||||||
{gen, "erlang:app_prefix=cp,scoped_typenames"}
|
{gen, "erlang:app_prefix=cp,scoped_typenames"}
|
||||||
|
@ -27,5 +27,7 @@ get_service_modname(merchant_stat) ->
|
|||||||
{cp_merch_stat_thrift, 'MerchantStatistics'};
|
{cp_merch_stat_thrift, 'MerchantStatistics'};
|
||||||
get_service_modname(repository) ->
|
get_service_modname(repository) ->
|
||||||
{cp_domain_config_thrift, 'Repository'};
|
{cp_domain_config_thrift, 'Repository'};
|
||||||
|
get_service_modname(accounter) ->
|
||||||
|
{cp_accounter_thrift, 'Accounter'};
|
||||||
get_service_modname(party_management) ->
|
get_service_modname(party_management) ->
|
||||||
{cp_payment_processing_thrift, 'PartyManagement'}.
|
{cp_payment_processing_thrift, 'PartyManagement'}.
|
||||||
|
@ -21,7 +21,7 @@ services:
|
|||||||
- SERVICE_NAME=capi
|
- SERVICE_NAME=capi
|
||||||
|
|
||||||
hellgate:
|
hellgate:
|
||||||
image: dr.rbkmoney.com/rbkmoney/hellgate:235513c47205ed190d3276fdb2c7948893b57cbd
|
image: dr.rbkmoney.com/rbkmoney/hellgate:ef9864b17f88d98a2b851a7cc090c3cfc4c19d4b
|
||||||
restart: always
|
restart: always
|
||||||
command: /opt/hellgate/bin/hellgate foreground
|
command: /opt/hellgate/bin/hellgate foreground
|
||||||
depends_on:
|
depends_on:
|
||||||
@ -29,7 +29,7 @@ services:
|
|||||||
- shumway
|
- shumway
|
||||||
|
|
||||||
cds:
|
cds:
|
||||||
image: dr.rbkmoney.com/rbkmoney/cds:fe3751a508600af87e67cc5add133d178a403fd6
|
image: dr.rbkmoney.com/rbkmoney/cds:538659226317356bc42529299037fe6cfa651694
|
||||||
restart: always
|
restart: always
|
||||||
command: /opt/cds/bin/cds foreground
|
command: /opt/cds/bin/cds foreground
|
||||||
|
|
||||||
@ -115,7 +115,7 @@ services:
|
|||||||
- SERVICE_NAME=shumway-db
|
- SERVICE_NAME=shumway-db
|
||||||
|
|
||||||
dominant:
|
dominant:
|
||||||
image: dr.rbkmoney.com/rbkmoney/dominant:f3c72168d9dfeb4da241d4eb5d6a29787c81faef
|
image: dr.rbkmoney.com/rbkmoney/dominant:9e6db27120f970707b77aa492fb218eb1bd40055
|
||||||
restart: always
|
restart: always
|
||||||
command: /opt/dominant/bin/dominant foreground
|
command: /opt/dominant/bin/dominant foreground
|
||||||
depends_on:
|
depends_on:
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
{elvis_style, state_record_and_type},
|
{elvis_style, state_record_and_type},
|
||||||
{elvis_style, no_spec_with_records},
|
{elvis_style, no_spec_with_records},
|
||||||
{elvis_style, dont_repeat_yourself, #{
|
{elvis_style, dont_repeat_yourself, #{
|
||||||
min_complexity => 10,
|
min_complexity => 15,
|
||||||
ignore => [
|
ignore => [
|
||||||
capi_tests_mock_SUITE,
|
capi_tests_mock_SUITE,
|
||||||
capi_tests_real_SUITE
|
capi_tests_real_SUITE
|
||||||
|
@ -106,6 +106,7 @@
|
|||||||
]}
|
]}
|
||||||
]},
|
]},
|
||||||
{test, [
|
{test, [
|
||||||
|
{cover_enabled, true},
|
||||||
{deps, []}
|
{deps, []}
|
||||||
]}
|
]}
|
||||||
]}.
|
]}.
|
||||||
|
@ -1 +1 @@
|
|||||||
Subproject commit 78917f0ae966089ff97e0d2ae4c720b965e64902
|
Subproject commit f10087c324134da223154f76bbae4e414a475bdb
|
Loading…
Reference in New Issue
Block a user