pact-ffi 0.0.2-arm64-darwin → 0.0.3-arm64-darwin
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|