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
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2d6ec1b4db2ed927b6ad8e78f0c25256b4dbf83283f90b53e76a8da018bb15b1
|
4
|
+
data.tar.gz: ba4cdc9c4ebf199f82b72a372c93ae05917fabebbb604052ad84cc24f4f01a63
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '087d07e6f804eec1e7349eeaf0dac9b95d84a722cd6b04b3e5cad9a7ff6c8fa1286689c59ab4d95119129eeda79f01bbc0200bf1ad751d1a87c9ffa472c13d3d'
|
7
|
+
data.tar.gz: 4ee2fbb329910b44e010a3d259c22103b5f24cbc6529ce0fb1b8837baf3afadc4ee3108b8343dce0c3cfae03fc4a4fd61a18fcfeaf3409058c0af0a7af18bb1e
|
data/README.md
CHANGED
@@ -2,6 +2,8 @@
|
|
2
2
|
|
3
3
|
Ruby spike gem, to show interactions with the Pact Rust FFI methods.
|
4
4
|
|
5
|
+
Available on RubyGems - https://rubygems.org/gems/pact-ffi
|
6
|
+
|
5
7
|
## Installation
|
6
8
|
|
7
9
|
Add this line to your application's Gemfile:
|
@@ -12,22 +14,55 @@ gem 'pact-ffi'
|
|
12
14
|
|
13
15
|
And then execute:
|
14
16
|
|
17
|
+
|
15
18
|
bundle
|
16
19
|
|
20
|
+
|
17
21
|
Or install it yourself as:
|
22
|
+
|
18
23
|
|
19
24
|
gem install pact-ffi
|
20
25
|
|
26
|
+
|
21
27
|
## Usage
|
22
28
|
|
23
|
-
|
29
|
+
Simple
|
30
|
+
|
31
|
+
```ruby
|
32
|
+
require 'pact/ffi'
|
33
|
+
|
34
|
+
puts PactFfi.pactffi_version
|
35
|
+
```
|
36
|
+
|
24
37
|
|
25
|
-
|
38
|
+
- See [`lib/pact/ffi.rb`](lib/pact/ffi.rb) for all available methods
|
39
|
+
- See [`spec`](spec) folder to see the tests, with the library in use
|
40
|
+
- See [`examples/area_calculator`](examples/area_calculator) folder for an example using a pact-plugin, to test the canonical area_calculator example
|
41
|
+
- Test it out in your browser, with our Killercoda example! https://killercoda.com/safdotdev/course/safacoda/grpc_plugins_quick_start_ruby
|
42
|
+
|
43
|
+
|
44
|
+
## Supported Platforms
|
26
45
|
|
27
46
|
- Ruby
|
28
|
-
- This gem is compatible with
|
47
|
+
- This gem is compatible with all the rubies, and various platforms, it comes pre-packaged with the pact_ffi binary for each platform.
|
48
|
+
|
49
|
+
| OS | Ruby | Architecture | Supported | Ruby Platform |
|
50
|
+
| ------- | ------- | ------------ | --------- | --------- |
|
51
|
+
| OSX | 2.6 - 3.2 | x86_64 | ✅ | x86_64-darwin |
|
52
|
+
| OSX | 2.6 - 3.2 | aarch64 (arm)| ✅ | arm64-darwin |
|
53
|
+
| Linux | 2.6 - 3.2 | x86_64 | ✅ | x86_64-linux |
|
54
|
+
| Linux | 2.6 - 3.2 | aarch64 (arm)| ✅ | aarch64-linux |
|
55
|
+
| Windows | 2.6 - 3.2 | x86_64 | ✅ | x64-mingw-ucrt |
|
56
|
+
|
57
|
+
You can checkout the ci tests, to see all the architectures, platforms and examples tested
|
58
|
+
|
59
|
+
- GitHub Actions https://github.com/YOU54F/pact-ruby-ffi/actions
|
60
|
+
- Cirrus CI https://cirrus-ci.com/github/YOU54F/pact-ruby-ffi/main
|
61
|
+
|
62
|
+
_note_ - Alpine is currently not supported, but is on the list
|
29
63
|
|
30
64
|
- FFI libraries for your current platform - run `./script/download-libs.sh` to download
|
65
|
+
|
31
66
|
- If testing the protobuf plugin
|
32
67
|
- `2.7` for protobuf/grpc example
|
33
68
|
- See https://grpc.io/docs/languages/ruby/quickstart/ for steps
|
@@ -35,6 +70,8 @@ TODO: Write usage instructions here
|
|
35
70
|
- ruby-grpc is not currently, on m1 hardware for the `pact-protobuf-plugin` example
|
36
71
|
- Have the pact-protobuf plugin available
|
37
72
|
- Run `pact-plugin-cli -y install https://github.com/pactflow/pact-protobuf-plugin/releases/latest`
|
73
|
+
|
74
|
+
|
38
75
|
## Development
|
39
76
|
|
40
77
|
- run `bin/setup` or `bundle install` to install dependencies
|
Binary file
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# require 'pact-ffi/version'
|
2
|
+
require 'ffi'
|
3
|
+
require 'pact/detect_os'
|
4
|
+
|
5
|
+
module PactFfi
|
6
|
+
module AsyncMessageConsumer
|
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
|
+
|
12
|
+
attach_function :new, :pactffi_async_message_new, %i[], :pointer
|
13
|
+
attach_function :delete, :pactffi_async_message_delete, %i[pointer], :void
|
14
|
+
attach_function :get_contents, :pactffi_async_message_get_contents, %i[pointer], :pointer
|
15
|
+
attach_function :get_contents_str, :pactffi_async_message_get_contents_str, %i[pointer], :string
|
16
|
+
attach_function :set_contents_str, :pactffi_async_message_set_contents_str, %i[pointer string string], :void
|
17
|
+
attach_function :get_contents_length, :pactffi_async_message_get_contents_length, %i[pointer], :size_t
|
18
|
+
attach_function :get_contents_bin, :pactffi_async_message_get_contents_bin, %i[pointer], :pointer
|
19
|
+
attach_function :set_contents_bin, :pactffi_async_message_set_contents_bin, %i[pointer pointer size_t string], :void
|
20
|
+
attach_function :get_description, :pactffi_async_message_get_description, %i[pointer], :string
|
21
|
+
attach_function :set_description, :pactffi_async_message_set_description, %i[pointer string], :int32
|
22
|
+
attach_function :get_provider_state, :pactffi_async_message_get_provider_state, %i[pointer uint32_type], :pointer
|
23
|
+
attach_function :get_provider_state_iter, :pactffi_async_message_get_provider_state_iter, %i[pointer], :pointer
|
24
|
+
attach_function :new, :pactffi_new_async_message, %i[uint16 string], :uint32_type
|
25
|
+
attach_function :pact_interaction_as_asynchronous_message, :pactffi_pact_interaction_as_asynchronous_message, %i[pointer], :pointer
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# require 'pact-ffi/version'
|
2
|
+
require 'ffi'
|
3
|
+
require 'pact/detect_os'
|
4
|
+
|
5
|
+
module PactFfi
|
6
|
+
module HttpConsumer
|
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
|
+
|
12
|
+
attach_function :pact_interaction_iter_next, :pactffi_pact_interaction_iter_next, %i[pointer], :pointer
|
13
|
+
attach_function :pact_interaction_iter_delete, :pactffi_pact_interaction_iter_delete, %i[pointer], :void
|
14
|
+
attach_function :new_pact, :pactffi_new_pact, %i[string string], :uint16
|
15
|
+
attach_function :new_interaction, :pactffi_new_interaction, %i[uint16 string], :uint32_type
|
16
|
+
attach_function :upon_receiving, :pactffi_upon_receiving, %i[uint32_type string], :bool
|
17
|
+
attach_function :given, :pactffi_given, %i[uint32_type string], :bool
|
18
|
+
attach_function :given_with_param, :pactffi_given_with_param, %i[uint32_type string], :bool
|
19
|
+
attach_function :given_with_params, :pactffi_given_with_params, %i[uint32_t string string], :int32
|
20
|
+
attach_function :interaction_test_name, :pactffi_interaction_test_name, %i[uint32_type string], :uint32_type
|
21
|
+
attach_function :given_with_param, :pactffi_given_with_param, %i[uint32_type string string string], :bool
|
22
|
+
attach_function :with_request, :pactffi_with_request, %i[uint32_type string string], :bool
|
23
|
+
attach_function :with_query_parameter, :pactffi_with_query_parameter, %i[uint32_type string size_t string], :bool
|
24
|
+
attach_function :with_query_parameter_v2, :pactffi_with_query_parameter_v2, %i[uint32_type string size_t string],
|
25
|
+
:bool
|
26
|
+
attach_function :with_specification, :pactffi_with_specification, %i[uint16 int32], :bool
|
27
|
+
attach_function :with_pact_metadata, :pactffi_with_pact_metadata, %i[uint16 string string string], :bool
|
28
|
+
attach_function :with_header, :pactffi_with_header, %i[uint32_type int32 string size_t string], :bool
|
29
|
+
attach_function :with_header_v2, :pactffi_with_header_v2, %i[uint32_type int32 string size_t string], :bool
|
30
|
+
attach_function :response_status, :pactffi_response_status, %i[uint32_type uint16], :bool
|
31
|
+
attach_function :with_body, :pactffi_with_body, %i[uint32_type int32 string string], :bool
|
32
|
+
attach_function :with_binary_file, :pactffi_with_binary_file, %i[uint32_type int32 string pointer size_t], :bool
|
33
|
+
attach_function :with_multipart_file, :pactffi_with_multipart_file, %i[uint32_type int32 string string string],
|
34
|
+
:pointer
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# require 'pact-ffi/version'
|
2
|
+
require 'ffi'
|
3
|
+
require 'pact/detect_os'
|
4
|
+
|
5
|
+
module PactFfi
|
6
|
+
module Logger
|
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
|
+
|
12
|
+
LogLevel = Hash[
|
13
|
+
'OFF' => 0,
|
14
|
+
'ERROR' => 1,
|
15
|
+
'WARN' => 2,
|
16
|
+
'INFO' => 3,
|
17
|
+
'DEBUG' => 4,
|
18
|
+
'TRACE' => 5
|
19
|
+
]
|
20
|
+
|
21
|
+
attach_function :enable_ansi_support, :pactffi_enable_ansi_support, %i[], :void
|
22
|
+
attach_function :log_message, :pactffi_log_message, %i[string string string], :void
|
23
|
+
attach_function :get_error_message, :pactffi_get_error_message, %i[string int32], :int32
|
24
|
+
attach_function :log_to_stdout, :pactffi_log_to_stdout, %i[int32], :int32
|
25
|
+
attach_function :log_to_stderr, :pactffi_log_to_stderr, %i[int32], :int32
|
26
|
+
attach_function :log_to_file, :pactffi_log_to_file, %i[string int32], :int32
|
27
|
+
attach_function :log_to_buffer, :pactffi_log_to_buffer, %i[int32], :int32
|
28
|
+
attach_function :logger_init, :pactffi_logger_init, %i[], :void
|
29
|
+
attach_function :attach_sink, :pactffi_logger_attach_sink, %i[string int32], :int32
|
30
|
+
attach_function :logger_apply, :pactffi_logger_apply, %i[], :int32
|
31
|
+
attach_function :fetch_log_buffer, :pactffi_fetch_log_buffer, %i[string], :string
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,127 @@
|
|
1
|
+
# require 'pact-ffi/version'
|
2
|
+
require 'ffi'
|
3
|
+
require 'pact/detect_os'
|
4
|
+
|
5
|
+
module PactFfi
|
6
|
+
module MessageConsumer
|
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
|
+
|
12
|
+
FfiSpecificationVersion = Hash[
|
13
|
+
'SPECIFICATION_VERSION_UNKNOWN' => 0,
|
14
|
+
'SPECIFICATION_VERSION_V1' => 1,
|
15
|
+
'SPECIFICATION_VERSION_V1_1' => 2,
|
16
|
+
'SPECIFICATION_VERSION_V2' => 3,
|
17
|
+
'SPECIFICATION_VERSION_V3' => 4,
|
18
|
+
'SPECIFICATION_VERSION_V4' => 5,
|
19
|
+
]
|
20
|
+
FfiWritePactResponse = Hash[
|
21
|
+
'SUCCESS' => 0,
|
22
|
+
'GENERAL_PANIC' => 1,
|
23
|
+
'UNABLE_TO_WRITE_PACT_FILE' => 2,
|
24
|
+
'MOCK_SERVER_NOT_FOUND' => 3,
|
25
|
+
]
|
26
|
+
FfiWriteMessagePactResponse = Hash[
|
27
|
+
'SUCCESS' => 0,
|
28
|
+
'UNABLE_TO_WRITE_PACT_FILE' => 1,
|
29
|
+
'MESSAGE_HANDLE_INVALID' => 2,
|
30
|
+
'MOCK_SERVER_NOT_FOUND' => 3,
|
31
|
+
]
|
32
|
+
FfiConfigurePluginResponse = Hash[
|
33
|
+
'SUCCESS' => 0,
|
34
|
+
'GENERAL_PANIC' => 1,
|
35
|
+
'FAILED_TO_LOAD_PLUGIN' => 2,
|
36
|
+
'PACT_HANDLE_INVALID' => 3,
|
37
|
+
]
|
38
|
+
FfiPluginInteractionResponse = Hash[
|
39
|
+
'SUCCESS' => 0,
|
40
|
+
'A_GENERAL_PANIC_WAS_CAUGHT' => 1,
|
41
|
+
'MOCK_SERVER_HAS_ALREADY_BEEN_STARTED' => 2,
|
42
|
+
'INTERACTION_HANDLE_IS_INVALID' => 3,
|
43
|
+
'CONTENT_TYPE_IS_NOT_VALID' => 4,
|
44
|
+
'CONTENTS_JSON_IS_NOT_VALID_JSON' => 5,
|
45
|
+
'PLUGIN_RETURNED_AN_ERROR' => 6,
|
46
|
+
]
|
47
|
+
FfiInteractionPart = Hash[
|
48
|
+
'INTERACTION_PART_REQUEST' => 0,
|
49
|
+
'INTERACTION_PART_RESPONSE' => 1,
|
50
|
+
]
|
51
|
+
# /*
|
52
|
+
# -1 A null pointer was received
|
53
|
+
# -2 The pact JSON could not be parsed
|
54
|
+
# -3 The mock server could not be started
|
55
|
+
# -4 The method panicked
|
56
|
+
# -5 The address is not valid
|
57
|
+
# -6 Could not create the TLS configuration with the self-signed certificate
|
58
|
+
# */
|
59
|
+
FfiPluginCreateMockServerErrors = Hash[
|
60
|
+
'NULL_POINTER' => -1,
|
61
|
+
'JSON_PARSE_ERROR' => -2,
|
62
|
+
'MOCK_SERVER_START_FAIL' => -3,
|
63
|
+
'CORE_PANIC' => -4,
|
64
|
+
'ADDRESS_NOT_VALID' => -5,
|
65
|
+
'TLS_CONFIG' => -6,
|
66
|
+
]
|
67
|
+
|
68
|
+
FfiPluginFunctionResult = Hash[
|
69
|
+
'RESULT_OK' => 0,
|
70
|
+
'RESULT_FAILED' => 1,
|
71
|
+
]
|
72
|
+
|
73
|
+
attach_function :contents_get_contents_str, :pactffi_message_contents_get_contents_str, %i[pointer], :string
|
74
|
+
attach_function :contents_set_contents_str,, :pactffi_message_contents_set_contents_str, %i[pointer string string], :void
|
75
|
+
attach_function :contents_get_contents_length, :pactffi_message_contents_get_contents_length, %i[pointer], :size_t
|
76
|
+
attach_function :contents_get_contents_bin, :pactffi_message_contents_get_contents_bin, %i[pointer], :pointer
|
77
|
+
attach_function :contents_set_contents_bin, :pactffi_message_contents_set_contents_bin, %i[pointer pointer size_t string], :void
|
78
|
+
attach_function :contents_get_metadata_iter, :pactffi_message_contents_get_metadata_iter, %i[pointer], :pointer
|
79
|
+
attach_function :contents_get_matching_rule_iter, :pactffi_message_contents_get_matching_rule_iter, %i[pointer int32], :pointer
|
80
|
+
attach_function :message_contents_get_generators_iter, :pactffi_message_contents_get_generators_iter, %i[pointer int32], :pointer
|
81
|
+
attach_function :pact_interaction_as_message, :pactffi_pact_interaction_as_message, %i[pointer], :pointer
|
82
|
+
attach_function :new, :pactffi_message_new, %i[], :pointer
|
83
|
+
attach_function :new_from_json, :pactffi_message_new_from_json, %i[uint32_type string int32], :pointer
|
84
|
+
attach_function :new_from_body, :pactffi_message_new_from_body, %i[string string], :pointer
|
85
|
+
attach_function :delete, :pactffi_message_delete, %i[pointer], :void
|
86
|
+
attach_function :get_contents, :pactffi_message_get_contents, %i[pointer], :string
|
87
|
+
attach_function :set_contents, :pactffi_message_set_contents, %i[pointer string string], :void
|
88
|
+
attach_function :get_contents_length, :pactffi_message_get_contents_length, %i[pointer], :size_t
|
89
|
+
attach_function :get_contents_bin, :pactffi_message_get_contents_bin, %i[pointer], :pointer
|
90
|
+
attach_function :set_contents_bin, :pactffi_message_set_contents_bin, %i[pointer pointer size_t string], :void
|
91
|
+
attach_function :get_description, :pactffi_message_get_description, %i[pointer], :string
|
92
|
+
attach_function :set_description, :pactffi_message_set_description, %i[pointer string], :int32
|
93
|
+
attach_function :get_provider_state, :pactffi_message_get_provider_state, %i[pointer uint32_type], :pointer
|
94
|
+
attach_function :get_provider_state_iter, :pactffi_message_get_provider_state_iter, %i[pointer], :pointer
|
95
|
+
attach_function :find_metadata, :pactffi_message_find_metadata, %i[pointer string], :string
|
96
|
+
attach_function :insert_metadata, :pactffi_message_insert_metadata, %i[pointer string string], :int32
|
97
|
+
attach_function :metadata_iter_next, :pactffi_message_metadata_iter_next, %i[pointer], :pointer
|
98
|
+
attach_function :get_metadata_iter, :pactffi_message_get_metadata_iter, %i[pointer], :pointer
|
99
|
+
attach_function :metadata_iter_delete, :pactffi_message_metadata_iter_delete, %i[pointer], :void
|
100
|
+
attach_function :metadata_pair_delete, :pactffi_message_metadata_pair_delete, %i[pointer], :void
|
101
|
+
attach_function :new_from_json, :pactffi_message_pact_new_from_json, %i[string string], :pointer
|
102
|
+
attach_function :delete, :pactffi_message_pact_delete, %i[pointer], :void
|
103
|
+
attach_function :get_consumer, :pactffi_message_pact_get_consumer, %i[pointer], :pointer
|
104
|
+
attach_function :get_provider, :pactffi_message_pact_get_provider, %i[pointer], :pointer
|
105
|
+
attach_function :get_message_iter, :pactffi_message_pact_get_message_iter, %i[pointer], :pointer
|
106
|
+
attach_function :message_iter_next, :pactffi_message_pact_message_iter_next, %i[pointer], :pointer
|
107
|
+
attach_function :message_iter_delete, :pactffi_message_pact_message_iter_delete, %i[pointer], :void
|
108
|
+
attach_function :find_metadata, :pactffi_message_pact_find_metadata, %i[pointer string string], :string
|
109
|
+
attach_function :get_metadata_iter, :pactffi_message_pact_get_metadata_iter, %i[pointer], :pointer
|
110
|
+
attach_function :metadata_iter_next, :pactffi_message_pact_metadata_iter_next, %i[pointer], :pointer
|
111
|
+
attach_function :metadata_iter_delete, :pactffi_message_pact_metadata_iter_delete, %i[pointer], :void
|
112
|
+
attach_function :metadata_triple_delete, :pactffi_message_pact_metadata_triple_delete, %i[pointer], :void
|
113
|
+
attach_function :new_message_interaction, :pactffi_new_message_interaction, %i[uint16 string], :uint32_type
|
114
|
+
attach_function :new_message_pact, :pactffi_new_message_pact, %i[string string], :uint16
|
115
|
+
attach_function :new_message, :pactffi_new_message, %i[uint16 string], :uint32_type
|
116
|
+
attach_function :expects_to_receive, :pactffi_message_expects_to_receive, %i[uint32_type string], :void
|
117
|
+
attach_function :given, :pactffi_message_given, %i[uint32_type string], :void
|
118
|
+
attach_function :given_with_param, :pactffi_message_given_with_param, %i[uint32_type string string string], :void
|
119
|
+
attach_function :with_contents, :pactffi_message_with_contents, %i[uint32_type string pointer size_t], :void
|
120
|
+
attach_function :with_metadata, :pactffi_message_with_metadata, %i[uint32_type string string], :void
|
121
|
+
attach_function :rreify, :pactffi_message_reify, %i[uint32_type], :string
|
122
|
+
attach_function :write_message_pact_file, :pactffi_write_message_pact_file, %i[uint16 string bool], :int32
|
123
|
+
attach_function :with_message_pact_metadata, :pactffi_with_message_pact_metadata, %i[uint16 string string string], :void
|
124
|
+
attach_function :free_handle, :pactffi_free_message_pact_handle, %i[uint16], :uint32_type
|
125
|
+
attach_function :pact_handle_get_message_iter, :pactffi_pact_handle_get_message_iter, %i[uint16], :pointer
|
126
|
+
end
|
127
|
+
end
|
@@ -0,0 +1,83 @@
|
|
1
|
+
# require 'pact-ffi/version'
|
2
|
+
require 'ffi'
|
3
|
+
require 'pact/detect_os'
|
4
|
+
|
5
|
+
module PactFfi
|
6
|
+
module MockServer
|
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
|
+
|
12
|
+
FfiSpecificationVersion = Hash[
|
13
|
+
'SPECIFICATION_VERSION_UNKNOWN' => 0,
|
14
|
+
'SPECIFICATION_VERSION_V1' => 1,
|
15
|
+
'SPECIFICATION_VERSION_V1_1' => 2,
|
16
|
+
'SPECIFICATION_VERSION_V2' => 3,
|
17
|
+
'SPECIFICATION_VERSION_V3' => 4,
|
18
|
+
'SPECIFICATION_VERSION_V4' => 5,
|
19
|
+
]
|
20
|
+
FfiWritePactResponse = Hash[
|
21
|
+
'SUCCESS' => 0,
|
22
|
+
'GENERAL_PANIC' => 1,
|
23
|
+
'UNABLE_TO_WRITE_PACT_FILE' => 2,
|
24
|
+
'MOCK_SERVER_NOT_FOUND' => 3,
|
25
|
+
]
|
26
|
+
FfiWriteMessagePactResponse = Hash[
|
27
|
+
'SUCCESS' => 0,
|
28
|
+
'UNABLE_TO_WRITE_PACT_FILE' => 1,
|
29
|
+
'MESSAGE_HANDLE_INVALID' => 2,
|
30
|
+
'MOCK_SERVER_NOT_FOUND' => 3,
|
31
|
+
]
|
32
|
+
FfiConfigurePluginResponse = Hash[
|
33
|
+
'SUCCESS' => 0,
|
34
|
+
'GENERAL_PANIC' => 1,
|
35
|
+
'FAILED_TO_LOAD_PLUGIN' => 2,
|
36
|
+
'PACT_HANDLE_INVALID' => 3,
|
37
|
+
]
|
38
|
+
FfiPluginInteractionResponse = Hash[
|
39
|
+
'SUCCESS' => 0,
|
40
|
+
'A_GENERAL_PANIC_WAS_CAUGHT' => 1,
|
41
|
+
'MOCK_SERVER_HAS_ALREADY_BEEN_STARTED' => 2,
|
42
|
+
'INTERACTION_HANDLE_IS_INVALID' => 3,
|
43
|
+
'CONTENT_TYPE_IS_NOT_VALID' => 4,
|
44
|
+
'CONTENTS_JSON_IS_NOT_VALID_JSON' => 5,
|
45
|
+
'PLUGIN_RETURNED_AN_ERROR' => 6,
|
46
|
+
]
|
47
|
+
FfiInteractionPart = Hash[
|
48
|
+
'INTERACTION_PART_REQUEST' => 0,
|
49
|
+
'INTERACTION_PART_RESPONSE' => 1,
|
50
|
+
]
|
51
|
+
# /*
|
52
|
+
# -1 A null pointer was received
|
53
|
+
# -2 The pact JSON could not be parsed
|
54
|
+
# -3 The mock server could not be started
|
55
|
+
# -4 The method panicked
|
56
|
+
# -5 The address is not valid
|
57
|
+
# -6 Could not create the TLS configuration with the self-signed certificate
|
58
|
+
# */
|
59
|
+
FfiPluginCreateMockServerErrors = Hash[
|
60
|
+
'NULL_POINTER' => -1,
|
61
|
+
'JSON_PARSE_ERROR' => -2,
|
62
|
+
'MOCK_SERVER_START_FAIL' => -3,
|
63
|
+
'CORE_PANIC' => -4,
|
64
|
+
'ADDRESS_NOT_VALID' => -5,
|
65
|
+
'TLS_CONFIG' => -6,
|
66
|
+
]
|
67
|
+
|
68
|
+
FfiPluginFunctionResult = Hash[
|
69
|
+
'RESULT_OK' => 0,
|
70
|
+
'RESULT_FAILED' => 1,
|
71
|
+
]
|
72
|
+
|
73
|
+
attach_function :create, :pactffi_create_mock_server, %i[string string bool], :int32
|
74
|
+
attach_function :get_tls_cert, :pactffi_get_tls_ca_certificate, %i[], :string
|
75
|
+
attach_function :create_for_pact, :pactffi_create_mock_server_for_pact, %i[uint16 string bool], :int32
|
76
|
+
attach_function :create_for_transport, :pactffi_create_mock_server_for_transport, %i[uint16 string uint16 string string], :int32
|
77
|
+
attach_function :matched, :pactffi_mock_server_matched, %i[int32], :bool
|
78
|
+
attach_function :mismatches, :pactffi_mock_server_mismatches, %i[int32], :string
|
79
|
+
attach_function :cleanup, :pactffi_cleanup_mock_server, %i[int32], :bool
|
80
|
+
attach_function :write_pact_file, :pactffi_write_pact_file, %i[int32 string bool], :int32
|
81
|
+
attach_function :logs, :pactffi_mock_server_logs, %i[int32], :string
|
82
|
+
end
|
83
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# require 'pact-ffi/version'
|
2
|
+
require 'ffi'
|
3
|
+
require 'pact/detect_os'
|
4
|
+
|
5
|
+
module PactFfi
|
6
|
+
module PluginConsumer
|
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
|
+
|
12
|
+
# /*
|
13
|
+
# -1 A null pointer was received
|
14
|
+
# -2 The pact JSON could not be parsed
|
15
|
+
# -3 The mock server could not be started
|
16
|
+
# -4 The method panicked
|
17
|
+
# -5 The address is not valid
|
18
|
+
# -6 Could not create the TLS configuration with the self-signed certificate
|
19
|
+
# */
|
20
|
+
CreateMockServerErrors = Hash[
|
21
|
+
'NULL_POINTER' => -1,
|
22
|
+
'JSON_PARSE_ERROR' => -2,
|
23
|
+
'MOCK_SERVER_START_FAIL' => -3,
|
24
|
+
'CORE_PANIC' => -4,
|
25
|
+
'ADDRESS_NOT_VALID' => -5,
|
26
|
+
'TLS_CONFIG' => -6,
|
27
|
+
]
|
28
|
+
|
29
|
+
PluginFunctionResult = Hash[
|
30
|
+
'RESULT_OK' => 0,
|
31
|
+
'RESULT_FAILED' => 1,
|
32
|
+
]
|
33
|
+
|
34
|
+
attach_function :using_plugin, :pactffi_using_plugin, %i[uint16 string string], :uint32_type
|
35
|
+
attach_function :cleanup_plugins, :pactffi_cleanup_plugins, %i[uint16], :void
|
36
|
+
attach_function :interaction_contents, :pactffi_interaction_contents, %i[uint32_type int32 string string],
|
37
|
+
:uint32_type
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# require 'pact-ffi/version'
|
2
|
+
require 'ffi'
|
3
|
+
require 'pact/detect_os'
|
4
|
+
|
5
|
+
module PactFfi
|
6
|
+
module SyncHttpConsumer
|
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
|
+
|
12
|
+
attach_function :new, :pactffi_sync_http_new, %i[], :pointer
|
13
|
+
attach_function :delete, :pactffi_sync_http_delete, %i[pointer], :void
|
14
|
+
attach_function :get_request, :pactffi_sync_http_get_request, %i[pointer], :pointer
|
15
|
+
attach_function :get_request_contents, :pactffi_sync_http_get_request_contents, %i[pointer], :string
|
16
|
+
attach_function :set_request_contents, :pactffi_sync_http_set_request_contents, %i[pointer string string], :void
|
17
|
+
attach_function :get_request_contents_length, :pactffi_sync_http_get_request_contents_length, %i[pointer], :size_t
|
18
|
+
attach_function :get_request_contents_bin, :pactffi_sync_http_get_request_contents_bin, %i[pointer], :pointer
|
19
|
+
attach_function :set_request_contents_bin, :pactffi_sync_http_set_request_contents_bin, %i[pointer pointer size_t string], :void
|
20
|
+
attach_function :get_response, :pactffi_sync_http_get_response, %i[pointer], :pointer
|
21
|
+
attach_function :get_response_contents, :pactffi_sync_http_get_response_contents, %i[pointer], :string
|
22
|
+
attach_function :set_response_contents, :pactffi_sync_http_set_response_contents, %i[pointer string string], :void
|
23
|
+
attach_function :get_response_contents_length, :pactffi_sync_http_get_response_contents_length, %i[pointer], :size_t
|
24
|
+
attach_function :get_response_contents_bin, :pactffi_sync_http_get_response_contents_bin, %i[pointer], :pointer
|
25
|
+
attach_function :set_response_contents_bin, :pactffi_sync_http_set_response_contents_bin, %i[pointer pointer size_t string], :void
|
26
|
+
attach_function :get_description, :pactffi_sync_http_get_description, %i[pointer], :string
|
27
|
+
attach_function :set_description, :pactffi_sync_http_set_description, %i[pointer string], :int32
|
28
|
+
attach_function :get_provider_state, :pactffi_sync_http_get_provider_state, %i[pointer uint32_type], :pointer
|
29
|
+
attach_function :get_provider_state_iter, :pactffi_sync_http_get_provider_state_iter, %i[pointer], :pointer
|
30
|
+
attach_function :pact_interaction_as_synchronous_http, :pactffi_pact_interaction_as_synchronous_http, %i[pointer], :pointer
|
31
|
+
attach_function :iter_next, :pactffi_pact_sync_http_iter_next, %i[pointer], :pointer
|
32
|
+
attach_function :iter_delete, :pactffi_pact_sync_http_iter_delete, %i[pointer], :void
|
33
|
+
attach_function :pact_handle_get_sync_http_iter, :pactffi_pact_handle_get_sync_http_iter, %i[uint16], :pointer
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# require 'pact-ffi/version'
|
2
|
+
require 'ffi'
|
3
|
+
require 'pact/detect_os'
|
4
|
+
|
5
|
+
module PactFfi
|
6
|
+
module SyncMessageConsumer
|
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
|
+
|
12
|
+
attach_function :pact_interaction_as_synchronous_message, :pactffi_pact_interaction_as_synchronous_message, %i[pointer], :pointer
|
13
|
+
attach_function :iter_next, :pactffi_pact_sync_message_iter_next, %i[pointer], :pointer
|
14
|
+
attach_function :iter_delete, :pactffi_pact_sync_message_iter_delete, %i[pointer], :void
|
15
|
+
attach_function :new, :pactffi_sync_message_new, %i[], :pointer
|
16
|
+
attach_function :delete, :pactffi_sync_message_delete, %i[pointer], :void
|
17
|
+
attach_function :get_request_contents_str, :pactffi_sync_message_get_request_contents_str, %i[pointer], :string
|
18
|
+
attach_function :set_request_contents_str, :pactffi_sync_message_set_request_contents_str, %i[pointer string string], :void
|
19
|
+
attach_function :get_request_contents_length, :pactffi_sync_message_get_request_contents_length, %i[pointer], :size_t
|
20
|
+
attach_function :get_request_contents_bin, :pactffi_sync_message_get_request_contents_bin, %i[pointer], :pointer
|
21
|
+
attach_function :set_request_contents_bin, :pactffi_sync_message_set_request_contents_bin, %i[pointer pointer size_t string], :void
|
22
|
+
attach_function :get_request_contents, :pactffi_sync_message_get_request_contents, %i[pointer], :pointer
|
23
|
+
attach_function :get_number_responses, :pactffi_sync_message_get_number_responses, %i[pointer], :size_t
|
24
|
+
attach_function :get_response_contents_str, :pactffi_sync_message_get_response_contents_str, %i[pointer size_t], :string
|
25
|
+
attach_function :set_response_contents_str, :pactffi_sync_message_set_response_contents_str, %i[pointer size_t string string], :void
|
26
|
+
attach_function :get_response_contents_length, :pactffi_sync_message_get_response_contents_length, %i[pointer size_t], :size_t
|
27
|
+
attach_function :get_response_contents_bin, :pactffi_sync_message_get_response_contents_bin, %i[pointer size_t], :pointer
|
28
|
+
attach_function :set_response_contents_bin, :pactffi_sync_message_set_response_contents_bin, %i[pointer size_t pointer size_t string], :void
|
29
|
+
attach_function :get_response_contents, :pactffi_sync_message_get_response_contents, %i[pointer size_t], :pointer
|
30
|
+
attach_function :get_description, :pactffi_sync_message_get_description, %i[pointer], :string
|
31
|
+
attach_function :set_description, :pactffi_sync_message_set_description, %i[pointer string], :int32
|
32
|
+
attach_function :get_provider_state, :pactffi_sync_message_get_provider_state, %i[pointer uint32_type], :pointer
|
33
|
+
attach_function :get_provider_state_iter, :pactffi_sync_message_get_provider_state_iter, %i[pointer], :pointer
|
34
|
+
attach_function :new_interaction, :pactffi_new_sync_message_interaction, %i[uint16 string], :uint32_type
|
35
|
+
attach_function :pact_handle_get_sync_message_iter, :pactffi_pact_handle_get_sync_message_iter, %i[uint16], :pointer
|
36
|
+
end
|
37
|
+
end
|