diff --git a/c_src/Makefile b/c_src/Makefile index da7b889..e8e5122 100644 --- a/c_src/Makefile +++ b/c_src/Makefile @@ -8,7 +8,7 @@ PACT_INCLUDE_PATH := $(CURDIR)/include UNAME := $(shell uname -s) ARCHITECTURE := $(shell uname -m) -PACT_FFI_VERSION := 0.4.7 +PACT_FFI_VERSION := 0.4.17 PACT_FFI_BASE_URL := https://github.com/pact-foundation/pact-reference/releases/download/libpact_ffi-v$(PACT_FFI_VERSION) PACT_H_URL := $(PACT_FFI_BASE_URL)/pact.h diff --git a/c_src/pactffi_nif.c b/c_src/pactffi_nif.c index 8b428a7..e67aa7f 100644 --- a/c_src/pactffi_nif.c +++ b/c_src/pactffi_nif.c @@ -699,12 +699,19 @@ static ERL_NIF_TERM verify_via_file(ErlNifEnv *env, int argc, const ERL_NIF_TERM pactffi_verifier_set_no_pacts_is_error(verifierhandle, 0); pactffi_verifier_set_provider_info(verifierhandle, name, scheme, host, port, path); pactffi_verifier_add_provider_transport(verifierhandle, protocol, port, path, scheme); - if (!enif_is_binary(env, argv[9])) + + char *auth_token_type = convert_erl_binary_to_c_string(env, argv[9]); + char *auth_token_value = convert_erl_binary_to_c_string(env, argv[10]); + char *auth_header = (char *)malloc((strlen(auth_token_type) + strlen(auth_token_value) + 1) * sizeof(char)); + sprintf(auth_header, "%s %s", auth_token_type, auth_token_value); + pactffi_verifier_add_custom_header(verifierhandle, "authorization", auth_header); + free(auth_header); + + if (!enif_is_binary(env, argv[11])) { return enif_make_badarg(env); } - - char *state_path = convert_erl_binary_to_c_string(env, argv[9]); + char *state_path = convert_erl_binary_to_c_string(env, argv[11]); if (state_path[0] != '\0') { pactffi_verifier_set_provider_state(verifierhandle, state_path, 0, 1); @@ -875,10 +882,10 @@ static ErlNifFunc nif_funcs[] = {"msg_given_with_param", 4, msg_given_with_param}, {"msg_with_contents", 3, msg_with_contents}, {"reify_message", 1, reify_message}, - {"schedule_async_file_verify", 10, schedule_async_file_verify}, + {"schedule_async_file_verify", 12, schedule_async_file_verify}, {"schedule_async_broker_verify", 15, schedule_async_broker_verify}, {"verify_via_broker", 15, verify_via_broker}, - {"verify_via_file", 10, verify_via_file} + {"verify_via_file", 12, verify_via_file} }; ERL_NIF_INIT(pactffi_nif, nif_funcs, NULL, NULL, NULL, NULL) diff --git a/src/pact_escript.escript b/src/pact_escript.escript index 601b34c..3bfc572 100755 --- a/src/pact_escript.escript +++ b/src/pact_escript.escript @@ -2,8 +2,8 @@ main([Module, Function | Args]) -> - code:add_pathz("../../lib/pact_erlang/ebin"), - code:add_pathz("../../../lib/pact_erlang/ebin"), + {ok, Dir} = file:get_cwd(), + code:add_pathz(Dir ++ "/_build/test/lib/pact_erlang/ebin"), ModuleAtom = list_to_atom(Module), FunctionAtom = list_to_atom(Function), ArgsList = @@ -24,7 +24,7 @@ main([Module, Function | Args]) -> {[], 0}, Args ), - case length(AList) < 10 of + case length(AList) < 12 of true -> AList ++ [<<"">>]; false -> diff --git a/src/pact_verifier.erl b/src/pact_verifier.erl index f552e34..62350e4 100644 --- a/src/pact_verifier.erl +++ b/src/pact_verifier.erl @@ -161,6 +161,8 @@ verify_pacts(VerifierRef, ProviderOpts, ProviderPortDetails) -> } = ProviderOpts, Protocol = maps:get(protocol, ProviderOpts, <<"http">>), BaseUrl = maps:get(base_url, ProviderOpts, <<"/">>), + AuthTokenType = maps:get(auth_token_type, ProviderOpts, <<"Bearer">>), + AuthTokenValue = maps:get(auth_token_value, ProviderOpts, <<"Token">>), StateChangeUrl = maps:get(state_change_url, ProviderOpts, <<"">>), Scheme = maps:get(scheme, ProviderOpts, <<"http">>), FilePath = maps:get(file_path, PactSourceOpts, undefined), @@ -182,6 +184,8 @@ verify_pacts(VerifierRef, ProviderOpts, ProviderPortDetails) -> Branch, FilePath, Protocol, + AuthTokenType, + AuthTokenValue, StateChangeUrl ], ArgsString = @@ -199,9 +203,10 @@ verify_pacts(VerifierRef, ProviderOpts, ProviderPortDetails) -> "", Args ), - {Output, _OutputLog} = pact_utils:run_executable_async( + {Output, OutputLog} = pact_utils:run_executable_async( EscriptPath ++ " pactffi_nif verify_file_pacts " ++ ArgsString ), + io:format(OutputLog), Output end, Output2 = @@ -246,9 +251,10 @@ verify_pacts(VerifierRef, ProviderOpts, ProviderPortDetails) -> "", Args1 ), - {Output3, _OutputLog3} = pact_utils:run_executable_async( + {Output3, OutputLog3} = pact_utils:run_executable_async( EscriptPath ++ " pactffi_nif verify_broker_pacts " ++ ArgsString1 ), + io:format(OutputLog3), Output3 end, case Protocol of diff --git a/src/pactffi_nif.erl b/src/pactffi_nif.erl index 9ebd83d..a690fef 100644 --- a/src/pactffi_nif.erl +++ b/src/pactffi_nif.erl @@ -34,12 +34,12 @@ msg_with_contents/3, reify_message/1, get_reified_message/1, - verify_file_pacts/10, + verify_file_pacts/12, verify_broker_pacts/14, schedule_async_broker_verify/15, - schedule_async_file_verify/10, + schedule_async_file_verify/12, verify_via_broker/15, - verify_via_file/10 + verify_via_file/12 ]). % Import the NIF functions from the C library @@ -70,10 +70,10 @@ msg_given_with_param/4, msg_with_contents/3, reify_message/1, - schedule_async_file_verify/10, + schedule_async_file_verify/12, schedule_async_broker_verify/15, verify_via_broker/15, - verify_via_file/10 + verify_via_file/12 ]). -on_load(init/0). @@ -186,30 +186,30 @@ msg_with_contents(_, _, _) -> reify_message(_) -> erlang:nif_error("NIF library not loaded"). -schedule_async_file_verify(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10) -> +schedule_async_file_verify(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12) -> erlang:nif_error("NIF library not loaded"). schedule_async_broker_verify(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15) -> erlang:nif_error("NIF library not loaded"). -verify_via_file(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10) -> +verify_via_file(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12) -> erlang:nif_error("NIF library not loaded"). verify_via_broker(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15) -> erlang:nif_error("NIF library not loaded"). verify_file_pacts( - Name, Scheme, Host, Port, Path, Version, Branch, FilePath, Protocol, StatePath + Name, Scheme, Host, Port, Path, Version, Branch, FilePath, Protocol, AuthTokenType, AuthTokenValue, StatePath ) -> verify_via_file( - Name, Scheme, Host, Port, Path, Version, Branch, FilePath, Protocol, StatePath + Name, Scheme, Host, Port, Path, Version, Branch, FilePath, Protocol, AuthTokenType, AuthTokenValue, StatePath ). % receive % Output -> % Output % end. % verify_via_file( -% Name, Scheme, Host, Port, Path, Version, Branch, FilePath, Protocol, Pid, StatePath +% Name, Scheme, Host, Port, Path, Version, Branch, FilePath, Protocol, Pid, AuthTokenType, AuthTokenValue, StatePath % ). verify_broker_pacts(