@pact-foundation/pact-core 13.4.1-beta.15 → 13.4.1-beta.18

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.
package/build/Makefile CHANGED
@@ -336,8 +336,8 @@ ifeq ($(strip $(foreach prefix,$(NO_LOAD),\
336
336
  endif
337
337
 
338
338
  quiet_cmd_regen_makefile = ACTION Regenerating $@
339
- cmd_regen_makefile = cd $(srcdir); /Users/matthewfellows/.nvm/versions/node/v14.15.5/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py -fmake --ignore-environment "-Dlibrary=shared_library" "-Dvisibility=default" "-Dnode_root_dir=/Users/matthewfellows/Library/Caches/node-gyp/14.15.5" "-Dnode_gyp_dir=/Users/matthewfellows/.nvm/versions/node/v14.15.5/lib/node_modules/npm/node_modules/node-gyp" "-Dnode_lib_file=/Users/matthewfellows/Library/Caches/node-gyp/14.15.5/<(target_arch)/node.lib" "-Dmodule_root_dir=/Users/matthewfellows/development/public/pact-js-core" "-Dnode_engine=v8" "--depth=." "-Goutput_dir=." "--generator-output=build" -I/Users/matthewfellows/development/public/pact-js-core/build/config.gypi -I/Users/matthewfellows/.nvm/versions/node/v14.15.5/lib/node_modules/npm/node_modules/node-gyp/addon.gypi -I/Users/matthewfellows/Library/Caches/node-gyp/14.15.5/include/node/common.gypi "--toplevel-dir=." binding.gyp
340
- Makefile: $(srcdir)/../../../Library/Caches/node-gyp/14.15.5/include/node/common.gypi $(srcdir)/../../../.nvm/versions/node/v14.15.5/lib/node_modules/npm/node_modules/node-gyp/addon.gypi $(srcdir)/build/config.gypi $(srcdir)/binding.gyp
339
+ cmd_regen_makefile = cd $(srcdir); /Users/matthewfellows/.nvm/versions/node/v12.18.0/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py -fmake --ignore-environment "-Dlibrary=shared_library" "-Dvisibility=default" "-Dnode_root_dir=/Users/matthewfellows/Library/Caches/node-gyp/12.18.0" "-Dnode_gyp_dir=/Users/matthewfellows/.nvm/versions/node/v12.18.0/lib/node_modules/npm/node_modules/node-gyp" "-Dnode_lib_file=/Users/matthewfellows/Library/Caches/node-gyp/12.18.0/<(target_arch)/node.lib" "-Dmodule_root_dir=/Users/matthewfellows/development/public/pact-js-core" "-Dnode_engine=v8" "--depth=." "-Goutput_dir=." "--generator-output=build" -I/Users/matthewfellows/development/public/pact-js-core/build/config.gypi -I/Users/matthewfellows/.nvm/versions/node/v12.18.0/lib/node_modules/npm/node_modules/node-gyp/addon.gypi -I/Users/matthewfellows/Library/Caches/node-gyp/12.18.0/include/node/common.gypi "--toplevel-dir=." binding.gyp
340
+ Makefile: $(srcdir)/../../../Library/Caches/node-gyp/12.18.0/include/node/common.gypi $(srcdir)/build/config.gypi $(srcdir)/binding.gyp $(srcdir)/../../../.nvm/versions/node/v12.18.0/lib/node_modules/npm/node_modules/node-gyp/addon.gypi
341
341
  $(call do_cmd,regen_makefile)
342
342
 
343
343
  # "all" is a concatenation of the "all" targets from all the included
@@ -51,13 +51,13 @@ CFLAGS_OBJC_Debug :=
51
51
  CFLAGS_OBJCC_Debug :=
52
52
 
53
53
  INCS_Debug := \
54
- -I/Users/matthewfellows/Library/Caches/node-gyp/14.15.5/include/node \
55
- -I/Users/matthewfellows/Library/Caches/node-gyp/14.15.5/src \
56
- -I/Users/matthewfellows/Library/Caches/node-gyp/14.15.5/deps/openssl/config \
57
- -I/Users/matthewfellows/Library/Caches/node-gyp/14.15.5/deps/openssl/openssl/include \
58
- -I/Users/matthewfellows/Library/Caches/node-gyp/14.15.5/deps/uv/include \
59
- -I/Users/matthewfellows/Library/Caches/node-gyp/14.15.5/deps/zlib \
60
- -I/Users/matthewfellows/Library/Caches/node-gyp/14.15.5/deps/v8/include \
54
+ -I/Users/matthewfellows/Library/Caches/node-gyp/12.18.0/include/node \
55
+ -I/Users/matthewfellows/Library/Caches/node-gyp/12.18.0/src \
56
+ -I/Users/matthewfellows/Library/Caches/node-gyp/12.18.0/deps/openssl/config \
57
+ -I/Users/matthewfellows/Library/Caches/node-gyp/12.18.0/deps/openssl/openssl/include \
58
+ -I/Users/matthewfellows/Library/Caches/node-gyp/12.18.0/deps/uv/include \
59
+ -I/Users/matthewfellows/Library/Caches/node-gyp/12.18.0/deps/zlib \
60
+ -I/Users/matthewfellows/Library/Caches/node-gyp/12.18.0/deps/v8/include \
61
61
  -I$(srcdir)/node_modules/node-addon-api \
62
62
  -I/Users/matthewfellows/development/public/pact-js-core/native
63
63
 
@@ -107,13 +107,13 @@ CFLAGS_OBJC_Release :=
107
107
  CFLAGS_OBJCC_Release :=
108
108
 
109
109
  INCS_Release := \
110
- -I/Users/matthewfellows/Library/Caches/node-gyp/14.15.5/include/node \
111
- -I/Users/matthewfellows/Library/Caches/node-gyp/14.15.5/src \
112
- -I/Users/matthewfellows/Library/Caches/node-gyp/14.15.5/deps/openssl/config \
113
- -I/Users/matthewfellows/Library/Caches/node-gyp/14.15.5/deps/openssl/openssl/include \
114
- -I/Users/matthewfellows/Library/Caches/node-gyp/14.15.5/deps/uv/include \
115
- -I/Users/matthewfellows/Library/Caches/node-gyp/14.15.5/deps/zlib \
116
- -I/Users/matthewfellows/Library/Caches/node-gyp/14.15.5/deps/v8/include \
110
+ -I/Users/matthewfellows/Library/Caches/node-gyp/12.18.0/include/node \
111
+ -I/Users/matthewfellows/Library/Caches/node-gyp/12.18.0/src \
112
+ -I/Users/matthewfellows/Library/Caches/node-gyp/12.18.0/deps/openssl/config \
113
+ -I/Users/matthewfellows/Library/Caches/node-gyp/12.18.0/deps/openssl/openssl/include \
114
+ -I/Users/matthewfellows/Library/Caches/node-gyp/12.18.0/deps/uv/include \
115
+ -I/Users/matthewfellows/Library/Caches/node-gyp/12.18.0/deps/zlib \
116
+ -I/Users/matthewfellows/Library/Caches/node-gyp/12.18.0/deps/v8/include \
117
117
  -I$(srcdir)/node_modules/node-addon-api \
118
118
  -I/Users/matthewfellows/development/public/pact-js-core/native
119
119
 
Binary file
File without changes
@@ -1,5 +1,5 @@
1
1
  #include <napi.h>
2
- #include "pact.h"
2
+ #include "pact-cpp.h"
3
3
 
4
4
  using namespace Napi;
5
5
 
package/native/ffi.cc CHANGED
@@ -1,5 +1,5 @@
1
1
  #include <napi.h>
2
- #include "pact.h"
2
+ #include "pact-cpp.h"
3
3
 
4
4
  using namespace Napi;
5
5
 
@@ -281,7 +281,7 @@ const char *pactffi_version();
281
281
  *
282
282
  * # Safety
283
283
  *
284
- * Exported functions are inherently unsafe.
284
+ * log_env_var must be a valid NULL terminated UTF-8 string.
285
285
  */
286
286
  void pactffi_init(const char *log_env_var);
287
287
 
@@ -294,6 +294,15 @@ void pactffi_init(const char *log_env_var);
294
294
  */
295
295
  void pactffi_init_with_log_level(const char *level);
296
296
 
297
+ /**
298
+ * Enable ANSI coloured output on Windows. On non-Windows platforms, this function is a no-op.
299
+ *
300
+ * # Safety
301
+ *
302
+ * This function is safe.
303
+ */
304
+ void pactffi_enable_ansi_support();
305
+
297
306
  /**
298
307
  * Log using the shared core logging facility.
299
308
  *
@@ -1946,7 +1955,7 @@ VerifierHandle *pactffi_verifier_new();
1946
1955
  *
1947
1956
  * Returns NULL on error.
1948
1957
  */
1949
- VerifierHandle *pactffi_verifier_new_for_application(const char *name, const char *scheme);
1958
+ VerifierHandle *pactffi_verifier_new_for_application(const char *name, const char *version);
1950
1959
 
1951
1960
  /**
1952
1961
  * Shutdown the verifier and release all resources
@@ -2006,9 +2015,8 @@ void pactffi_verifier_set_provider_state(VerifierHandle *handle,
2006
2015
  unsigned char body);
2007
2016
 
2008
2017
  /**
2009
- * Set the verification options for the Pact verifier.
2018
+ * Set the options used by the verifier when calling the provider
2010
2019
  *
2011
- * `publish` is a boolean value. Set it to greater than zero to turn the option on.
2012
2020
  * `disable_ssl_verification` is a boolean value. Set it to greater than zero to turn the option on.
2013
2021
  *
2014
2022
  * # Safety
@@ -2018,13 +2026,33 @@ void pactffi_verifier_set_provider_state(VerifierHandle *handle,
2018
2026
  *
2019
2027
  */
2020
2028
  int pactffi_verifier_set_verification_options(VerifierHandle *handle,
2021
- unsigned char publish,
2022
- const char *provider_version,
2023
- const char *build_url,
2024
2029
  unsigned char disable_ssl_verification,
2025
- unsigned long request_timeout,
2026
- const char *const *provider_tags,
2027
- unsigned short provider_tags_len);
2030
+ unsigned long request_timeout);
2031
+
2032
+ /**
2033
+ * Set the options used when publishing verification results to the Pact Broker
2034
+ *
2035
+ * # Args
2036
+ *
2037
+ * - `handle` - The pact verifier handle to update
2038
+ * - `provider_version` - Version of the provider to publish
2039
+ * - `build_url` - URL to the build which ran the verification
2040
+ * - `provider_tags` - Collection of tags for the provider
2041
+ * - `provider_tags_len` - Number of provider tags supplied
2042
+ * - `provider_branch` - Name of the branch used for verification
2043
+ *
2044
+ * # Safety
2045
+ *
2046
+ * All string fields must contain valid UTF-8. Invalid UTF-8
2047
+ * will be replaced with U+FFFD REPLACEMENT CHARACTER.
2048
+ *
2049
+ */
2050
+ int pactffi_verifier_set_publish_options(VerifierHandle *handle,
2051
+ const char *provider_version,
2052
+ const char *build_url,
2053
+ const char *const *provider_tags,
2054
+ unsigned short provider_tags_len,
2055
+ const char *provider_branch);
2028
2056
 
2029
2057
  /**
2030
2058
  * Set the consumer filters for the Pact verifier.
@@ -2095,7 +2123,6 @@ void pactffi_verifier_url_source(VerifierHandle *handle,
2095
2123
  */
2096
2124
  void pactffi_verifier_broker_source(VerifierHandle *handle,
2097
2125
  const char *url,
2098
- const char *provider_name,
2099
2126
  const char *username,
2100
2127
  const char *password,
2101
2128
  const char *token);
@@ -2123,7 +2150,6 @@ void pactffi_verifier_broker_source(VerifierHandle *handle,
2123
2150
  */
2124
2151
  void pactffi_verifier_broker_source_with_selectors(VerifierHandle *handle,
2125
2152
  const char *url,
2126
- const char *provider_name,
2127
2153
  const char *username,
2128
2154
  const char *password,
2129
2155
  const char *token,
@@ -2215,6 +2241,25 @@ const char *pactffi_verifier_logs(const VerifierHandle *handle);
2215
2241
  */
2216
2242
  const char *pactffi_verifier_logs_for_provider(const char *provider_name);
2217
2243
 
2244
+ /**
2245
+ * Extracts the standard output for the verification run. The returned string will need to be
2246
+ * freed with the `free_string` function call to avoid leaking memory.
2247
+ *
2248
+ * * `strip_ansi` - This parameter controls ANSI escape codes. Setting it to a non-zero value
2249
+ * will cause the ANSI control codes to be stripped from the output.
2250
+ *
2251
+ * Will return a NULL pointer if the handle is invalid.
2252
+ */
2253
+ const char *pactffi_verifier_output(const VerifierHandle *handle, unsigned char strip_ansi);
2254
+
2255
+ /**
2256
+ * Extracts the verification result as a JSON document. The returned string will need to be
2257
+ * freed with the `free_string` function call to avoid leaking memory.
2258
+ *
2259
+ * Will return a NULL pointer if the handle is invalid.
2260
+ */
2261
+ const char *pactffi_verifier_json(const VerifierHandle *handle);
2262
+
2218
2263
  /**
2219
2264
  * Add a plugin to be used by the test. The plugin needs to be installed correctly for this
2220
2265
  * function to work.
package/native/plugin.cc CHANGED
@@ -1,5 +1,5 @@
1
1
  #include <napi.h>
2
- #include "pact.h"
2
+ #include "pact-cpp.h"
3
3
 
4
4
  using namespace Napi;
5
5
 
@@ -1,8 +1,7 @@
1
1
  #include <napi.h>
2
2
  #include <map>
3
- #include "pact.h"
3
+ #include "pact-cpp.h"
4
4
  #include <vector>
5
- #include <iostream>
6
5
 
7
6
  using namespace Napi;
8
7
 
@@ -13,7 +12,6 @@ std::map<int, VerifierHandle*> handles;
13
12
  std::vector<const char*> cVec;
14
13
  for(size_t i = 0; i < arr.Length(); i++) {
15
14
  std::string tag = arr.Get(i).As<Napi::String>().Utf8Value();
16
- std::cout << "element: " << tag.c_str() << "\n";
17
15
  char *cstr = strdup(tag.c_str());
18
16
  cVec.push_back(cstr);
19
17
  }
@@ -109,8 +107,6 @@ Napi::Value PactffiVerifierNewForApplication(const Napi::CallbackInfo& info) {
109
107
  Napi::Value PactffiVerifierExecute(const Napi::CallbackInfo& info) {
110
108
  Napi::Env env = info.Env();
111
109
 
112
- std::cout << "Pactffiverifierexecute \n";
113
-
114
110
  if (info.Length() < 1) {
115
111
  throw Napi::Error::New(env, "PactffiInit(arguments) received < 1 argument");
116
112
  }
@@ -119,18 +115,13 @@ Napi::Value PactffiVerifierExecute(const Napi::CallbackInfo& info) {
119
115
  throw Napi::Error::New(env, "PactffiInit(arguments) expected a number");
120
116
  }
121
117
 
122
- std::cout << "Pactffiverifierexecute 1 \n";
123
118
  // Extract arguments to verifier
124
119
  size_t handle = info[0].As<Napi::Number>().Uint32Value();
125
- std::cout << "Pactffiverifierexecute 2 \n";
126
120
 
127
121
  // Execute the function asynchronously
128
122
  Napi::Function callback = info[1].As<Napi::Function>();
129
- std::cout << "Pactffiverifierexecute 3 \n";
130
123
  VerificationWorker* verificationWorker = new VerificationWorker(callback, handle);
131
- std::cout << "Pactffiverifierexecute 4 \n";
132
124
  verificationWorker->Queue();
133
- std::cout << "Pactffiverifierexecute 5 \n";
134
125
 
135
126
  return info.Env().Undefined();
136
127
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pact-foundation/pact-core",
3
- "version": "13.4.1-beta.15",
3
+ "version": "13.4.1-beta.18",
4
4
  "description": "Core of @pact-foundation/pact. You almost certainly don't want to depend on this directly.",
5
5
  "main": "src/index.js",
6
6
  "homepage": "https://github.com/pact-foundation/pact-js-core#readme",
@@ -69,7 +69,7 @@ export declare type Ffi = {
69
69
  pactffiVerifierExecute(handle: FfiVerifierHandle, callback: (e: Error, res: number) => void): number;
70
70
  pactffiVerifierShutdown(handle: FfiVerifierHandle): void;
71
71
  pactffiVerifierSetProviderInfo(handle: FfiVerifierHandle, providerName: string, scheme: string, host: string, port: number, path: string): void;
72
- pactffiVerifierSetFilterInfo(handle: FfiVerifierHandle, description: string, filterState: string, filterNoState: boolean): void;
72
+ pactffiVerifierSetFilterInfo(handle: FfiVerifierHandle, description: string, state: string, noState: boolean): void;
73
73
  pactffiVerifierSetProviderState(handle: FfiVerifierHandle, url: string, teardown: boolean, body: boolean): void;
74
74
  pactffiVerifierSetVerificationOptions(handle: FfiVerifierHandle, disableSslVerification: boolean, requestTimeout: number): void;
75
75
  pactffiVerifierSetPublishOptions(handle: FfiVerifierHandle, providerVersion: string, buildUrl: string, providerTags: string[], providerBranch: string): void;
@@ -77,5 +77,5 @@ export declare type Ffi = {
77
77
  pactffiVerifierAddFileSource(handle: FfiVerifierHandle, file: string): void;
78
78
  pactffiVerifierAddDirectorySource(handle: FfiVerifierHandle, dir: string): void;
79
79
  pactffiVerifierUrlSource(handle: FfiVerifierHandle, url: string, username: string, password: string, token: string): void;
80
- pactffiVerifierBrokerSourceWithSelectors(handle: FfiVerifierHandle, url: string, providerName: string, username: string, password: string, token: string, enablePending: boolean, includeWipPactsSince: string, providerTags: string[], providerBranch: string, consumerVersionSelectors: string[], consumerVersionTags: string[]): void;
80
+ pactffiVerifierBrokerSourceWithSelectors(handle: FfiVerifierHandle, url: string, username: string, password: string, token: string, enablePending: boolean, includeWipPactsSince: string, providerTags: string[], providerBranch: string, consumerVersionSelectors: string[], consumerVersionTags: string[]): void;
81
81
  };
@@ -1,40 +1,4 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
- function verb(n) { return function (v) { return step([n, v]); }; }
15
- function step(op) {
16
- if (f) throw new TypeError("Generator is already executing.");
17
- while (_) try {
18
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
- if (y = 0, t) op = [op[0] & 2, t.value];
20
- switch (op[0]) {
21
- case 0: case 1: t = op; break;
22
- case 4: _.label++; return { value: op[1], done: false };
23
- case 5: _.label++; y = op[1]; op = [0]; continue;
24
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
- default:
26
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
- if (t[2]) _.ops.pop();
31
- _.trys.pop(); continue;
32
- }
33
- op = body.call(thisArg, _);
34
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
- }
37
- };
38
2
  Object.defineProperty(exports, "__esModule", { value: true });
39
3
  exports.verify = void 0;
40
4
  var logger_1 = require("../logger");
@@ -57,13 +21,19 @@ var verify = function (opts) {
57
21
  if (opts.providerStatesSetupUrl) {
58
22
  ffi.pactffiVerifierSetProviderState(handle, opts.providerStatesSetupUrl, opts.providerStatesSetupTeardown || true, opts.providerStatesSetupBody || true);
59
23
  }
24
+ var filterDescription = process.env.PACT_DESCRIPTION || '';
25
+ var filterState = process.env.PACT_PROVIDER_STATE || '';
26
+ var filterNoState = process.env.PACT_PROVIDER_NO_STATE ? true : false;
27
+ ffi.pactffiVerifierSetFilterInfo(handle, filterDescription, filterState, filterNoState);
60
28
  if (opts.pactUrls) {
61
29
  opts.pactUrls.forEach(function (file) {
62
30
  logger_1.default.debug("checking source type of given pactUrl: " + file);
63
31
  try {
64
- new url_1.URL(file);
65
- logger_1.default.debug("adding " + file + " as a Url source");
66
- ffi.pactffiVerifierUrlSource(handle, file, opts.pactBrokerUsername || '', opts.pactBrokerPassword || '', opts.pactBrokerToken || '');
32
+ var u = new url_1.URL(file);
33
+ if (u.hostname) {
34
+ logger_1.default.debug("adding " + file + " as a Url source");
35
+ ffi.pactffiVerifierUrlSource(handle, file, opts.pactBrokerUsername || '', opts.pactBrokerPassword || '', opts.pactBrokerToken || '');
36
+ }
67
37
  }
68
38
  catch (_a) {
69
39
  logger_1.default.debug(file + " is not a URI");
@@ -89,63 +59,54 @@ var verify = function (opts) {
89
59
  }
90
60
  if (opts.publishVerificationResult ||
91
61
  opts.providerVersion ||
92
- opts.publishVerificationResult ||
93
62
  opts.buildUrl ||
94
63
  opts.disableSslVerification ||
95
64
  opts.timeout ||
96
65
  opts.providerVersionTags) {
97
66
  ffi.pactffiVerifierSetPublishOptions(handle, opts.providerVersion || '', opts.buildUrl || '', opts.providerVersionTags || [], opts.providerBranch || '');
98
67
  }
99
- if (opts.pactBrokerUrl && opts.provider) {
100
- ffi.pactffiVerifierBrokerSourceWithSelectors(handle, opts.pactBrokerUrl, opts.provider, opts.pactBrokerUsername || '', opts.pactBrokerPassword || '', opts.pactBrokerToken || '', opts.enablePending || false, opts.includeWipPactsSince || '', opts.providerVersionTags || [], opts.providerBranch || '', opts.consumerVersionSelectors
68
+ var brokerUrl = opts.pactBrokerUrl || process.env.PACT_BROKER_BASE_URL;
69
+ if (brokerUrl && opts.provider) {
70
+ ffi.pactffiVerifierBrokerSourceWithSelectors(handle, brokerUrl, opts.pactBrokerUsername || process.env.PACT_BROKER_USERNAME || '', opts.pactBrokerPassword || process.env.PACT_BROKER_PASSWORD || '', opts.pactBrokerToken || process.env.PACT_BROKER_TOKEN || '', opts.enablePending || false, opts.includeWipPactsSince || '', opts.providerVersionTags || [], opts.providerBranch || '', opts.consumerVersionSelectors
101
71
  ? objArrayToStringArray(opts.consumerVersionSelectors)
102
72
  : [], opts.consumerVersionTags || []);
103
73
  }
104
74
  return new Promise(function (resolve, reject) {
105
- ffi.pactffiVerifierExecute(handle, function (err, res) { return __awaiter(void 0, void 0, void 0, function () {
106
- return __generator(this, function (_a) {
107
- switch (_a.label) {
108
- case 0:
109
- logger_1.default.debug("shutting down verifier with handle " + handle);
110
- return [4, new Promise(function (f) { return setTimeout(f, 1000); })];
111
- case 1:
112
- _a.sent();
113
- ffi.pactffiVerifierShutdown(handle);
114
- logger_1.default.debug("response from verifier: " + err + ", " + res);
115
- if (err) {
116
- if (typeof err === 'string') {
117
- logger_1.default.error(err);
118
- }
119
- else if (err.message) {
120
- logger_1.default.error(err.message);
121
- }
122
- logger_1.default.pactCrash('The underlying pact core returned an error through the ffi interface');
123
- reject(err);
124
- }
125
- else {
126
- switch (res) {
127
- case types_1.VERIFY_PROVIDER_RESPONSE.VERIFICATION_SUCCESSFUL:
128
- logger_1.default.info('Verification successful');
129
- resolve("finished: " + res);
130
- break;
131
- case types_1.VERIFY_PROVIDER_RESPONSE.VERIFICATION_FAILED:
132
- logger_1.default.error('Verification unsuccessful');
133
- reject(new Error('Verfication failed'));
134
- break;
135
- case types_1.VERIFY_PROVIDER_RESPONSE.INVALID_ARGUMENTS:
136
- logger_1.default.pactCrash('The underlying pact core was invoked incorrectly.');
137
- reject(new Error('Verification was unable to run'));
138
- break;
139
- default:
140
- logger_1.default.pactCrash('The underlying pact core crashed in an unexpected way.');
141
- reject(new Error('Pact core crashed'));
142
- break;
143
- }
144
- }
145
- return [2];
75
+ ffi.pactffiVerifierExecute(handle, function (err, res) {
76
+ logger_1.default.debug("shutting down verifier with handle " + handle);
77
+ ffi.pactffiVerifierShutdown(handle);
78
+ logger_1.default.debug("response from verifier: " + err + ", " + res);
79
+ if (err) {
80
+ if (typeof err === 'string') {
81
+ logger_1.default.error(err);
146
82
  }
147
- });
148
- }); });
83
+ else if (err.message) {
84
+ logger_1.default.error(err.message);
85
+ }
86
+ logger_1.default.pactCrash('The underlying pact core returned an error through the ffi interface');
87
+ reject(err);
88
+ }
89
+ else {
90
+ switch (res) {
91
+ case types_1.VERIFY_PROVIDER_RESPONSE.VERIFICATION_SUCCESSFUL:
92
+ logger_1.default.info('Verification successful');
93
+ resolve("finished: " + res);
94
+ break;
95
+ case types_1.VERIFY_PROVIDER_RESPONSE.VERIFICATION_FAILED:
96
+ logger_1.default.error('Verification unsuccessful');
97
+ reject(new Error('Verfication failed'));
98
+ break;
99
+ case types_1.VERIFY_PROVIDER_RESPONSE.INVALID_ARGUMENTS:
100
+ logger_1.default.pactCrash('The underlying pact core was invoked incorrectly.');
101
+ reject(new Error('Verification was unable to run'));
102
+ break;
103
+ default:
104
+ logger_1.default.pactCrash('The underlying pact core crashed in an unexpected way.');
105
+ reject(new Error('Pact core crashed'));
106
+ break;
107
+ }
108
+ }
109
+ });
149
110
  });
150
111
  };
151
112
  exports.verify = verify;
@@ -1 +1 @@
1
- {"version":3,"file":"nativeVerifier.js","sourceRoot":"","sources":["nativeVerifier.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nativeVerifier.js","sourceRoot":"","sources":["nativeVerifier.ts"],"names":[],"mappings":"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"}
package/test.js CHANGED
@@ -33,7 +33,7 @@ Pact.pactffiVerifierBrokerSourceWithSelectors(
33
33
  '',
34
34
  '',
35
35
  'AtDElACja4sv6l_RtI-bAw',
36
- true,
36
+ false,
37
37
  '',
38
38
  ['dev', 'prod'],
39
39
  'main',
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -1,749 +0,0 @@
1
- #include <napi.h>
2
- #include <map>
3
- #include "pact.h"
4
-
5
- using namespace Napi;
6
-
7
- // To save passing the struct around. Remove once the rust types are made opaque
8
- std::map<int, VerifierHandle*> handles;
9
-
10
- // https://stackoverflow.com/questions/6701816/how-to-use-a-stdvector-in-a-c-function
11
- // TODO: maybe just need to pass the vector in?
12
-
13
-
14
- &// char** NapiArrayToCStringVector(Napi::Array arr) [0]{
15
- // // const char *cArr[arr.Length()];
16
- // const char *cArr[10];
17
- // // for(int i = 0; i < arr.Length(); i++) {
18
- // // std::string tag = arr[i].As<Napi::String>().Utf8Value();
19
- // // cArr[i] = tag.c_str();
20
- // // }
21
-
22
- // return cArr
23
- // }
24
-
25
- class VerificationWorker : public AsyncWorker {
26
- public:
27
- VerificationWorker(Function& callback, size_t handle)
28
- : AsyncWorker(callback), handle(handle) {}
29
-
30
- ~VerificationWorker() {}
31
-
32
- // This code will be executed on the worker thread
33
- void Execute() override {
34
- result = pactffi_verifier_execute(handles[handle]);
35
- }
36
-
37
- void OnOK() override {
38
- HandleScope scope(Env());
39
- Callback().Call({Env().Null(), Number::New(Env(), result)});
40
- }
41
-
42
- private:
43
- int result;
44
- int handle;
45
-
46
- };
47
-
48
- /**
49
- * External interface to verifier a provider
50
- *
51
- * * `args` - the same as the CLI interface, except newline delimited
52
- *
53
- * # Errors
54
- *
55
- * Errors are returned as non-zero numeric values.
56
- *
57
- * | Error | Description |
58
- * |-------|-------------|
59
- * | 1 | The verification process failed, see output for errors |
60
- * | 2 | A null pointer was received |
61
- * | 3 | The method panicked |
62
- * | 4 | Invalid arguments were provided to the verification process |
63
- *
64
- * # Safety
65
- *
66
- * Exported functions are inherently unsafe. Deal.
67
- *
68
- * C interface:
69
- *
70
- * int32_t pactffi_verify(const char *args);
71
- */
72
- Napi::Value PactffiVerifierExecute(const Napi::CallbackInfo& info) {
73
- Napi::Env env = info.Env();
74
- if (info.Length() < 1) {
75
- throw Napi::Error::New(env, "PactffiInit(arguments) received < 1 argument");
76
- }
77
-
78
- if (!info[0].IsNumber()) {
79
- throw Napi::Error::New(env, "PactffiInit(arguments) expected a number");
80
- }
81
-
82
- // Extract arguments to verifier
83
- size_t handle = info[0].As<Napi::Number>().Uint32Value();
84
-
85
- // Execute the function asynchronously
86
- Napi::Function callback = info[1].As<Napi::Function>();
87
- VerificationWorker* verificationWorker = new VerificationWorker(callback, handle);
88
- verificationWorker->Queue();
89
-
90
- return info.Env().Undefined();
91
- }
92
-
93
- /**
94
- * Get a Handle to a newly created verifier. You should call `pactffi_verifier_shutdown` when
95
- * done with the verifier to free all allocated resources
96
- *
97
- *
98
- * Returns a new `VerifierHandle`.
99
- *
100
- * C interface:
101
- *
102
- * struct VerifierHandle *pactffi_verifier_new_for_application(const char *name, const char *version);
103
- *
104
- */
105
- Napi::Value PactffiVerifierNewForApplication(const Napi::CallbackInfo& info) {
106
- Napi::Env env = info.Env();
107
- if (info.Length() < 2) {
108
- throw Napi::Error::New(env, "PactffiNewForApplication received < 2 arguments");
109
- }
110
-
111
- if (!info[0].IsString()) {
112
- throw Napi::Error::New(env, "PactffiNewForApplication(arg 0) expected a string");
113
- }
114
-
115
- if (!info[2].IsString()) {
116
- throw Napi::Error::New(env, "PactffiNewForApplication(arg 1) expected a string");
117
- }
118
-
119
- // Extract arguments to verifier
120
- std::string name = info[0].As<Napi::String>().Utf8Value();
121
- std::string version = info[1].As<Napi::String>().Utf8Value();
122
-
123
- // Store the pointer
124
- VerifierHandle *handle = pactffi_verifier_new_for_application(name.c_str(), version.c_str());
125
- handles[handles.size()] = handle;
126
-
127
- return Number::New(env, handles.size() - 1);
128
- }
129
-
130
- /**
131
- * Shutdown the verifier and release all resources
132
- *
133
- * C interface:
134
- *
135
- * void pactffi_verifier_shutdown(VerifierHandle *handle);
136
- *
137
- */
138
- Napi::Value PactffiVerifierShutdown(const Napi::CallbackInfo& info) {
139
- Napi::Env env = info.Env();
140
- if (info.Length() < 1) {
141
- throw Napi::Error::New(env, "PactffiVerifierShutdown received < 1 argument");
142
- }
143
-
144
- if (!info[0].IsNumber()) {
145
- throw Napi::Error::New(env, "PactffiVerifierShutdown(arg 0) expected a VerifierHandle (uint32_t)");
146
- }
147
-
148
- uint32_t handleId = info[0].As<Napi::Number>().Uint32Value();
149
-
150
- pactffi_verifier_shutdown(handles[handleId]);
151
-
152
- return info.Env().Undefined();
153
- }
154
-
155
-
156
- /**
157
- * Set the provider details for the Pact verifier. Passing a NULL for any field will
158
- * use the default value for that field.
159
- *
160
- * # Safety
161
- *
162
- * All string fields must contain valid UTF-8. Invalid UTF-8
163
- * will be replaced with U+FFFD REPLACEMENT CHARACTER.
164
- *
165
- * C interface:
166
- *
167
- * void pactffi_verifier_set_provider_info(VerifierHandle *handle,
168
- * const char *name,
169
- * const char *scheme,
170
- * const char *host,
171
- * unsigned short port,
172
- * const char *path);
173
- *
174
- * */
175
- Napi::Value pactffiVerifierSetProviderInfo(const Napi::CallbackInfo& info) {
176
- Napi::Env env = info.Env();
177
- if (info.Length() < 6) {
178
- throw Napi::Error::New(env, "pactffiVerifierSetProviderInfo received < 6 arguments");
179
- }
180
-
181
- if (!info[0].IsNumber()) {
182
- throw Napi::Error::New(env, "pactffiVerifierSetProviderInfo(arg 0) expected a VerifierHandle");
183
- }
184
-
185
- if (!info[1].IsString()) {
186
- throw Napi::Error::New(env, "pactffiVerifierSetProviderInfo(arg 1) expected a string");
187
- }
188
-
189
- if (!info[2].IsString()) {
190
- throw Napi::Error::New(env, "pactffiVerifierSetProviderInfo(arg 2 expected a string");
191
- }
192
-
193
- if (!info[3].IsString()) {
194
- throw Napi::Error::New(env, "pactffiVerifierSetProviderInfo(arg 3 expected a string");
195
- }
196
-
197
- if (!info[4].IsNumber()) {
198
- throw Napi::Error::New(env, "pactffiVerifierSetProviderInfo(arg 4) expected a number");
199
- }
200
-
201
- if (!info[5].IsString()) {
202
- throw Napi::Error::New(env, "pactffiVerifierSetProviderInfo(arg 5) expected a string");
203
- }
204
-
205
- uint32_t handleId = info[0].As<Napi::Number>().Uint32Value();
206
- std::string name = info[1].As<Napi::String>().Utf8Value();
207
- std::string scheme = info[2].As<Napi::String>().Utf8Value();
208
- std::string host = info[3].As<Napi::String>().Utf8Value();
209
- uint32_t port = info[4].As<Napi::Number>().Uint32Value();
210
- std::string path = info[5].As<Napi::String>().Utf8Value();
211
-
212
- pactffi_verifier_set_provider_info(handles[handleId], name.c_str(), scheme.c_str(), host.c_str(), port, path.c_str());
213
-
214
- return info.Env().Undefined();
215
- }
216
-
217
- /**
218
- * Set the filters for the Pact verifier.
219
- *
220
- * If `filter_description` is not empty, it needs to be as a regular expression.
221
- *
222
- * `filter_no_state` is a boolean value. Set it to greater than zero to turn the option on.
223
- *
224
- * # Safety
225
- *
226
- * All string fields must contain valid UTF-8. Invalid UTF-8
227
- * will be replaced with U+FFFD REPLACEMENT CHARACTER.
228
- *
229
- * C interface:
230
- *
231
- * void pactffi_verifier_set_filter_info(VerifierHandle *handle,
232
- * const char *filter_description,
233
- * const char *filter_state,
234
- * unsigned char filter_no_state);
235
- */
236
- Napi::Value pactffiVerifierSetFilterInfo(const Napi::CallbackInfo& info) {
237
- Napi::Env env = info.Env();
238
- if (info.Length() < 4) {
239
- throw Napi::Error::New(env, "pactffiVerifierSetFilterInfo received < 4 arguments");
240
- }
241
-
242
- if (!info[0].IsNumber()) {
243
- throw Napi::Error::New(env, "pactffiVerifierSetFilterInfo(arg 0) expected a VerifierHandle");
244
- }
245
-
246
- if (!info[1].IsString()) {
247
- throw Napi::Error::New(env, "pactffiVerifierSetFilterInfo(arg 1) expected a string");
248
- }
249
-
250
- if (!info[2].IsString()) {
251
- throw Napi::Error::New(env, "pactffiVerifierSetFilterInfo(arg 2 expected a string");
252
- }
253
-
254
- if (!info[3].IsBoolean()) {
255
- throw Napi::Error::New(env, "pactffiVerifierSetFilterInfo(arg 3 expected a boolean");
256
- }
257
-
258
- uint32_t handleId = info[0].As<Napi::Number>().Uint32Value();
259
- std::string description = info[1].As<Napi::String>().Utf8Value();
260
- std::string filterState = info[2].As<Napi::String>().Utf8Value();
261
- bool filterNoState = info[3].As<Napi::Boolean>().Value();
262
-
263
- pactffi_verifier_set_filter_info(handles[handleId], description.c_str(), filterState.c_str(), filterNoState);
264
-
265
- return info.Env().Undefined();
266
- }
267
-
268
- /**
269
- * Set the provider state for the Pact verifier.
270
- *
271
- * `teardown` is a boolean value. Set it to greater than zero to turn the option on.
272
- * `body` is a boolean value. Set it to greater than zero to turn the option on.
273
- *
274
- * # Safety
275
- *
276
- * All string fields must contain valid UTF-8. Invalid UTF-8
277
- * will be replaced with U+FFFD REPLACEMENT CHARACTER.
278
- *
279
- * C interface:
280
- *
281
- * VerifierHandle *handle, const char *url, unsigned char teardown, unsigned char body);
282
- */
283
- Napi::Value pactffiVerifierSetProviderState(const Napi::CallbackInfo& info) {
284
- Napi::Env env = info.Env();
285
- if (info.Length() < 4) {
286
- throw Napi::Error::New(env, "pactffiVerifierSetProviderState received < 4 arguments");
287
- }
288
-
289
- if (!info[0].IsNumber()) {
290
- throw Napi::Error::New(env, "pactffiVerifierSetProviderState(arg 0) expected a VerifierHandle");
291
- }
292
-
293
- if (!info[1].IsString()) {
294
- throw Napi::Error::New(env, "pactffiVerifierSetProviderState(arg 1) expected a string");
295
- }
296
-
297
- if (!info[2].IsBoolean()) {
298
- throw Napi::Error::New(env, "pactffiVerifierSetProviderState(arg 2 expected a boolean");
299
- }
300
-
301
- if (!info[3].IsBoolean()) {
302
- throw Napi::Error::New(env, "pactffiVerifierSetProviderState(arg 3 expected a boolean");
303
- }
304
-
305
- uint32_t handleId = info[0].As<Napi::Number>().Uint32Value();
306
- std::string url = info[1].As<Napi::String>().Utf8Value();
307
- bool teardown = info[2].As<Napi::Boolean>().Value();
308
- bool body = info[3].As<Napi::Boolean>().Value();
309
-
310
- pactffi_verifier_set_provider_state(handles[handleId], url.c_str(), teardown, body);
311
-
312
- return info.Env().Undefined();
313
- }
314
-
315
- // Deprecated in favour of pactffi_verifier_broker_source_with_selectors
316
- // /**
317
- // * Set the verification options for the Pact verifier.
318
- // *
319
- // * `publish` is a boolean value. Set it to greater than zero to turn the option on.
320
- // * `disable_ssl_verification` is a boolean value. Set it to greater than zero to turn the option on.
321
- // *
322
- // * # Safety
323
- // *
324
- // * All string fields must contain valid UTF-8. Invalid UTF-8
325
- // * will be replaced with U+FFFD REPLACEMENT CHARACTER.
326
- // *
327
- // * C interface:
328
- // *
329
- // * int pactffi_verifier_set_verification_options(VerifierHandle *handle,
330
- // * unsigned char publish,
331
- // * const char *provider_version,
332
- // * const char *build_url,
333
- // * unsigned char disable_ssl_verification,
334
- // * unsigned long request_timeout,
335
- // * const char *const *provider_tags,
336
- // * unsigned short provider_tags_len);
337
- // *
338
- // */
339
- // Napi::Value pactffiVerifierSetVerificationOptions(const Napi::CallbackInfo& info) {
340
- // Napi::Env env = info.Env();
341
- // if (info.Length() < 7) {
342
- // throw Napi::Error::New(env, "pactffiVerifierSetVerificationOptions received < 7 arguments");
343
- // }
344
-
345
- // if (!info[0].IsNumber()) {
346
- // throw Napi::Error::New(env, "pactffiVerifierSetVerificationOptions(arg 0) expected a VerifierHandle");
347
- // }
348
-
349
- // if (!info[1].IsBoolean()) {
350
- // throw Napi::Error::New(env, "pactffiVerifierSetVerificationOptions(arg 1) expected a boolean");
351
- // }
352
-
353
- // if (!info[2].IsString()) {
354
- // throw Napi::Error::New(env, "pactffiVerifierSetVerificationOptions(arg 2 expected a string");
355
- // }
356
-
357
- // if (!info[3].IsString()) {
358
- // throw Napi::Error::New(env, "pactffiVerifierSetVerificationOptions(arg 3 expected a string");
359
- // }
360
-
361
- // if (!info[4].IsBoolean()) {
362
- // throw Napi::Error::New(env, "pactffiVerifierSetVerificationOptions(arg 4) expected a boolean");
363
- // }
364
-
365
- // if (!info[5].IsNumber()) {
366
- // throw Napi::Error::New(env, "pactffiVerifierSetVerificationOptions(arg 5) expected a number");
367
- // }
368
-
369
- // if (!info[6].IsArray()) {
370
- // throw Napi::Error::New(env, "pactffiVerifierSetVerificationOptions(arg 6) expected an array of strings");
371
- // }
372
-
373
- // uint32_t handleId = info[0].As<Napi::Number>().Uint32Value();
374
- // bool publish = info[1].As<Napi::Boolean>().Value();
375
- // std::string providerVersion = info[2].As<Napi::String>().Utf8Value();
376
- // std::string buildUrl = info[3].As<Napi::String>().Utf8Value();
377
- // bool disableSslVerification = info[4].As<Napi::Boolean>().Value();
378
- // uint32_t requestTimeout = info[5].As<Napi::Number>().Uint32Value(); // Napi::Array providerTagsRaw = info[6].As<Napi::Array>();
379
-
380
- // const char *providerTags[providerTagsRaw.Length()];
381
-
382
- // for(int i = 0; i < providerTags.Length(); i++) {
383
- // std::string tag = providerTagsRaw[i].As<Napi::String>().Utf8Value();
384
- // providerTags[i] = tag.c_str();
385
- // }
386
-
387
- // pactffi_verifier_set_verification_options(handles[handleId],
388
- // publish,
389
- // providerVersion.c_str(),
390
- // buildUrl.c_str(),
391
- // disableSslVerification,
392
- // requestTimeout,
393
- // providerTags,
394
- // providerTagsRaw.Length());
395
-
396
- // return info.Env().Undefined();
397
- // }
398
-
399
- /**
400
- * Set the consumer filters for the Pact verifier.
401
- *
402
- * # Safety
403
- *
404
- * All string fields must contain valid UTF-8. Invalid UTF-8
405
- * will be replaced with U+FFFD REPLACEMENT CHARACTER.
406
- *
407
- * C interface:
408
- *
409
- * void pactffi_verifier_set_consumer_filters(VerifierHandle *handle,
410
- * const char *const *consumer_filters,
411
- * unsigned short consumer_filters_len);
412
- *
413
- */
414
- Napi::Value pactffiVerifierSetConsumerFilters(const Napi::CallbackInfo& info) {
415
- Napi::Env env = info.Env();
416
- if (info.Length() < 2) {
417
- throw Napi::Error::New(env, "pactffiVerifierSetConsumerFilters received < 2 arguments");
418
- }
419
-
420
- if (!info[0].IsNumber()) {
421
- throw Napi::Error::New(env, "pactffiVerifierSetConsumerFilters(arg 0) expected a VerifierHandle");
422
- }
423
-
424
- if (!info[1].IsArray()) {
425
- throw Napi::Error::New(env, "pactffiVerifierSetConsumerFilters(arg 1) expected an array of strings");
426
- }
427
-
428
- uint32_t handleId = info[0].As<Napi::Number>().Uint32Value();
429
- Napi::Array consumerFilters = info[1].As<Napi::Array>();
430
-
431
- pactffi_verifier_set_consumer_filters(handles[handleId],
432
- &NapiArrayToCStringVector(consumerFilters)[0],
433
- consumerFilters.Length());
434
-
435
- return info.Env().Undefined();
436
- }
437
-
438
- /**
439
- * Adds a Pact file as a source to verify.
440
- *
441
- * # Safety
442
- *
443
- * All string fields must contain valid UTF-8. Invalid UTF-8
444
- * will be replaced with U+FFFD REPLACEMENT CHARACTER.
445
- *
446
- * C interface:
447
- *
448
- * void pactffi_verifier_add_file_source(VerifierHandle *handle, const char *file);
449
- */
450
- Napi::Value pactffiVerifierAddFileSource(const Napi::CallbackInfo& info) {
451
- Napi::Env env = info.Env();
452
- if (info.Length() < 2) {
453
- throw Napi::Error::New(env, "pactffiVerifierAddFileSource received < 2 arguments");
454
- }
455
-
456
- if (!info[0].IsNumber()) {
457
- throw Napi::Error::New(env, "pactffiVerifierAddFileSource(arg 0) expected a VerifierHandle");
458
- }
459
-
460
- if (!info[1].IsString()) {
461
- throw Napi::Error::New(env, "pactffiVerifierAddFileSource(arg 1) expected a string");
462
- }
463
-
464
- uint32_t handleId = info[0].As<Napi::Number>().Uint32Value();
465
- std::string file = info[1].As<Napi::String>().Utf8Value();
466
-
467
- pactffi_verifier_add_file_source(handles[handleId], file.c_str());
468
-
469
- return info.Env().Undefined();
470
- }
471
-
472
- /**
473
- * Adds a Pact directory as a source to verify. All pacts from the directory that match the
474
- * provider name will be verified.
475
- *
476
- * # Safety
477
- *
478
- * All string fields must contain valid UTF-8. Invalid UTF-8
479
- * will be replaced with U+FFFD REPLACEMENT CHARACTER.
480
- *
481
- * C interface:
482
- *
483
- * void pactffi_verifier_add_directory_source(VerifierHandle *handle, const char *directory);
484
- */
485
- Napi::Value pactffiVerifierAddDirectorySource(const Napi::CallbackInfo& info) {
486
- Napi::Env env = info.Env();
487
- if (info.Length() < 2) {
488
- throw Napi::Error::New(env, "pactffiVerifierAddDirectorySource received < 2 arguments");
489
- }
490
-
491
- if (!info[0].IsNumber()) {
492
- throw Napi::Error::New(env, "pactffiVerifierAddDirectorySource(arg 0) expected a VerifierHandle");
493
- }
494
-
495
- if (!info[1].IsString()) {
496
- throw Napi::Error::New(env, "pactffiVerifierAddDirectorySource(arg 1) expected a string");
497
- }
498
-
499
- uint32_t handleId = info[0].As<Napi::Number>().Uint32Value();
500
- std::string dir = info[1].As<Napi::String>().Utf8Value();
501
-
502
- pactffi_verifier_add_directory_source(handles[handleId], dir.c_str());
503
-
504
- return info.Env().Undefined();
505
- }
506
-
507
- /**
508
- * Adds a URL as a source to verify. The Pact file will be fetched from the URL.
509
- *
510
- * If a username and password is given, then basic authentication will be used when fetching
511
- * the pact file. If a token is provided, then bearer token authentication will be used.
512
- *
513
- * # Safety
514
- *
515
- * All string fields must contain valid UTF-8. Invalid UTF-8
516
- * will be replaced with U+FFFD REPLACEMENT CHARACTER.
517
- *
518
- * C interface:
519
- *
520
- * void pactffi_verifier_url_source(VerifierHandle *handle,
521
- * const char *url,
522
- * const char *username,
523
- * const char *password,
524
- * const char *token);
525
- */
526
- Napi::Value pactffiVerifierUrlSource(const Napi::CallbackInfo& info) {
527
- Napi::Env env = info.Env();
528
- if (info.Length() < 5) {
529
- throw Napi::Error::New(env, "pactffiVerifierUrlSource received < 5 arguments");
530
- }
531
-
532
- if (!info[0].IsNumber()) {
533
- throw Napi::Error::New(env, "pactffiVerifierUrlSource(arg 0) expected a VerifierHandle");
534
- }
535
-
536
- if (!info[1].IsString()) {
537
- throw Napi::Error::New(env, "pactffiVerifierUrlSource(arg 1) expected a string");
538
- }
539
-
540
- if (!info[2].IsString()) {
541
- throw Napi::Error::New(env, "pactffiVerifierUrlSource(arg 2) expected a string");
542
- }
543
-
544
- if (!info[3].IsString()) {
545
- throw Napi::Error::New(env, "pactffiVerifierUrlSource(arg 3) expected a string");
546
- }
547
-
548
- if (!info[4].IsString()) {
549
- throw Napi::Error::New(env, "pactffiVerifierUrlSource(arg 4) expected a string");
550
- }
551
-
552
- uint32_t handleId = info[0].As<Napi::Number>().Uint32Value();
553
- std::string url = info[1].As<Napi::String>().Utf8Value();
554
- std::string username = info[2].As<Napi::String>().Utf8Value();
555
- std::string password = info[3].As<Napi::String>().Utf8Value();
556
- std::string token = info[4].As<Napi::String>().Utf8Value();
557
-
558
- pactffi_verifier_url_source(handles[handleId], url.c_str(), username.c_str(), password.c_str(), token.c_str());
559
-
560
- return info.Env().Undefined();
561
- }
562
-
563
- /**
564
- * Adds a Pact broker as a source to verify. This will fetch all the pact files from the broker
565
- * that match the provider name.
566
- *
567
- * If a username and password is given, then basic authentication will be used when fetching
568
- * the pact file. If a token is provided, then bearer token authentication will be used.
569
- *
570
- * # Safety
571
- *
572
- * All string fields must contain valid UTF-8. Invalid UTF-8
573
- * will be replaced with U+FFFD REPLACEMENT CHARACTER.
574
- *
575
- * C interface:
576
- *
577
- * void pactffi_verifier_broker_source(VerifierHandle *handle,
578
- * const char *url,
579
- * const char *provider_name,
580
- * const char *username,
581
- * const char *password,
582
- * const char *token);
583
- */
584
- Napi::Value pactffiVerifierBrokerSource(const Napi::CallbackInfo& info) {
585
- Napi::Env env = info.Env();
586
- if (info.Length() < 6) {
587
- throw Napi::Error::New(env, "pactffiVerifierUrlSource received < 6 arguments");
588
- }
589
-
590
- if (!info[0].IsNumber()) {
591
- throw Napi::Error::New(env, "pactffiVerifierUrlSource(arg 0) expected a VerifierHandle");
592
- }
593
-
594
- if (!info[1].IsString()) {
595
- throw Napi::Error::New(env, "pactffiVerifierUrlSource(arg 1) expected a string");
596
- }
597
-
598
- if (!info[2].IsString()) {
599
- throw Napi::Error::New(env, "pactffiVerifierUrlSource(arg 2) expected a string");
600
- }
601
-
602
- if (!info[3].IsString()) {
603
- throw Napi::Error::New(env, "pactffiVerifierUrlSource(arg 3) expected a string");
604
- }
605
-
606
- if (!info[4].IsString()) {
607
- throw Napi::Error::New(env, "pactffiVerifierUrlSource(arg 4) expected a string");
608
- }
609
-
610
- if (!info[5].IsString()) {
611
- throw Napi::Error::New(env, "pactffiVerifierUrlSource(arg 5) expected a string");
612
- }
613
-
614
- uint32_t handleId = info[0].As<Napi::Number>().Uint32Value();
615
- std::string url = info[1].As<Napi::String>().Utf8Value();
616
- std::string providerName = info[2].As<Napi::String>().Utf8Value();
617
- std::string username = info[3].As<Napi::String>().Utf8Value();
618
- std::string password = info[4].As<Napi::String>().Utf8Value();
619
- std::string token = info[5].As<Napi::String>().Utf8Value();
620
-
621
- pactffi_verifier_broker_source(handles[handleId], url.c_str(), providerName.c_str(), username.c_str(), password.c_str(), token.c_str());
622
-
623
- return info.Env().Undefined();
624
- }
625
-
626
- /**
627
- * Adds a Pact broker as a source to verify. This will fetch all the pact files from the broker
628
- * that match the provider name and the consumer version selectors
629
- * (See `https://docs.pact.io/pact_broker/advanced_topics/consumer_version_selectors/`).
630
- *
631
- * The consumer version selectors must be passed in in JSON format.
632
- *
633
- * `enable_pending` is a boolean value. Set it to greater than zero to turn the option on.
634
- *
635
- * If the `include_wip_pacts_since` option is provided, it needs to be a date formatted in
636
- * ISO format (YYYY-MM-DD).
637
- *
638
- * If a username and password is given, then basic authentication will be used when fetching
639
- * the pact file. If a token is provided, then bearer token authentication will be used.
640
- *
641
- * # Safety
642
- *
643
- * All string fields must contain valid UTF-8. Invalid UTF-8
644
- * will be replaced with U+FFFD REPLACEMENT CHARACTER.
645
- *
646
- * C interface:
647
- *
648
- * void pactffi_verifier_broker_source_with_selectors(VerifierHandle *handle,
649
- * const char *url,
650
- * const char *provider_name,
651
- * const char *username,
652
- * const char *password,
653
- * const char *token,
654
- * unsigned char enable_pending,
655
- * const char *include_wip_pacts_since,
656
- * const char *const *provider_tags,
657
- * unsigned short provider_tags_len,
658
- * const char *provider_branch,
659
- * const char *const *consumer_version_selectors,
660
- * unsigned short consumer_version_selectors_len,
661
- * const char *const *consumer_version_tags,
662
- * unsigned short consumer_version_tags_len);
663
- */
664
- Napi::Value pactffi_verifier_broker_source_with_selectors(const Napi::CallbackInfo& info) {
665
- Napi::Env env = info.Env();
666
- if (info.Length() < 11) {
667
- throw Napi::Error::New(env, "pactffiVerifierSetVerificationOptions received < 11 arguments");
668
- }
669
-
670
- if (!info[0].IsNumber()) {
671
- throw Napi::Error::New(env, "pactffiVerifierSetVerificationOptions(arg 0) expected a VerifierHandle");
672
- }
673
-
674
- if (!info[1].IsString()) {
675
- throw Napi::Error::New(env, "pactffiVerifierSetVerificationOptions(arg 1 expected a string");
676
- }
677
-
678
- if (!info[2].IsString()) {
679
- throw Napi::Error::New(env, "pactffiVerifierSetVerificationOptions(arg 2 expected a string");
680
- }
681
-
682
- if (!info[3].IsString()) {
683
- throw Napi::Error::New(env, "pactffiVerifierSetVerificationOptions(arg 3 expected a string");
684
- }
685
-
686
- if (!info[4].IsString()) {
687
- throw Napi::Error::New(env, "pactffiVerifierSetVerificationOptions(arg 4 expected a string");
688
- }
689
-
690
- if (!info[5].IsString()) {
691
- throw Napi::Error::New(env, "pactffiVerifierSetVerificationOptions(arg 5 expected a string");
692
- }
693
-
694
- if (!info[6].IsBoolean()) {
695
- throw Napi::Error::New(env, "pactffiVerifierSetVerificationOptions(arg 6) expected a boolean");
696
- }
697
-
698
- if (!info[7].IsString()) {
699
- throw Napi::Error::New(env, "pactffiVerifierSetVerificationOptions(arg 7 expected a string");
700
- }
701
-
702
- if (!info[8].IsArray()) {
703
- throw Napi::Error::New(env, "pactffiVerifierSetVerificationOptions(arg 8) expected an array of strings");
704
- }
705
-
706
- if (!info[9].IsString()) {
707
- throw Napi::Error::New(env, "pactffiVerifierSetVerificationOptions(arg 9 expected a string");
708
- }
709
-
710
- if (!info[10].IsArray()) {
711
- throw Napi::Error::New(env, "pactffiVerifierSetVerificationOptions(arg 10) expected an array of strings");
712
- }
713
-
714
- if (!info[11].IsArray()) {
715
- throw Napi::Error::New(env, "pactffiVerifierSetVerificationOptions(arg 11) expected an array of strings");
716
- }
717
-
718
- uint32_t handleId = info[0].As<Napi::Number>().Uint32Value();
719
- std::string url = info[1].As<Napi::String>().Utf8Value();
720
- std::string providerName = info[2].As<Napi::String>().Utf8Value();
721
- std::string username = info[3].As<Napi::String>().Utf8Value();
722
- std::string password = info[4].As<Napi::String>().Utf8Value();
723
- std::string token = info[5].As<Napi::String>().Utf8Value();
724
- bool enablePending = info[6].As<Napi::Boolean>().Value();
725
- std::string includeWipPactsSince = info[7].As<Napi::String>().Utf8Value();
726
- Napi::Array providerTags = info[8].As<Napi::Array>();
727
- std::string providerBranch = info[9].As<Napi::String>().Utf8Value();
728
- Napi::Array consumerVersionSelectors = info[10].As<Napi::Array>();
729
- Napi::Array consumerVersionTags = info[11].As<Napi::Array>();
730
-
731
- pactffi_verifier_broker_source_with_selectors(handles[handleId],
732
- url.c_str(),
733
- providerName.c_str(),
734
- username.c_str(),
735
- password.c_str(),
736
- token.c_str(),
737
- enablePending,
738
- includeWipPactsSince.c_str(),
739
- &NapiArrayToCStringVector(providerTags)[0],
740
- providerTags.Length(),
741
- providerBranch.c_str(),
742
- &NapiArrayToCStringVector(consumerVersionSelectors)[0],
743
- consumerVersionSelectors.Length(),
744
- &NapiArrayToCStringVector(consumerVersionTags)[0],
745
- consumerVersionTags.Length());
746
-
747
- return info.Env().Undefined();
748
- }
749
-