pact-ffi 0.0.2-arm64-darwin → 0.0.3-arm64-darwin
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +40 -3
- data/ffi/macos-arm64/libpact_ffi.dylib +0 -0
- data/lib/pact/ffi/async_message_pact.rb +27 -0
- data/lib/pact/ffi/http_consumer.rb +36 -0
- data/lib/pact/ffi/logger.rb +33 -0
- data/lib/pact/ffi/message_pact.rb +127 -0
- data/lib/pact/ffi/mock_server.rb +83 -0
- data/lib/pact/ffi/plugins.rb +39 -0
- data/lib/pact/ffi/sync_http_consumer.rb +35 -0
- data/lib/pact/ffi/sync_message_consumer.rb +37 -0
- data/lib/pact/ffi/utils.rb +143 -0
- data/lib/pact/ffi/verifier.rb +61 -0
- data/lib/pact/ffi/version.rb +5 -0
- data/lib/pact/ffi.rb +258 -257
- metadata +14 -3
@@ -0,0 +1,143 @@
|
|
1
|
+
# require 'pact-ffi/version'
|
2
|
+
require 'ffi'
|
3
|
+
require 'pact/detect_os'
|
4
|
+
|
5
|
+
module PactFfi
|
6
|
+
module Utils
|
7
|
+
extend FFI::Library
|
8
|
+
ffi_lib DetectOS.get_bin_path
|
9
|
+
|
10
|
+
DetectOS.windows? || DetectOS.linux_arm? ? (typedef :uint32, :uint32_type) : (typedef :uint32_t, :uint32_type)
|
11
|
+
FfiSpecificationVersion = Hash[
|
12
|
+
'SPECIFICATION_VERSION_UNKNOWN' => 0,
|
13
|
+
'SPECIFICATION_VERSION_V1' => 1,
|
14
|
+
'SPECIFICATION_VERSION_V1_1' => 2,
|
15
|
+
'SPECIFICATION_VERSION_V2' => 3,
|
16
|
+
'SPECIFICATION_VERSION_V3' => 4,
|
17
|
+
'SPECIFICATION_VERSION_V4' => 5,
|
18
|
+
]
|
19
|
+
FfiWritePactResponse = Hash[
|
20
|
+
'SUCCESS' => 0,
|
21
|
+
'GENERAL_PANIC' => 1,
|
22
|
+
'UNABLE_TO_WRITE_PACT_FILE' => 2,
|
23
|
+
'MOCK_SERVER_NOT_FOUND' => 3,
|
24
|
+
]
|
25
|
+
FfiWriteMessagePactResponse = Hash[
|
26
|
+
'SUCCESS' => 0,
|
27
|
+
'UNABLE_TO_WRITE_PACT_FILE' => 1,
|
28
|
+
'MESSAGE_HANDLE_INVALID' => 2,
|
29
|
+
'MOCK_SERVER_NOT_FOUND' => 3,
|
30
|
+
]
|
31
|
+
FfiConfigurePluginResponse = Hash[
|
32
|
+
'SUCCESS' => 0,
|
33
|
+
'GENERAL_PANIC' => 1,
|
34
|
+
'FAILED_TO_LOAD_PLUGIN' => 2,
|
35
|
+
'PACT_HANDLE_INVALID' => 3,
|
36
|
+
]
|
37
|
+
FfiPluginInteractionResponse = Hash[
|
38
|
+
'SUCCESS' => 0,
|
39
|
+
'A_GENERAL_PANIC_WAS_CAUGHT' => 1,
|
40
|
+
'MOCK_SERVER_HAS_ALREADY_BEEN_STARTED' => 2,
|
41
|
+
'INTERACTION_HANDLE_IS_INVALID' => 3,
|
42
|
+
'CONTENT_TYPE_IS_NOT_VALID' => 4,
|
43
|
+
'CONTENTS_JSON_IS_NOT_VALID_JSON' => 5,
|
44
|
+
'PLUGIN_RETURNED_AN_ERROR' => 6,
|
45
|
+
]
|
46
|
+
FfiInteractionPart = Hash[
|
47
|
+
'INTERACTION_PART_REQUEST' => 0,
|
48
|
+
'INTERACTION_PART_RESPONSE' => 1,
|
49
|
+
]
|
50
|
+
# /*
|
51
|
+
# -1 A null pointer was received
|
52
|
+
# -2 The pact JSON could not be parsed
|
53
|
+
# -3 The mock server could not be started
|
54
|
+
# -4 The method panicked
|
55
|
+
# -5 The address is not valid
|
56
|
+
# -6 Could not create the TLS configuration with the self-signed certificate
|
57
|
+
# */
|
58
|
+
FfiPluginCreateMockServerErrors = Hash[
|
59
|
+
'NULL_POINTER' => -1,
|
60
|
+
'JSON_PARSE_ERROR' => -2,
|
61
|
+
'MOCK_SERVER_START_FAIL' => -3,
|
62
|
+
'CORE_PANIC' => -4,
|
63
|
+
'ADDRESS_NOT_VALID' => -5,
|
64
|
+
'TLS_CONFIG' => -6,
|
65
|
+
]
|
66
|
+
|
67
|
+
FfiPluginFunctionResult = Hash[
|
68
|
+
'RESULT_OK' => 0,
|
69
|
+
'RESULT_FAILED' => 1,
|
70
|
+
]
|
71
|
+
|
72
|
+
attach_function :match_message, :pactffi_match_message, %i[pointer pointer], :pointer
|
73
|
+
attach_function :mismatches_get_iter, :pactffi_mismatches_get_iter, %i[pointer], :pointer
|
74
|
+
attach_function :mismatches_delete, :pactffi_mismatches_delete, %i[pointer], :void
|
75
|
+
attach_function :mismatches_iter_next, :pactffi_mismatches_iter_next, %i[pointer], :pointer
|
76
|
+
attach_function :mismatches_iter_delete, :pactffi_mismatches_iter_delete, %i[pointer], :void
|
77
|
+
attach_function :mismatch_to_json, :pactffi_mismatch_to_json, %i[pointer], :string
|
78
|
+
attach_function :mismatch_type, :pactffi_mismatch_type, %i[pointer], :string
|
79
|
+
attach_function :mismatch_summary, :pactffi_mismatch_summary, %i[pointer], :string
|
80
|
+
attach_function :mismatch_description, :pactffi_mismatch_description, %i[pointer], :string
|
81
|
+
attach_function :mismatch_ansi_description, :pactffi_mismatch_ansi_description, %i[pointer], :string
|
82
|
+
attach_function :get_error_message, :pactffi_get_error_message, %i[string int32], :int32
|
83
|
+
attach_function :parse_pact_json, :pactffi_parse_pact_json, %i[string], :pointer
|
84
|
+
attach_function :pact_model_delete, :pactffi_pact_model_delete, %i[pointer], :void
|
85
|
+
attach_function :pact_model_interaction_iterator, :pactffi_pact_model_interaction_iterator, %i[pointer], :pointer
|
86
|
+
attach_function :pact_spec_version, :pactffi_pact_spec_version, %i[pointer], :int32
|
87
|
+
attach_function :pact_interaction_delete, :pactffi_pact_interaction_delete, %i[pointer], :void
|
88
|
+
attach_function :consumer_get_name, :pactffi_consumer_get_name, %i[pointer], :string
|
89
|
+
attach_function :pact_get_consumer, :pactffi_pact_get_consumer, %i[pointer], :pointer
|
90
|
+
attach_function :pact_consumer_delete, :pactffi_pact_consumer_delete, %i[pointer], :void
|
91
|
+
attach_function :parse_matcher_definition, :pactffi_parse_matcher_definition, %i[string], :pointer
|
92
|
+
attach_function :matcher_definition_error, :pactffi_matcher_definition_error, %i[pointer], :string
|
93
|
+
attach_function :matcher_definition_value, :pactffi_matcher_definition_value, %i[pointer], :string
|
94
|
+
attach_function :matcher_definition_delete, :pactffi_matcher_definition_delete, %i[pointer], :void
|
95
|
+
attach_function :matcher_definition_generator, :pactffi_matcher_definition_generator, %i[pointer], :pointer
|
96
|
+
attach_function :matcher_definition_value_type, :pactffi_matcher_definition_value_type, %i[pointer], :int32
|
97
|
+
attach_function :matching_rule_iter_delete, :pactffi_matching_rule_iter_delete, %i[pointer], :void
|
98
|
+
attach_function :matcher_definition_iter, :pactffi_matcher_definition_iter, %i[pointer], :pointer
|
99
|
+
attach_function :matching_rule_iter_next, :pactffi_matching_rule_iter_next, %i[pointer], :pointer
|
100
|
+
attach_function :matching_rule_id, :pactffi_matching_rule_id, %i[pointer], :uint16
|
101
|
+
attach_function :matching_rule_value, :pactffi_matching_rule_value, %i[pointer], :string
|
102
|
+
attach_function :matching_rule_pointer, :pactffi_matching_rule_pointer, %i[pointer], :pointer
|
103
|
+
attach_function :matching_rule_reference_name, :pactffi_matching_rule_reference_name, %i[pointer], :string
|
104
|
+
attach_function :validate_datetime, :pactffi_validate_datetime, %i[string string], :int32
|
105
|
+
attach_function :generator_to_json, :pactffi_generator_to_json, %i[pointer], :string
|
106
|
+
attach_function :generator_generate_string, :pactffi_generator_generate_string, %i[pointer string], :string
|
107
|
+
attach_function :generator_generate_integer, :pactffi_generator_generate_integer, %i[pointer string], :uint16
|
108
|
+
attach_function :generators_iter_delete, :pactffi_generators_iter_delete, %i[pointer], :void
|
109
|
+
attach_function :generators_iter_next, :pactffi_generators_iter_next, %i[pointer], :pointer
|
110
|
+
attach_function :generators_iter_pair_delete, :pactffi_generators_iter_pair_delete, %i[pointer], :void
|
111
|
+
attach_function :matching_rule_to_json, :pactffi_matching_rule_to_json, %i[pointer], :string
|
112
|
+
attach_function :matching_rules_iter_delete, :pactffi_matching_rules_iter_delete, %i[pointer], :void
|
113
|
+
attach_function :matching_rules_iter_next, :pactffi_matching_rules_iter_next, %i[pointer], :pointer
|
114
|
+
attach_function :matching_rules_iter_pair_delete, :pactffi_matching_rules_iter_pair_delete, %i[pointer], :void
|
115
|
+
attach_function :provider_state_iter_next, :pactffi_provider_state_iter_next, %i[pointer], :pointer
|
116
|
+
attach_function :provider_state_iter_delete, :pactffi_provider_state_iter_delete, %i[pointer], :void
|
117
|
+
attach_function :provider_get_name, :pactffi_provider_get_name, %i[pointer], :string
|
118
|
+
attach_function :pact_get_provider, :pactffi_pact_get_provider, %i[pointer], :pointer
|
119
|
+
attach_function :pact_provider_delete, :pactffi_pact_provider_delete, %i[pointer], :void
|
120
|
+
attach_function :provider_state_get_name, :pactffi_provider_state_get_name, %i[pointer], :string
|
121
|
+
attach_function :provider_state_get_param_iter, :pactffi_provider_state_get_param_iter, %i[pointer], :pointer
|
122
|
+
attach_function :provider_state_param_iter_next, :pactffi_provider_state_param_iter_next, %i[pointer], :pointer
|
123
|
+
attach_function :provider_state_delete, :pactffi_provider_state_delete, %i[pointer], :void
|
124
|
+
attach_function :provider_state_param_iter_delete, :pactffi_provider_state_param_iter_delete, %i[pointer], :void
|
125
|
+
attach_function :provider_state_param_pair_delete, :pactffi_provider_state_param_pair_delete, %i[pointer], :void
|
126
|
+
attach_function :string_delete, :pactffi_string_delete, %i[string], :void
|
127
|
+
attach_function :generate_datetime_string, :pactffi_generate_datetime_string, %i[string], :pointer
|
128
|
+
attach_function :check_regex, :pactffi_check_regex, %i[string string], :bool
|
129
|
+
attach_function :generate_regex_value, :pactffi_generate_regex_value, %i[string], :pointer
|
130
|
+
attach_function :free_string, :pactffi_free_string, %i[string], :void
|
131
|
+
attach_function :new_pact, :pactffi_new_pact, %i[string string], :uint16
|
132
|
+
attach_function :interaction_contents, :pactffi_interaction_contents, %i[uint32_type int32 string string],
|
133
|
+
:uint32_type
|
134
|
+
attach_function :matches_string_value, :pactffi_matches_string_value, %i[pointer string string uint8], :string
|
135
|
+
attach_function :matches_u64_value, :pactffi_matches_u64_value, %i[pointer ulong_long ulong_long uint8], :string
|
136
|
+
attach_function :matches_i64_value, :pactffi_matches_i64_value, %i[pointer int64 int64 uint8], :string
|
137
|
+
attach_function :matches_f64_value, :pactffi_matches_f64_value, %i[pointer double double uint8], :string
|
138
|
+
attach_function :matches_bool_value, :pactffi_matches_bool_value, %i[pointer uint8 uint8 uint8], :string
|
139
|
+
attach_function :matches_binary_value, :pactffi_matches_binary_value,
|
140
|
+
%i[pointer pointer ulong_long pointer ulong_long uint8], :string
|
141
|
+
attach_function :matches_json_value, :pactffi_matches_json_value, %i[pointer string string uint8], :string
|
142
|
+
end
|
143
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
# require 'pact/native_verifier/version'
|
2
|
+
# require 'pact/native_verifier/app'
|
3
|
+
|
4
|
+
# require 'pact-ffi/version'
|
5
|
+
require 'ffi'
|
6
|
+
require 'pact/detect_os'
|
7
|
+
|
8
|
+
module PactFfi
|
9
|
+
module Verifier
|
10
|
+
extend FFI::Library
|
11
|
+
ffi_lib DetectOS.get_bin_path
|
12
|
+
DetectOS.windows? || DetectOS.linux_arm? ? (typedef :uint32, :uint32_type) : (typedef :uint32_t, :uint32_type)
|
13
|
+
|
14
|
+
# /*
|
15
|
+
# * | Error | Description |
|
16
|
+
# * |-------|-------------|
|
17
|
+
# * | 1 | The verification process failed, see output for errors |
|
18
|
+
# * | 2 | A null pointer was received |
|
19
|
+
# * | 3 | The method panicked |
|
20
|
+
# * | 4 | Invalid arguments were provided to the verification process |
|
21
|
+
# */
|
22
|
+
Response = Hash[
|
23
|
+
'VERIFICATION_SUCCESSFUL' => 0,
|
24
|
+
'VERIFICATION_FAILED' => 1,
|
25
|
+
'NULL_POINTER_RECEIVED' => 2,
|
26
|
+
'METHOD_PANICKED' => 3,
|
27
|
+
'INVALID_ARGUMENTS' => 4,
|
28
|
+
]
|
29
|
+
|
30
|
+
attach_function :verify, :pactffi_verify, %i[string], :int32
|
31
|
+
attach_function :new, :pactffi_verifier_new_for_application, %i[], :pointer
|
32
|
+
attach_function :new_for_application, :pactffi_verifier_new_for_application, %i[string string], :pointer
|
33
|
+
attach_function :shutdown, :pactffi_verifier_shutdown, %i[pointer], :void
|
34
|
+
attach_function :set_provider_info, :pactffi_verifier_set_provider_info,
|
35
|
+
%i[pointer string string string uint16 string], :void
|
36
|
+
attach_function :add_provider_transport, :pactffi_verifier_add_provider_transport,
|
37
|
+
%i[pointer string uint16 string string], :void
|
38
|
+
attach_function :set_filter_info, :pactffi_verifier_set_filter_info, %i[pointer string string uint8], :void
|
39
|
+
attach_function :set_provider_state, :pactffi_verifier_set_provider_state, %i[pointer string uint8 uint8], :void
|
40
|
+
attach_function :set_verification_options, :pactffi_verifier_set_verification_options, %i[pointer uint8 ulong_long],
|
41
|
+
:int32
|
42
|
+
attach_function :set_coloured_output, :pactffi_verifier_set_coloured_output, %i[pointer uint8], :int32
|
43
|
+
attach_function :set_no_pacts_is_error, :pactffi_verifier_set_no_pacts_is_error, %i[pointer uint8], :int32
|
44
|
+
attach_function :set_publish_options, :pactffi_verifier_set_publish_options,
|
45
|
+
%i[pointer string string pointer uint16 string], :int32
|
46
|
+
attach_function :set_consumer_filters, :pactffi_verifier_set_consumer_filters, %i[pointer pointer uint16], :void
|
47
|
+
attach_function :add_custom_header, :pactffi_verifier_add_custom_header, %i[pointer string string], :void
|
48
|
+
attach_function :add_file_source, :pactffi_verifier_add_file_source, %i[pointer string], :void
|
49
|
+
attach_function :add_directory_source, :pactffi_verifier_add_directory_source, %i[pointer string], :void
|
50
|
+
attach_function :url_source, :pactffi_verifier_url_source, %i[pointer string string string string], :void
|
51
|
+
attach_function :broker_source, :pactffi_verifier_broker_source, %i[pointer string string string string], :void
|
52
|
+
attach_function :broker_source_with_selectors, :pactffi_verifier_broker_source_with_selectors,
|
53
|
+
%i[pointer string string string string uint8 string pointer uint16 string pointer uint16 pointer uint16], :void
|
54
|
+
attach_function :execute, :pactffi_verifier_execute, %i[pointer], :int32
|
55
|
+
attach_function :cli_args, :pactffi_verifier_cli_args, %i[], :string
|
56
|
+
attach_function :logs, :pactffi_verifier_logs, %i[pointer], :string
|
57
|
+
attach_function :logs_for_provider, :pactffi_verifier_logs_for_provider, %i[string], :string
|
58
|
+
attach_function :output, :pactffi_verifier_output, %i[pointer uint8], :string
|
59
|
+
attach_function :json, :pactffi_verifier_json, %i[pointer], :string
|
60
|
+
end
|
61
|
+
end
|