Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[V3] The exampleValue parameter within fromProviderState does not accept non-string data types #116

Closed
3 of 5 tasks
lviana-menlosecurity opened this issue Jun 16, 2021 · 27 comments
Labels
bug Indicates an unexpected problem or unintended behavior

Comments

@lviana-menlosecurity
Copy link

Software versions

Please provide at least OS and version of pact-js

  • OS: e.g. Mac OSX 10.11.5
  • Consumer Pact library: "@pact-foundation/pact": "^10.0.0-beta.37"
  • Provider Pact library: "@pact-foundation/pact": "^10.0.0-beta.37"
  • Node Version: 14.16.1

Issue Checklist

Please confirm the following:

  • I have upgraded to the latest
  • I have the read the FAQs in the Readme
  • I have triple checked, that there are no unhandled promises in my code
  • I have set my log level to debug and attached a log file showing the complete request/response cycle
  • For bonus points and virtual high fives, I have created a reproduceable git repository (see below) to illustrate the problem

Expected behaviour

The exampleValue parameter within fromProviderState should accept more than only string data types for TypeScript tests, like the number in the JavaScript example below:

https://github.com/pact-foundation/pact-js/blob/feat/v3.0.0/examples/v3/provider-state-injected/consumer/transaction-service.test.js#L45

Actual behaviour

Currently, exampleValue is defined as string:
https://github.com/pact-foundation/pact-js/blob/feat/v3.0.0/src/v3/matchers.ts#L450

This prevents us from using non-string data types within TypeScript tests, as that will fail. The following needs to happen:

  1. The exampleValue parameter data type should not be limited to only strings.
  2. The replacement code in the provider test side needs to honor the data type in the replacement. I say that because I avoided problem (1) above by changing the exampleValue data type from "string" to "any" and that allowed the consumer tests to pass, but the provider tests still failed because it still replaced my variable with a string instead of number (even though I return a number in stateHandlers) and our provider expects the field to be a number.
@mefellows
Copy link
Member

Just noting that I've fixed (1) but not (2).

Release beta 39 contains the change: https://github.com/pact-foundation/pact-js/releases/tag/v10.0.0-beta.39

(2) is a bit more difficult, because we would need to infer the return types from the contract. I think it's doable, but we don't currently have any specification to document how we do this.

@uglyog any thoughts? The request in (2) is to wrap some type safety around the provider injected parameters.

@lviana-menlosecurity
Copy link
Author

lviana-menlosecurity commented Jun 23, 2021

Thanks for fixing this, @mefellows. However, after the ProviderStateInjectedValue type was updated, that ended up breaking things elsewhere. For example, using fromProviderState on a request path is now broken because it expects a type of MatchersV3.Matcher<string> on the line below:
https://github.com/pact-foundation/pact-js/blob/feat/v3.0.0/src/v3/pact.ts#L51

@TimothyJones
Copy link

I'm just heading to bed here, but I think something like

export interface ProviderStateInjectedValue<T> extends Matcher<T> {
  expression: string;
}
export function fromProviderState<V extends AnyJson>(
  expression: string,
  exampleValue: V
) ProviderStateInjectedValue<V>

might fix this.

@lviana-menlosecurity
Copy link
Author

@TimothyJones , I tried your suggested change above locally, and it indeed seems to fix the problem with using fromProviderState on a request path . ;-)
We still need to fix issue (2) within the replacement code so that the provider test honors the data type in the replacement.

@uglyog
Copy link
Member

uglyog commented Jun 24, 2021

In Pact-JVM I have an associated enum to record the data type conversion that is required. See https://github.com/pact-foundation/pact-jvm/blob/master/core/support/src/main/kotlin/au/com/dius/pact/core/support/expressions/ExpressionParser.kt#L9

These are set in the DSL, were the required type is known.

However, only two conversions ended up being actually needed: STRING for things like paths, query parameters and then RAW which means do not convert it. You could get away with just a boolean value to indicate if the value needs to be converted to a string.

@TimothyJones
Copy link

I'm not sure I fully understand the typesafety problem in number 2 - could you share a code example where you're experiencing the problem?

It might be hard to get typesafety correct, since typescript is compile time, and the types given to the state handlers aren't known until runtime.

@mefellows
Copy link
Member

(forgot to hit send on this, but agree with Tim).

Great pickup Tim. I'll get another minor change out today with that @lviana-menlosecurity.

UPDATE: change is out in the beta.40 release.

We still need to fix issue (2) within the replacement code so that the provider test honors the data type in the replacement.

This can be left open as an enhancement. The test will fail in either instance - either the wrong type is sent back or the wrong data. Either way, test is failing and somebody needs to look.

Because the types will be encoded in JSON I'm not sure how helpful that is actually going to be. We'd need to actually encode more information into the contract (which there are no plans to do) to do much better than logging a warning or something intelligent to help with debugging.

@lviana-menlosecurity
Copy link
Author

@TimothyJones, here is a code example you asked for.
In the consumer test, we have something like the following:

      provider
        .given('a policy revision exists')
        .uponReceiving('a rules request to add')
        .withRequest({
          method: 'PUT',
          path: MatchersV3.fromProviderState('/api/policy/v1/rules/risks/${staged_rev_id}', '/api/policy/v1/rules/risks/788ed3db193b4e1aa33e380da5294853'),
          headers: { 'Content-Type': 'application/json' },
          body: {
            rev_id: MatchersV3.fromProviderState('${staged_rev_id}', '788ed3db193b4e1aa33e380da5294853'),
            updated_at: MatchersV3.fromProviderState('${updated_at}', 1623700550085)
          }
        })
        .willRespondWith({
          status: 200
        });

Notice how the body gets 2 values from the state: rev_id is a string (since the exampleValue is wrapped in quotes), and updated_at is a number (no quotes). With the commit above, which is part of the beta.40 release, the consumer test now passes, since we can now use AnyJson type for the exampleValue.
However, the provider test, which looks like the following, still fails:

      stateHandlers: {
        'a policy revision exists': () => {
          return {
            staged_rev_id: 'e3a8b509e60b46baa0ab9044a42820b2',
            updated_at: 1623765384870 // Even though a number is passed, Pact still uses a string in the actual request
          }
        },
      },

Despite the fact that a number is returned for updated_at in the stateHandlers above, Pact still uses a string in the actual request. However, our provider expects a number for that field, and the request fails if the type is incorrect. This is the problem.

@mefellows
Copy link
Member

Thanks, that makes more sense and seems like a bug on the surface. I'll have to do a little more digging (this will be in the shared core, I believe).

@mefellows
Copy link
Member

mefellows commented Jun 25, 2021

As part of refactoring pact-foundation/pact-js#702, I've demonstrated the issue is in the rust core:

[2021-06-25T11:40:54Z DEBUG reqwest::async_impl::client] response '200 OK' for http://localhost:50110/_pactSetup
[2021-06-25T11:40:54Z DEBUG pact_verifier::provider_client] State change request: Response { url: Url { scheme: "http", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("localhost")), port: Some(50110), path: "/_pactSetup", query: None, fragment: None }, status: 200, headers: {"x-powered-by": "Express", "content-type": "application/json; charset=utf-8", "content-length": "23", "etag": "W/\"17-nI2ZGx8NwIYvqPResGsg7KwEQ/k\"", "date": "Fri, 25 Jun 2021 11:40:54 GMT", "connection": "keep-alive"} }
[2021-06-25T11:40:54Z DEBUG pact_verifier] State Change: "ProviderState { name: "Account Test001 exists", params: {"accountRef": String("Test001")} }" -> Ok({"accountNumber": Number(96827)})
[2021-06-25T11:40:54Z INFO  pact_verifier] Running provider verification for 'a request to get the account details via POST'
[2021-06-25T11:40:54Z DEBUG pact_matching] Applying body generators...
[2021-06-25T11:40:54Z DEBUG pact_matching::models::generators] apply_body_generators: JSON content type
[2021-06-25T11:40:54Z DEBUG pact_matching::models::generators] Applying generator ProviderStateGenerator("${accountNumber}", None) to key $.accountNumber
[2021-06-25T11:40:54Z DEBUG pact_matching::json] Generating value from ProviderStateGenerator("${accountNumber}", None) with context {"accountNumber": Number(96827)}
[2021-06-25T11:40:54Z DEBUG pact_matching::json] Generated value = Ok(String("96827"))
[2021-06-25T11:40:54Z INFO  pact_verifier::provider_client] Sending request to provider at http://localhost:50110/
[2021-06-25T11:40:54Z DEBUG pact_verifier::provider_client] Provider details = ProviderInfo { name: "Account Service", protocol: "http", host: "localhost", port: Some(50110), path: "/" }
[2021-06-25T11:40:54Z DEBUG pact_verifier::provider_client] Sending request Request ( method: POST, path: /accounts/search/findOneByAccountNumberIdInBody, query: None, headers: Some({"Content-Type": ["application/json; charset=utf-8"], "Accept": ["application/hal+json"]}), body: Present(25 bytes, application/json) )
[2021-06-25T11:40:54Z TRACE pact_verifier::provider_client] body: {"accountNumber":"96827"}

(mostly for my future reference).

TL;DR - the correct shape goes in, but things seem to be stringified on the way back out. I'll leave this open to track it.

I'll also add a feature test in the JS examples to demonstrate the usage once it's working (I'll comment out the test for now)

@mefellows mefellows transferred this issue from pact-foundation/pact-js Jun 25, 2021
@mefellows
Copy link
Member

Minor update: it seems the ValueResolver trait method resolve_value always responds with a String type

In this case, it uses the MapResolver and performs the cast here: https://github.com/pact-foundation/pact-reference/blob/master/rust/pact_models/src/expression_parser.rs#L140.

@uglyog this is a little out of my area of expertise to want to tinker with. Any pointers? I assume we should be able to return the correct JSON types here?

@uglyog
Copy link
Member

uglyog commented Jun 30, 2021

This is actually a design problem. If you look at this line in the logs:

Generating value from ProviderStateGenerator("${accountNumber}", None) with context {"accountNumber": Number(96827)}

It's stating: take "${accountNumber}" and replace the variables with the keys from {"accountNumber": Number(96827)}, so you end up with "96827".

I put a work around in Pact-JVM: pact-foundation/pact-jvm#1061, we need to see if that works here.

I have an idea to replace the token expansion with a proper parser that builds a syntax tree, that way you can use a node colouring mechanism to resolve the types correctly.

@uglyog
Copy link
Member

uglyog commented Jun 30, 2021

Just checked the implementation. It will work the same way. If there is no expression, it will just do a key lookup from the context, and the type will be retained.

I.e. fromProviderState('accountNumber', 100)

@mefellows You can probably move this back to pact-js. It needs an update to the documentation and examples.

@mefellows
Copy link
Member

Ah, I thought you had to pass an expression in?

Side note: are these expressions part of the specification anywhere? A quick look at v3/v4 I can't see them - should we add them to v4?

Either way, I've just changed as you suggested. The resulting pact looks like this:

{
  "consumer": {
    "name": "TransactionService"
  },
  "interactions": [
    {
      "description": "a request to get the account details via POST",
      "providerStates": [
        {
          "name": "Account Test001 exists",
          "params": {
            "accountRef": "Test001"
          }
        }
      ],
      "request": {
        "body": {
          "accountNumber": 100
        },
        "generators": {
          "body": {
            "$.accountNumber": {
              "expression": "accountNumber",
              "type": "ProviderState"
            }
          }
        },
        "headers": {
          "Accept": "application/hal+json",
          "Content-Type": "application/json; charset=utf-8"
        },
        "matchingRules": {
          "body": {
            "$.accountNumber": {
              "combine": "AND",
              "matchers": [
                {
                  "match": "type"
                }
              ]
            }
          }
        },
        "method": "POST",
        "path": "/accounts/search/findOneByAccountNumberIdInBody"
      },
      "response": {
        "body": {
          "_links": {
            "account": {
              "href": "http://localhost:8080/accounts/100"
            },
            "self": {
              "href": "http://localhost:8080/accounts/100"
            }
          },
          "accountNumber": {
            "id": 100
          },
          "accountRef": "Test001",
          "createdDate": "2021-06-30T16:10:00.015+10:00",
          "id": 1,
          "lastModifiedDate": "2021-06-30T16:10:00.015+10:00",
          "name": "Test",
          "version": 101
        },
        "generators": {
          "body": {
            "$.accountNumber.id": {
              "expression": "accountNumber",
              "type": "ProviderState"
            },
            "$.createdDate": {
              "format": "yyyy-MM-dd'T'HH:mm:ss.SSSX",
              "type": "DateTime"
            },
            "$.lastModifiedDate": {
              "format": "yyyy-MM-dd'T'HH:mm:ss.SSSX",
              "type": "DateTime"
            },
            "$.version": {
              "max": 10,
              "min": 0,
              "type": "RandomInt"
            }
          }
        },
        "headers": {
          "Content-Type": "application/hal+json"
        },
        "matchingRules": {
          "body": {
            "$._links.account.href": {
              "combine": "AND",
              "matchers": [
                {
                  "match": "regex",
                  "regex": ".*(\\/accounts\\/\\d+)$"
                }
              ]
            },
            "$._links.self.href": {
              "combine": "AND",
              "matchers": [
                {
                  "match": "regex",
                  "regex": ".*(\\/accounts\\/\\d+)$"
                }
              ]
            },
            "$.accountNumber.id": {
              "combine": "AND",
              "matchers": [
                {
                  "match": "type"
                }
              ]
            },
            "$.accountRef": {
              "combine": "AND",
              "matchers": [
                {
                  "match": "type"
                }
              ]
            },
            "$.createdDate": {
              "combine": "AND",
              "matchers": [
                {
                  "match": "timestamp",
                  "timestamp": "yyyy-MM-dd'T'HH:mm:ss.SSSX"
                }
              ]
            },
            "$.id": {
              "combine": "AND",
              "matchers": [
                {
                  "match": "integer"
                }
              ]
            },
            "$.lastModifiedDate": {
              "combine": "AND",
              "matchers": [
                {
                  "match": "timestamp",
                  "timestamp": "yyyy-MM-dd'T'HH:mm:ss.SSSX"
                }
              ]
            },
            "$.name": {
              "combine": "AND",
              "matchers": [
                {
                  "match": "type"
                }
              ]
            },
            "$.version": {
              "combine": "AND",
              "matchers": [
                {
                  "match": "integer"
                }
              ]
            }
          }
        },
        "status": 200
      }
    }
  ],
  "metadata": {
    "pactJs": {
      "version": "10.0.0-beta.42"
    },
    "pactRust": {
      "version": "0.9.3"
    },
    "pactSpecification": {
      "version": "3.0.0"
    }
  },
  "provider": {
    "name": "AccountService"
  }
}

But it still seems to generate a string:

 RUNS  provider/account-service.test.js
[2021-06-30T06:23:01Z DEBUG pact_js_v3] Initialising Pact native library version 0.0.6
[2021-06-30T06:23:02Z DEBUG pact_js_v3::verify] pacts = [File("/Users/matthewfellows/development/public/pact-js/examples/v3/provider-state-injected/pacts/TransactionService-AccountService.json")]
[2021-06-30T06:23:02Z DEBUG pact_js_v3::verify] provider_info = ProviderInfo { name: "Account Service", protocol: "http", host: "localhost", port: Some(53720), path: "/" }
[2021-06-30T06:23:02Z WARN  pact_js_v3::verify] publishVerificationResult must be a boolean value. Ignoring it
[2021-06-30T06:23:02Z DEBUG pact_js_v3::verify] Starting background task
[2021-06-30T06:23:02Z DEBUG pact_js_v3::verify] Done
[2021-06-30T06:23:02Z DEBUG pact_js_v3::verify] Background verification task started
[2021-06-30T06:23:02Z TRACE mio::poll] registering event source with poller: token=Token(0), interests=READABLE | WRITABLE
[2021-06-30T06:23:02Z TRACE pact_matching::models::file_utils] Attempt 0 of 3 to get a shared lock on '"/Users/matthewfellows/development/public/pact-js/examples/v3/provider-state-injected/pacts/TransactionService-AccountService.json"'
[2021-06-30T06:23:02Z TRACE pact_matching::models::file_utils] Got shared file lock
[2021-06-30T06:23:02Z TRACE pact_matching::models::file_utils] Releasing shared file lock
[2021-06-30T06:23:02Z INFO  pact_verifier] Running provider state change handler 'Account Test001 exists' for 'a request to get the account details via POST'
  Given Account Test001 exists
[2021-06-30T06:23:02Z DEBUG pact_verifier::provider_client] Sending Request ( method: POST, path: /, query: None, headers: Some({"Content-Type": ["application/json"]}), body: Present(85 bytes, application/json) ) to state change handler
[2021-06-30T06:23:02Z DEBUG reqwest::connect] starting new connection: http://localhost:53720/

 RUNS  provider/account-service.test.js
[2021-06-30T06:23:02Z TRACE mio::poll] registering event source with poller: token=Token(1), interests=READABLE | WRITABLE
[2021-06-30T06:23:02Z TRACE want] signal: Want
[2021-06-30T06:23:02Z TRACE want] signal found waiting giver, notifying
[2021-06-30T06:23:02Z TRACE want] poll_want: taker wants!
[2021-06-30T06:23:02Z TRACE want] signal: Want
[2021-06-30T06:23:02Z TRACE want] signal: Want
[2021-06-30T06:23:02Z DEBUG reqwest::async_impl::client] response '200 OK' for http://localhost:53720/_pactSetup
[2021-06-30T06:23:02Z DEBUG pact_verifier::provider_client] State change request: Response { url: Url { scheme: "http", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("localhost")), port: Some(53720), path: "/_pactSetup", query: None, fragment: None }, status: 200, headers: {"x-powered-by": "Express", "content-type": "application/json; charset=utf-8", "content-length": "23", "etag": "W/\"17-vWRzaaqSmoVt6mjkueR3e4txY70\"", "date": "Wed, 30 Jun 2021 06:23:02 GMT", "connection": "keep-alive"} }
[2021-06-30T06:23:02Z DEBUG pact_verifier] State Change: "ProviderState { name: "Account Test001 exists", params: {"accountRef": String("Test001")} }" -> Ok({"accountNumber": Number(87174)})
[2021-06-30T06:23:02Z INFO  pact_verifier] Running provider verification for 'a request to get the account details via POST'
[2021-06-30T06:23:02Z DEBUG pact_matching] Applying body generators...
[2021-06-30T06:23:02Z DEBUG pact_matching::models::generators] apply_body_generators: JSON content type
[2021-06-30T06:23:02Z DEBUG pact_matching::models::generators] Applying generator ProviderStateGenerator("accountNumber", None) to key $.accountNumber
[2021-06-30T06:23:02Z DEBUG pact_matching::json] Generating value from ProviderStateGenerator("accountNumber", None) with context {"accountNumber": Number(87174)}
[2021-06-30T06:23:02Z DEBUG pact_matching::json] Generated value = Ok(String("87174"))
[2021-06-30T06:23:02Z INFO  pact_verifier::provider_client] Sending request to provider at http://localhost:53720/
[2021-06-30T06:23:02Z DEBUG pact_verifier::provider_client] Provider details = ProviderInfo { name: "Account Service", protocol: "http", host: "localhost", port: Some(53720), path: "/" }
[2021-06-30T06:23:02Z DEBUG pact_verifier::provider_client] Sending request Request ( method: POST, path: /accounts/search/findOneByAccountNumberIdInBody, query: None, headers: Some({"Accept": ["application/hal+json"], "Content-Type": ["application/json; charset=utf-8"]}), body: Present(25 bytes, application/json) )
[2021-06-30T06:23:02Z TRACE pact_verifier::provider_client] body: {"accountNumber":"87174"}
[2021-06-30T06:23:02Z TRACE mio::poll] deregistering event source from poller
[2021-06-30T06:23:02Z TRACE want] signal: Closed
[2021-06-30T06:23:02Z DEBUG reqwest::async_impl::client] response '200 OK' for http://localhost:53720/accounts/search/findOneByAccountNumberIdInBody
[2021-06-30T06:23:02Z DEBUG pact_verifier::provider_client] Received native response: Response { url: Url { scheme: "http", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("localhost")), port: Some(53720), path: "/accounts/search/findOneByAccountNumberIdInBody", query: None, fragment: None }, status: 200, headers: {"x-powered-by": "Express", "access-control-allow-origin": "*", "content-type": "application/hal+json; charset=utf-8", "content-length": "304", "etag": "W/\"130-MvlgIIBwpuy95VqHLPaRJl9yWiY\"", "date": "Wed, 30 Jun 2021 06:23:02 GMT", "connection": "close"} }
[2021-06-30T06:23:02Z TRACE want] poll_want: closed
[2021-06-30T06:23:02Z INFO  pact_verifier::provider_client] Received response: Response ( status: 200, headers: Some({"x-powered-by": ["Express"], "date": ["Wed", "30 Jun 2021 06:23:02 GMT"], "connection": ["close"], "content-type": ["application/hal+json; charset=utf-8"], "content-length": ["304"], "etag": ["W/\"130-MvlgIIBwpuy95VqHLPaRJl9yWiY\""], "access-control-allow-origin": ["*"]}), body: Present(304 bytes, application/hal+json;charset=utf-8) )
[2021-06-30T06:23:02Z INFO  pact_matching] comparing to expected response: Response ( status: 200, headers: Some({"Content-Type": ["application/hal+json"]}), body: Present(303 bytes) )
[2021-06-30T06:23:02Z DEBUG pact_matching] expected content type = 'application/hal+json', actual content type = 'application/hal+json;charset=utf-8'
[2021-06-30T06:23:02Z DEBUG pact_matching] content type header matcher = 'None'
[2021-06-30T06:23:02Z DEBUG pact_matching] Using body matcher for content type 'application/hal+json'
[2021-06-30T06:23:02Z DEBUG pact_matching::json] compare: Comparing path $
[2021-06-30T06:23:02Z DEBUG pact_matching::json] compare_maps: Comparing maps at $: {"_links": Object({"account": Object({"href": String("http://localhost:8080/accounts/100")}), "self": Object({"href": String("http://localhost:8080/accounts/100")})}), "accountNumber": Object({"id": Number(100)}), "accountRef": String("Test001"), "createdDate": String("2021-06-30T16:10:00.015+10:00"), "id": Number(1), "lastModifiedDate": String("2021-06-30T16:10:00.015+10:00"), "name": String("Test"), "version": Number(101)} -> {"_links": Object({"account": Object({"href": String("http://localhost:8081/accounts/87174")}), "self": Object({"href": String("http://localhost:8081/accounts/87174")})}), "accountNumber": Object({"id": Number(87174)}), "accountRef": String("Test001"), "createdDate": String("2021-06-30T06:23:02.348Z"), "id": Number(65665), "lastModifiedDate": String("2021-06-30T06:23:02.348Z"), "name": String("Test001"), "version": Number(3)}
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("createdDate")]' and path '["$"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.createdDate' and '["$"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("accountRef")]' and path '["$"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.accountRef' and '["$"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("name")]' and path '["$"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.name' and '["$"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("_links"), Field("self"), Field("href")]' and path '["$"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 4) for path '$._links.self.href' and '["$"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("accountNumber"), Field("id")]' and path '["$"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 3) for path '$.accountNumber.id' and '["$"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("version")]' and path '["$"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.version' and '["$"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("lastModifiedDate")]' and path '["$"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.lastModifiedDate' and '["$"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("id")]' and path '["$"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.id' and '["$"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("_links"), Field("account"), Field("href")]' and path '["$"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 4) for path '$._links.account.href' and '["$"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] matcher_is_defined: for category body and path ["$"] -> false
[2021-06-30T06:23:02Z DEBUG pact_matching::json] compare: Comparing path $.version
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("createdDate")]' and path '["$", "version"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.createdDate' and '["$", "version"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("accountRef")]' and path '["$", "version"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.accountRef' and '["$", "version"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("name")]' and path '["$", "version"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.name' and '["$", "version"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("_links"), Field("self"), Field("href")]' and path '["$", "version"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 4) for path '$._links.self.href' and '["$", "version"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("accountNumber"), Field("id")]' and path '["$", "version"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 3) for path '$.accountNumber.id' and '["$", "version"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("version")]' and path '["$", "version"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (4, 2) for path '$.version' and '["$", "version"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("lastModifiedDate")]' and path '["$", "version"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.lastModifiedDate' and '["$", "version"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("id")]' and path '["$", "version"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.id' and '["$", "version"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("_links"), Field("account"), Field("href")]' and path '["$", "version"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 4) for path '$._links.account.href' and '["$", "version"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] matcher_is_defined: for category body and path ["$", "version"] -> true
[2021-06-30T06:23:02Z DEBUG pact_matching::json] compare_values: Calling match_values for path $.version
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("createdDate")]' and path '["$", "version"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.createdDate' and '["$", "version"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("accountRef")]' and path '["$", "version"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.accountRef' and '["$", "version"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("name")]' and path '["$", "version"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.name' and '["$", "version"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("_links"), Field("self"), Field("href")]' and path '["$", "version"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 4) for path '$._links.self.href' and '["$", "version"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("accountNumber"), Field("id")]' and path '["$", "version"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 3) for path '$.accountNumber.id' and '["$", "version"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("version")]' and path '["$", "version"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (4, 2) for path '$.version' and '["$", "version"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("lastModifiedDate")]' and path '["$", "version"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.lastModifiedDate' and '["$", "version"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("id")]' and path '["$", "version"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.id' and '["$", "version"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("_links"), Field("account"), Field("href")]' and path '["$", "version"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 4) for path '$._links.account.href' and '["$", "version"]'
[2021-06-30T06:23:02Z DEBUG pact_matching::json] JSON -> JSON: Comparing '101' to '3' using Integer -> Ok(())
[2021-06-30T06:23:02Z DEBUG pact_matching::json] compare_values: Comparing 'Number(101)' to 'Number(3)' at path '$.version' -> Ok(())
[2021-06-30T06:23:02Z DEBUG pact_matching::json] compare: Comparing path $._links
[2021-06-30T06:23:02Z DEBUG pact_matching::json] compare_maps: Comparing maps at $._links: {"account": Object({"href": String("http://localhost:8080/accounts/100")}), "self": Object({"href": String("http://localhost:8080/accounts/100")})} -> {"account": Object({"href": String("http://localhost:8081/accounts/87174")}), "self": Object({"href": String("http://localhost:8081/accounts/87174")})}
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("createdDate")]' and path '["$", "_links"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.createdDate' and '["$", "_links"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("accountRef")]' and path '["$", "_links"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.accountRef' and '["$", "_links"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("name")]' and path '["$", "_links"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.name' and '["$", "_links"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("_links"), Field("self"), Field("href")]' and path '["$", "_links"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 4) for path '$._links.self.href' and '["$", "_links"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("accountNumber"), Field("id")]' and path '["$", "_links"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 3) for path '$.accountNumber.id' and '["$", "_links"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("version")]' and path '["$", "_links"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.version' and '["$", "_links"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("lastModifiedDate")]' and path '["$", "_links"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.lastModifiedDate' and '["$", "_links"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("id")]' and path '["$", "_links"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.id' and '["$", "_links"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("_links"), Field("account"), Field("href")]' and path '["$", "_links"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 4) for path '$._links.account.href' and '["$", "_links"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] matcher_is_defined: for category body and path ["$", "_links"] -> false
[2021-06-30T06:23:02Z DEBUG pact_matching::json] compare: Comparing path $._links.account
[2021-06-30T06:23:02Z DEBUG pact_matching::json] compare_maps: Comparing maps at $._links.account: {"href": String("http://localhost:8080/accounts/100")} -> {"href": String("http://localhost:8081/accounts/87174")}
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("createdDate")]' and path '["$", "_links", "account"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.createdDate' and '["$", "_links", "account"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("accountRef")]' and path '["$", "_links", "account"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.accountRef' and '["$", "_links", "account"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("name")]' and path '["$", "_links", "account"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.name' and '["$", "_links", "account"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("_links"), Field("self"), Field("href")]' and path '["$", "_links", "account"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 4) for path '$._links.self.href' and '["$", "_links", "account"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("accountNumber"), Field("id")]' and path '["$", "_links", "account"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 3) for path '$.accountNumber.id' and '["$", "_links", "account"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("version")]' and path '["$", "_links", "account"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.version' and '["$", "_links", "account"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("lastModifiedDate")]' and path '["$", "_links", "account"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.lastModifiedDate' and '["$", "_links", "account"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("id")]' and path '["$", "_links", "account"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.id' and '["$", "_links", "account"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("_links"), Field("account"), Field("href")]' and path '["$", "_links", "account"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 4) for path '$._links.account.href' and '["$", "_links", "account"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] matcher_is_defined: for category body and path ["$", "_links", "account"] -> false
[2021-06-30T06:23:02Z DEBUG pact_matching::json] compare: Comparing path $._links.account.href
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("createdDate")]' and path '["$", "_links", "account", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.createdDate' and '["$", "_links", "account", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("accountRef")]' and path '["$", "_links", "account", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.accountRef' and '["$", "_links", "account", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("name")]' and path '["$", "_links", "account", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.name' and '["$", "_links", "account", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("_links"), Field("self"), Field("href")]' and path '["$", "_links", "account", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 4) for path '$._links.self.href' and '["$", "_links", "account", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("accountNumber"), Field("id")]' and path '["$", "_links", "account", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 3) for path '$.accountNumber.id' and '["$", "_links", "account", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("version")]' and path '["$", "_links", "account", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.version' and '["$", "_links", "account", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("lastModifiedDate")]' and path '["$", "_links", "account", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.lastModifiedDate' and '["$", "_links", "account", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("id")]' and path '["$", "_links", "account", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.id' and '["$", "_links", "account", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("_links"), Field("account"), Field("href")]' and path '["$", "_links", "account", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (16, 4) for path '$._links.account.href' and '["$", "_links", "account", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] matcher_is_defined: for category body and path ["$", "_links", "account", "href"] -> true
[2021-06-30T06:23:02Z DEBUG pact_matching::json] compare_values: Calling match_values for path $._links.account.href
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("createdDate")]' and path '["$", "_links", "account", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.createdDate' and '["$", "_links", "account", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("accountRef")]' and path '["$", "_links", "account", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.accountRef' and '["$", "_links", "account", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("name")]' and path '["$", "_links", "account", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.name' and '["$", "_links", "account", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("_links"), Field("self"), Field("href")]' and path '["$", "_links", "account", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 4) for path '$._links.self.href' and '["$", "_links", "account", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("accountNumber"), Field("id")]' and path '["$", "_links", "account", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 3) for path '$.accountNumber.id' and '["$", "_links", "account", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("version")]' and path '["$", "_links", "account", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.version' and '["$", "_links", "account", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("lastModifiedDate")]' and path '["$", "_links", "account", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.lastModifiedDate' and '["$", "_links", "account", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("id")]' and path '["$", "_links", "account", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.id' and '["$", "_links", "account", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("_links"), Field("account"), Field("href")]' and path '["$", "_links", "account", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (16, 4) for path '$._links.account.href' and '["$", "_links", "account", "href"]'
[2021-06-30T06:23:02Z DEBUG pact_matching::json] JSON -> JSON: Comparing '"http://localhost:8080/accounts/100"' to '"http://localhost:8081/accounts/87174"' using Regex(".*(\\/accounts\\/\\d+)$") -> Ok(())
[2021-06-30T06:23:02Z DEBUG pact_matching::json] compare_values: Comparing 'String("http://localhost:8080/accounts/100")' to 'String("http://localhost:8081/accounts/87174")' at path '$._links.account.href' -> Ok(())
[2021-06-30T06:23:02Z DEBUG pact_matching::json] compare: Comparing path $._links.self
[2021-06-30T06:23:02Z DEBUG pact_matching::json] compare_maps: Comparing maps at $._links.self: {"href": String("http://localhost:8080/accounts/100")} -> {"href": String("http://localhost:8081/accounts/87174")}
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("createdDate")]' and path '["$", "_links", "self"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.createdDate' and '["$", "_links", "self"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("accountRef")]' and path '["$", "_links", "self"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.accountRef' and '["$", "_links", "self"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("name")]' and path '["$", "_links", "self"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.name' and '["$", "_links", "self"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("_links"), Field("self"), Field("href")]' and path '["$", "_links", "self"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 4) for path '$._links.self.href' and '["$", "_links", "self"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("accountNumber"), Field("id")]' and path '["$", "_links", "self"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 3) for path '$.accountNumber.id' and '["$", "_links", "self"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("version")]' and path '["$", "_links", "self"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.version' and '["$", "_links", "self"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("lastModifiedDate")]' and path '["$", "_links", "self"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.lastModifiedDate' and '["$", "_links", "self"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("id")]' and path '["$", "_links", "self"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.id' and '["$", "_links", "self"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("_links"), Field("account"), Field("href")]' and path '["$", "_links", "self"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 4) for path '$._links.account.href' and '["$", "_links", "self"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] matcher_is_defined: for category body and path ["$", "_links", "self"] -> false
[2021-06-30T06:23:02Z DEBUG pact_matching::json] compare: Comparing path $._links.self.href
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("createdDate")]' and path '["$", "_links", "self", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.createdDate' and '["$", "_links", "self", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("accountRef")]' and path '["$", "_links", "self", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.accountRef' and '["$", "_links", "self", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("name")]' and path '["$", "_links", "self", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.name' and '["$", "_links", "self", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("_links"), Field("self"), Field("href")]' and path '["$", "_links", "self", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (16, 4) for path '$._links.self.href' and '["$", "_links", "self", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("accountNumber"), Field("id")]' and path '["$", "_links", "self", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 3) for path '$.accountNumber.id' and '["$", "_links", "self", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("version")]' and path '["$", "_links", "self", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.version' and '["$", "_links", "self", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("lastModifiedDate")]' and path '["$", "_links", "self", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.lastModifiedDate' and '["$", "_links", "self", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("id")]' and path '["$", "_links", "self", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.id' and '["$", "_links", "self", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("_links"), Field("account"), Field("href")]' and path '["$", "_links", "self", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 4) for path '$._links.account.href' and '["$", "_links", "self", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] matcher_is_defined: for category body and path ["$", "_links", "self", "href"] -> true
[2021-06-30T06:23:02Z DEBUG pact_matching::json] compare_values: Calling match_values for path $._links.self.href
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("createdDate")]' and path '["$", "_links", "self", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.createdDate' and '["$", "_links", "self", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("accountRef")]' and path '["$", "_links", "self", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.accountRef' and '["$", "_links", "self", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("name")]' and path '["$", "_links", "self", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.name' and '["$", "_links", "self", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("_links"), Field("self"), Field("href")]' and path '["$", "_links", "self", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (16, 4) for path '$._links.self.href' and '["$", "_links", "self", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("accountNumber"), Field("id")]' and path '["$", "_links", "self", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 3) for path '$.accountNumber.id' and '["$", "_links", "self", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("version")]' and path '["$", "_links", "self", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.version' and '["$", "_links", "self", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("lastModifiedDate")]' and path '["$", "_links", "self", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.lastModifiedDate' and '["$", "_links", "self", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("id")]' and path '["$", "_links", "self", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.id' and '["$", "_links", "self", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("_links"), Field("account"), Field("href")]' and path '["$", "_links", "self", "href"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 4) for path '$._links.account.href' and '["$", "_links", "self", "href"]'
[2021-06-30T06:23:02Z DEBUG pact_matching::json] JSON -> JSON: Comparing '"http://localhost:8080/accounts/100"' to '"http://localhost:8081/accounts/87174"' using Regex(".*(\\/accounts\\/\\d+)$") -> Ok(())
[2021-06-30T06:23:02Z DEBUG pact_matching::json] compare_values: Comparing 'String("http://localhost:8080/accounts/100")' to 'String("http://localhost:8081/accounts/87174")' at path '$._links.self.href' -> Ok(())
[2021-06-30T06:23:02Z DEBUG pact_matching::json] compare: Comparing path $.accountNumber
[2021-06-30T06:23:02Z DEBUG pact_matching::json] compare_maps: Comparing maps at $.accountNumber: {"id": Number(100)} -> {"id": Number(87174)}
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("createdDate")]' and path '["$", "accountNumber"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.createdDate' and '["$", "accountNumber"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("accountRef")]' and path '["$", "accountNumber"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.accountRef' and '["$", "accountNumber"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("name")]' and path '["$", "accountNumber"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.name' and '["$", "accountNumber"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("_links"), Field("self"), Field("href")]' and path '["$", "accountNumber"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 4) for path '$._links.self.href' and '["$", "accountNumber"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("accountNumber"), Field("id")]' and path '["$", "accountNumber"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 3) for path '$.accountNumber.id' and '["$", "accountNumber"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("version")]' and path '["$", "accountNumber"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.version' and '["$", "accountNumber"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("lastModifiedDate")]' and path '["$", "accountNumber"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.lastModifiedDate' and '["$", "accountNumber"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("id")]' and path '["$", "accountNumber"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.id' and '["$", "accountNumber"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("_links"), Field("account"), Field("href")]' and path '["$", "accountNumber"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 4) for path '$._links.account.href' and '["$", "accountNumber"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] matcher_is_defined: for category body and path ["$", "accountNumber"] -> false
[2021-06-30T06:23:02Z DEBUG pact_matching::json] compare: Comparing path $.accountNumber.id
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("createdDate")]' and path '["$", "accountNumber", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.createdDate' and '["$", "accountNumber", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("accountRef")]' and path '["$", "accountNumber", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.accountRef' and '["$", "accountNumber", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("name")]' and path '["$", "accountNumber", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.name' and '["$", "accountNumber", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("_links"), Field("self"), Field("href")]' and path '["$", "accountNumber", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 4) for path '$._links.self.href' and '["$", "accountNumber", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("accountNumber"), Field("id")]' and path '["$", "accountNumber", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (8, 3) for path '$.accountNumber.id' and '["$", "accountNumber", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("version")]' and path '["$", "accountNumber", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.version' and '["$", "accountNumber", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("lastModifiedDate")]' and path '["$", "accountNumber", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.lastModifiedDate' and '["$", "accountNumber", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("id")]' and path '["$", "accountNumber", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.id' and '["$", "accountNumber", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("_links"), Field("account"), Field("href")]' and path '["$", "accountNumber", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 4) for path '$._links.account.href' and '["$", "accountNumber", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] matcher_is_defined: for category body and path ["$", "accountNumber", "id"] -> true
[2021-06-30T06:23:02Z DEBUG pact_matching::json] compare_values: Calling match_values for path $.accountNumber.id
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("createdDate")]' and path '["$", "accountNumber", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.createdDate' and '["$", "accountNumber", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("accountRef")]' and path '["$", "accountNumber", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.accountRef' and '["$", "accountNumber", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("name")]' and path '["$", "accountNumber", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.name' and '["$", "accountNumber", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("_links"), Field("self"), Field("href")]' and path '["$", "accountNumber", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 4) for path '$._links.self.href' and '["$", "accountNumber", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("accountNumber"), Field("id")]' and path '["$", "accountNumber", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (8, 3) for path '$.accountNumber.id' and '["$", "accountNumber", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("version")]' and path '["$", "accountNumber", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.version' and '["$", "accountNumber", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("lastModifiedDate")]' and path '["$", "accountNumber", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.lastModifiedDate' and '["$", "accountNumber", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("id")]' and path '["$", "accountNumber", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.id' and '["$", "accountNumber", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("_links"), Field("account"), Field("href")]' and path '["$", "accountNumber", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 4) for path '$._links.account.href' and '["$", "accountNumber", "id"]'
[2021-06-30T06:23:02Z DEBUG pact_matching::json] JSON -> JSON: Comparing '100' to '87174' using Type -> Ok(())
[2021-06-30T06:23:02Z DEBUG pact_matching::json] compare_values: Comparing 'Number(100)' to 'Number(87174)' at path '$.accountNumber.id' -> Ok(())
[2021-06-30T06:23:02Z DEBUG pact_matching::json] compare: Comparing path $.createdDate
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("createdDate")]' and path '["$", "createdDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (4, 2) for path '$.createdDate' and '["$", "createdDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("accountRef")]' and path '["$", "createdDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.accountRef' and '["$", "createdDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("name")]' and path '["$", "createdDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.name' and '["$", "createdDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("_links"), Field("self"), Field("href")]' and path '["$", "createdDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 4) for path '$._links.self.href' and '["$", "createdDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("accountNumber"), Field("id")]' and path '["$", "createdDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 3) for path '$.accountNumber.id' and '["$", "createdDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("version")]' and path '["$", "createdDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.version' and '["$", "createdDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("lastModifiedDate")]' and path '["$", "createdDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.lastModifiedDate' and '["$", "createdDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("id")]' and path '["$", "createdDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.id' and '["$", "createdDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("_links"), Field("account"), Field("href")]' and path '["$", "createdDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 4) for path '$._links.account.href' and '["$", "createdDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] matcher_is_defined: for category body and path ["$", "createdDate"] -> true
[2021-06-30T06:23:02Z DEBUG pact_matching::json] compare_values: Calling match_values for path $.createdDate
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("createdDate")]' and path '["$", "createdDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (4, 2) for path '$.createdDate' and '["$", "createdDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("accountRef")]' and path '["$", "createdDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.accountRef' and '["$", "createdDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("name")]' and path '["$", "createdDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.name' and '["$", "createdDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("_links"), Field("self"), Field("href")]' and path '["$", "createdDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 4) for path '$._links.self.href' and '["$", "createdDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("accountNumber"), Field("id")]' and path '["$", "createdDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 3) for path '$.accountNumber.id' and '["$", "createdDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("version")]' and path '["$", "createdDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.version' and '["$", "createdDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("lastModifiedDate")]' and path '["$", "createdDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.lastModifiedDate' and '["$", "createdDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("id")]' and path '["$", "createdDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.id' and '["$", "createdDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("_links"), Field("account"), Field("href")]' and path '["$", "createdDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 4) for path '$._links.account.href' and '["$", "createdDate"]'
[2021-06-30T06:23:02Z DEBUG pact_matching::json] JSON -> JSON: Comparing '"2021-06-30T16:10:00.015+10:00"' to '"2021-06-30T06:23:02.348Z"' using Timestamp("yyyy-MM-dd\'T\'HH:mm:ss.SSSX") -> Ok(())
[2021-06-30T06:23:02Z DEBUG pact_matching::json] compare_values: Comparing 'String("2021-06-30T16:10:00.015+10:00")' to 'String("2021-06-30T06:23:02.348Z")' at path '$.createdDate' -> Ok(())
[2021-06-30T06:23:02Z DEBUG pact_matching::json] compare: Comparing path $.id
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("createdDate")]' and path '["$", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.createdDate' and '["$", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("accountRef")]' and path '["$", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.accountRef' and '["$", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("name")]' and path '["$", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.name' and '["$", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("_links"), Field("self"), Field("href")]' and path '["$", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 4) for path '$._links.self.href' and '["$", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("accountNumber"), Field("id")]' and path '["$", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 3) for path '$.accountNumber.id' and '["$", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("version")]' and path '["$", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.version' and '["$", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("lastModifiedDate")]' and path '["$", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.lastModifiedDate' and '["$", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("id")]' and path '["$", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (4, 2) for path '$.id' and '["$", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("_links"), Field("account"), Field("href")]' and path '["$", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 4) for path '$._links.account.href' and '["$", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] matcher_is_defined: for category body and path ["$", "id"] -> true
[2021-06-30T06:23:02Z DEBUG pact_matching::json] compare_values: Calling match_values for path $.id
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("createdDate")]' and path '["$", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.createdDate' and '["$", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("accountRef")]' and path '["$", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.accountRef' and '["$", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("name")]' and path '["$", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.name' and '["$", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("_links"), Field("self"), Field("href")]' and path '["$", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 4) for path '$._links.self.href' and '["$", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("accountNumber"), Field("id")]' and path '["$", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 3) for path '$.accountNumber.id' and '["$", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("version")]' and path '["$", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.version' and '["$", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("lastModifiedDate")]' and path '["$", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.lastModifiedDate' and '["$", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("id")]' and path '["$", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (4, 2) for path '$.id' and '["$", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("_links"), Field("account"), Field("href")]' and path '["$", "id"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 4) for path '$._links.account.href' and '["$", "id"]'
[2021-06-30T06:23:02Z DEBUG pact_matching::json] JSON -> JSON: Comparing '1' to '65665' using Integer -> Ok(())
[2021-06-30T06:23:02Z DEBUG pact_matching::json] compare_values: Comparing 'Number(1)' to 'Number(65665)' at path '$.id' -> Ok(())
[2021-06-30T06:23:02Z DEBUG pact_matching::json] compare: Comparing path $.accountRef
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("createdDate")]' and path '["$", "accountRef"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.createdDate' and '["$", "accountRef"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("accountRef")]' and path '["$", "accountRef"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (4, 2) for path '$.accountRef' and '["$", "accountRef"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("name")]' and path '["$", "accountRef"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.name' and '["$", "accountRef"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("_links"), Field("self"), Field("href")]' and path '["$", "accountRef"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 4) for path '$._links.self.href' and '["$", "accountRef"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("accountNumber"), Field("id")]' and path '["$", "accountRef"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 3) for path '$.accountNumber.id' and '["$", "accountRef"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("version")]' and path '["$", "accountRef"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.version' and '["$", "accountRef"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("lastModifiedDate")]' and path '["$", "accountRef"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.lastModifiedDate' and '["$", "accountRef"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("id")]' and path '["$", "accountRef"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.id' and '["$", "accountRef"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("_links"), Field("account"), Field("href")]' and path '["$", "accountRef"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 4) for path '$._links.account.href' and '["$", "accountRef"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] matcher_is_defined: for category body and path ["$", "accountRef"] -> true
[2021-06-30T06:23:02Z DEBUG pact_matching::json] compare_values: Calling match_values for path $.accountRef
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("createdDate")]' and path '["$", "accountRef"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.createdDate' and '["$", "accountRef"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("accountRef")]' and path '["$", "accountRef"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (4, 2) for path '$.accountRef' and '["$", "accountRef"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("name")]' and path '["$", "accountRef"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.name' and '["$", "accountRef"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("_links"), Field("self"), Field("href")]' and path '["$", "accountRef"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 4) for path '$._links.self.href' and '["$", "accountRef"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("accountNumber"), Field("id")]' and path '["$", "accountRef"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 3) for path '$.accountNumber.id' and '["$", "accountRef"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("version")]' and path '["$", "accountRef"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.version' and '["$", "accountRef"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("lastModifiedDate")]' and path '["$", "accountRef"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.lastModifiedDate' and '["$", "accountRef"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("id")]' and path '["$", "accountRef"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.id' and '["$", "accountRef"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("_links"), Field("account"), Field("href")]' and path '["$", "accountRef"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 4) for path '$._links.account.href' and '["$", "accountRef"]'
[2021-06-30T06:23:02Z DEBUG pact_matching::json] JSON -> JSON: Comparing '"Test001"' to '"Test001"' using Type -> Ok(())
[2021-06-30T06:23:02Z DEBUG pact_matching::json] compare_values: Comparing 'String("Test001")' to 'String("Test001")' at path '$.accountRef' -> Ok(())
[2021-06-30T06:23:02Z DEBUG pact_matching::json] compare: Comparing path $.name
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("createdDate")]' and path '["$", "name"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.createdDate' and '["$", "name"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("accountRef")]' and path '["$", "name"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.accountRef' and '["$", "name"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("name")]' and path '["$", "name"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (4, 2) for path '$.name' and '["$", "name"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("_links"), Field("self"), Field("href")]' and path '["$", "name"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 4) for path '$._links.self.href' and '["$", "name"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("accountNumber"), Field("id")]' and path '["$", "name"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 3) for path '$.accountNumber.id' and '["$", "name"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("version")]' and path '["$", "name"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.version' and '["$", "name"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("lastModifiedDate")]' and path '["$", "name"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.lastModifiedDate' and '["$", "name"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("id")]' and path '["$", "name"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.id' and '["$", "name"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("_links"), Field("account"), Field("href")]' and path '["$", "name"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 4) for path '$._links.account.href' and '["$", "name"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] matcher_is_defined: for category body and path ["$", "name"] -> true
[2021-06-30T06:23:02Z DEBUG pact_matching::json] compare_values: Calling match_values for path $.name
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("createdDate")]' and path '["$", "name"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.createdDate' and '["$", "name"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("accountRef")]' and path '["$", "name"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.accountRef' and '["$", "name"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("name")]' and path '["$", "name"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (4, 2) for path '$.name' and '["$", "name"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("_links"), Field("self"), Field("href")]' and path '["$", "name"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 4) for path '$._links.self.href' and '["$", "name"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("accountNumber"), Field("id")]' and path '["$", "name"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 3) for path '$.accountNumber.id' and '["$", "name"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("version")]' and path '["$", "name"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.version' and '["$", "name"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("lastModifiedDate")]' and path '["$", "name"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.lastModifiedDate' and '["$", "name"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("id")]' and path '["$", "name"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.id' and '["$", "name"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("_links"), Field("account"), Field("href")]' and path '["$", "name"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 4) for path '$._links.account.href' and '["$", "name"]'
[2021-06-30T06:23:02Z DEBUG pact_matching::json] JSON -> JSON: Comparing '"Test"' to '"Test001"' using Type -> Ok(())
[2021-06-30T06:23:02Z DEBUG pact_matching::json] compare_values: Comparing 'String("Test")' to 'String("Test001")' at path '$.name' -> Ok(())
[2021-06-30T06:23:02Z DEBUG pact_matching::json] compare: Comparing path $.lastModifiedDate
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("createdDate")]' and path '["$", "lastModifiedDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.createdDate' and '["$", "lastModifiedDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("accountRef")]' and path '["$", "lastModifiedDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.accountRef' and '["$", "lastModifiedDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("name")]' and path '["$", "lastModifiedDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.name' and '["$", "lastModifiedDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("_links"), Field("self"), Field("href")]' and path '["$", "lastModifiedDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 4) for path '$._links.self.href' and '["$", "lastModifiedDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("accountNumber"), Field("id")]' and path '["$", "lastModifiedDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 3) for path '$.accountNumber.id' and '["$", "lastModifiedDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("version")]' and path '["$", "lastModifiedDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.version' and '["$", "lastModifiedDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("lastModifiedDate")]' and path '["$", "lastModifiedDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (4, 2) for path '$.lastModifiedDate' and '["$", "lastModifiedDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("id")]' and path '["$", "lastModifiedDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.id' and '["$", "lastModifiedDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("_links"), Field("account"), Field("href")]' and path '["$", "lastModifiedDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 4) for path '$._links.account.href' and '["$", "lastModifiedDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] matcher_is_defined: for category body and path ["$", "lastModifiedDate"] -> true
[2021-06-30T06:23:02Z DEBUG pact_matching::json] compare_values: Calling match_values for path $.lastModifiedDate
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("createdDate")]' and path '["$", "lastModifiedDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.createdDate' and '["$", "lastModifiedDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("accountRef")]' and path '["$", "lastModifiedDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.accountRef' and '["$", "lastModifiedDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("name")]' and path '["$", "lastModifiedDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.name' and '["$", "lastModifiedDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("_links"), Field("self"), Field("href")]' and path '["$", "lastModifiedDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 4) for path '$._links.self.href' and '["$", "lastModifiedDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("accountNumber"), Field("id")]' and path '["$", "lastModifiedDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 3) for path '$.accountNumber.id' and '["$", "lastModifiedDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("version")]' and path '["$", "lastModifiedDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.version' and '["$", "lastModifiedDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("lastModifiedDate")]' and path '["$", "lastModifiedDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (4, 2) for path '$.lastModifiedDate' and '["$", "lastModifiedDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("id")]' and path '["$", "lastModifiedDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 2) for path '$.id' and '["$", "lastModifiedDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculating weight for path tokens '[Root, Field("_links"), Field("account"), Field("href")]' and path '["$", "lastModifiedDate"]'
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] Calculated weight (0, 4) for path '$._links.account.href' and '["$", "lastModifiedDate"]'
[2021-06-30T06:23:02Z DEBUG pact_matching::json] JSON -> JSON: Comparing '"2021-06-30T16:10:00.015+10:00"' to '"2021-06-30T06:23:02.348Z"' using Timestamp("yyyy-MM-dd\'T\'HH:mm:ss.SSSX") -> Ok(())
[2021-06-30T06:23:02Z DEBUG pact_matching::json] compare_values: Comparing 'String("2021-06-30T16:10:00.015+10:00")' to 'String("2021-06-30T06:23:02.348Z")' at path '$.lastModifiedDate' -> Ok(())
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] matcher_is_defined: for category body and path [] -> false
[2021-06-30T06:23:02Z TRACE pact_matching::models::matchingrules] matcher_is_defined: for category body and path ["$", "Content-Type"] -> false
[2021-06-30T06:23:02Z INFO  pact_verifier] Running provider state change handler 'Account Test001 exists' for 'a request to get the account details via POST'
[2021-06-30T06:23:02Z DEBUG pact_verifier::provider_client] Sending Request ( method: POST, path: /, query: None, headers: Some({"Content-Type": ["application/json"]}), body: Present(88 bytes, application/json) ) to state change handler
[2021-06-30T06:23:02Z DEBUG reqwest::connect] starting new connection: http://localhost:53720/
[2021-06-30T06:23:02Z TRACE mio::poll] registering event source with poller: token=Token(16777217), interests=READABLE | WRITABLE
[2021-06-30T06:23:02Z TRACE want] signal: Want
[2021-06-30T06:23:02Z TRACE want] signal found waiting giver, notifying
[2021-06-30T06:23:02Z TRACE want] poll_want: taker wants!
[2021-06-30T06:23:02Z TRACE want] signal: Want
[2021-06-30T06:23:02Z TRACE want] signal: Want
[2021-06-30T06:23:02Z DEBUG reqwest::async_impl::client] response '200 OK' for http://localhost:53720/_pactSetup
[2021-06-30T06:23:02Z DEBUG pact_verifier::provider_client] State change request: Response { url: Url { scheme: "http", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("localhost")), port: Some(53720), path: "/_pactSetup", query: None, fragment: None }, status: 200, headers: {"x-powered-by": "Express", "content-type": "application/json; charset=utf-8", "date": "Wed, 30 Jun 2021 06:23:02 GMT", "connection": "keep-alive", "content-length": "0"} }
[2021-06-30T06:23:02Z DEBUG pact_verifier] State Change: "ProviderState { name: "Account Test001 exists", params: {"accountRef": String("Test001")} }" -> Ok({})

@uglyog
Copy link
Member

uglyog commented Jun 30, 2021

Oh, damn, I was hoping it was going to work

@uglyog
Copy link
Member

uglyog commented Jun 30, 2021

Side note: are these expressions part of the specification anywhere? A quick look at v3/v4 I can't see them - should we add them to v4?

You mean are they documented anywhere? The answer is yes, as source code :-D

@mefellows
Copy link
Member

You mean are they documented anywhere? The answer is yes, as source code :-D

I did assume this. I guess we should add it to the v4 RFC then?

@uglyog uglyog added the bug Indicates an unexpected problem or unintended behavior label Jul 3, 2021
uglyog pushed a commit that referenced this issue Jul 3, 2021
mefellows pushed a commit that referenced this issue Jul 3, 2021
mefellows pushed a commit that referenced this issue Jul 3, 2021
uglyog pushed a commit that referenced this issue Jul 4, 2021
@lviana-menlosecurity
Copy link
Author

Hi @mefellows and @uglyog. I see many commits from a couple of weeks ago that are associated with this issue, so thank you for that. Any comments on what is still missing here?

@mefellows
Copy link
Member

mefellows commented Jul 17, 2021

Hi @lviana-menlosecurity, it looks like there has been some work in the rust library to address it. I've just had a quick look at pulling into Pact JS and have managed to resolve a number of errors, and have a compiling local version (see draft PR) but it does not yet seem to address this - using either fromProviderState('accountNumber', 100) or fromProviderState('${accountNumber}', 100) still results in a string value.

@uglyog are we getting ahead of ourselves?

@uglyog
Copy link
Member

uglyog commented Jul 18, 2021

pact-ffi v0.0.0 has all the changes

@mefellows
Copy link
Member

Thanks Ron. I pulled this in locally and made it compile (and you can see the updated deps in the PR), but it does not work.

Do I need to use a different interface?

@uglyog
Copy link
Member

uglyog commented Jul 18, 2021

Oh, yeah, sorry. Pact-JS does not use pact-ffi. Just need to update all the pact rust crates to the latest published ones.

@uglyog
Copy link
Member

uglyog commented Jul 18, 2021

Confirmed it working for the test in Pact-JS: Logs from the test run:

[2021-07-18T07:21:41Z DEBUG pact_matching::models::generators] apply_body_generators: JSON content type
[2021-07-18T07:21:41Z DEBUG pact_models::generators] Applying generator ProviderStateGenerator("${accountNumber}", None) to key $.accountNumber
[2021-07-18T07:21:41Z DEBUG pact_models::generators] Generating value from ProviderStateGenerator("${accountNumber}", None) with context {"accountNumber": Number(10832)}
[2021-07-18T07:21:41Z DEBUG pact_models::generators] Generated value = Ok(Number(10832))

@mefellows
Copy link
Member

Would you mind please pushing up the change you made? For whatever reason, I'm still getting:

[2021-07-18T11:26:27Z DEBUG pact_matching::models::generators] Applying generator ProviderStateGenerator("${accountNumber}", None) to key $.accountNumber
[2021-07-18T11:26:27Z DEBUG pact_matching::json] Generating value from ProviderStateGenerator("${accountNumber}", None) with context {"accountNumber": Number(95006)}
[2021-07-18T11:26:27Z DEBUG pact_matching::json] Generated value = Ok(String("95006"))

@mefellows
Copy link
Member

Latest release has the fix, please let us know if it resolves it.

@lviana-menlosecurity
Copy link
Author

@mefellows, yes I can confirm that this does indeed seem to fix the issue!

@mefellows
Copy link
Member

Great!

opicaud pushed a commit to opicaud/pact-reference that referenced this issue May 15, 2023
# pact-reference-rust-v1.0.0 (2023-05-15)

### Bug Fixes

* `match` arms have incompatible types ([b7f967e](https://github.com/opicaud/pact-reference/commit/b7f967e0d5f6b12530c185aa25e0b071ce46195c))
* access-control-allow-methods header was duplicated ([44e7414](https://github.com/opicaud/pact-reference/commit/44e741400669928190ec494ed84ae0bb28cca047))
* add a small delay after loading plugins via FFI to resolve a race condition ([213d145](https://github.com/opicaud/pact-reference/commit/213d1459c578662532e64ec7a1b1ce9af15cb676))
* add a small delay at the end of validation to allow async tasks to finish ([00a0046](https://github.com/opicaud/pact-reference/commit/00a0046121932cc96b4614dc910864dcd966b35b))
* add a test to reflect behaviour as per V4 spec ([1c45b63](https://github.com/opicaud/pact-reference/commit/1c45b63c02fbb059cc4014faf27f3ea43097793a))
* add callback timeout option for verifcation callbacks ([4afa86a](https://github.com/opicaud/pact-reference/commit/4afa86a785686d3bd5aa16c3c1fff17969613948))
* add cc_library ([93d658f](https://github.com/opicaud/pact-reference/commit/93d658f566d62e07b8dd8f397a6d5f63348d14a3))
* add final newline to verifier output (Jest will overwrite it with the test name) ([8c2152e](https://github.com/opicaud/pact-reference/commit/8c2152ea7a311d8d64d5b1ca96bebf718f0b0f52))
* add function to display binary data in a meaningful way ([2ca2fe4](https://github.com/opicaud/pact-reference/commit/2ca2fe495baea63879d57c573d7cd01e38619921))
* add matching implementations for Vec<u8> and &Vec<u8> ([ede663e](https://github.com/opicaud/pact-reference/commit/ede663ec6a94258e3b7ac7bcb14dc655c38886b4))
* add missing params to provider state change executor ([17682dc](https://github.com/opicaud/pact-reference/commit/17682dcca70558ba7e47cad2ff9f8b72d409c4bc))
* add missing provider-branch to verifier CLI ([0af1830](https://github.com/opicaud/pact-reference/commit/0af18303fbc2898c4edd3fd8b63879cea59cc91d))
* Add OSX to the conan package ([a13c0fc](https://github.com/opicaud/pact-reference/commit/a13c0fc87a0b0bb9819fa04d8be4a9746868c633))
* add test for publish verification result issue [#231](https://github.com/opicaud/pact-reference/issues/231) ([33a784a](https://github.com/opicaud/pact-reference/commit/33a784a02b4de248ecb525c49afe4e0d949a9461))
* add tests for PUT and POST requests [#220](https://github.com/opicaud/pact-reference/issues/220) ([9fc5658](https://github.com/opicaud/pact-reference/commit/9fc56580390f8ed4c21a8bb0bbdfb99d0dc7dd24))
* add visibility public ([2fd1c0d](https://github.com/opicaud/pact-reference/commit/2fd1c0d6a28e11403feb35ae9417a0b8c6668a05))
* add zip file for binary test ([81eed06](https://github.com/opicaud/pact-reference/commit/81eed06215bc71e2688ab768034debcba68817d4))
* Allow dashes in path expressions for headers like Content-Type ([1184203](https://github.com/opicaud/pact-reference/commit/11842036c360487d5eb07f57c272b4d27196fd04))
* allow multiple consumer version selectors ([df23ba3](https://github.com/opicaud/pact-reference/commit/df23ba3de5a1838088d193a23d508d566a4639b0))
* allow the HTTP client to be optional in the provider state executor ([0e8bfad](https://github.com/opicaud/pact-reference/commit/0e8bfadb3b8e4e299ef6695560a1cf15b672c177))
* apply generators to the request in the same manor as the response ([ae95e0c](https://github.com/opicaud/pact-reference/commit/ae95e0cddf8d57403edd281a1eeb5969e041ce8a))
* arrayContains matcher JSON was missing match attribute ([c686ce0](https://github.com/opicaud/pact-reference/commit/c686ce04b0b12727b92a70efbb68f141837d3142))
* async message builder was not setting the pact plugin config correctly ([df67b72](https://github.com/opicaud/pact-reference/commit/df67b7232f0189afa4846cdb0886d35994320a87))
* broken message test ([a7e5778](https://github.com/opicaud/pact-reference/commit/a7e57786c80b3524b9c65a47c77cb3fbb9361d57))
* broken test for v2 path matcher ([5167cfb](https://github.com/opicaud/pact-reference/commit/5167cfbad380b6f732ac1a384981d4886260e366))
* broken tests after handling multiple header values ([7616ccb](https://github.com/opicaud/pact-reference/commit/7616ccbc68232cf5e0a323c0688d4c39c2df14fa))
* cbindgen fails in latest nightly rust ([fcfc7c1](https://github.com/opicaud/pact-reference/commit/fcfc7c1633276283df86c3896d808a89419aaea0))
* cbindgen fails in latest nightly rust ([61e4d69](https://github.com/opicaud/pact-reference/commit/61e4d69d0107f92884607d1b43f5576094bdfddd))
* cbindgen fails in latest nightly rust ([4b1ba4a](https://github.com/opicaud/pact-reference/commit/4b1ba4a26957e5c2f65b98cc08c4d8f46a3474fb))
* change filegroup ([e819794](https://github.com/opicaud/pact-reference/commit/e819794e703f8e62e716a84beee467ed899cf760))
* Charsets in headers should be compared ignoring case ([a151bcc](https://github.com/opicaud/pact-reference/commit/a151bcc50c548396792dca56ac71066fe1cd3443))
* check the size of the merged pact file [#54](https://github.com/opicaud/pact-reference/issues/54) ([bc044be](https://github.com/opicaud/pact-reference/commit/bc044be0c6b42017e85c1b092ac4a6e83f522a05))
* cleanup compiler warning ([beb1c03](https://github.com/opicaud/pact-reference/commit/beb1c031b8f09d355fc6fbc21916eac25307d98a))
* cleanup env var and set tests to not run in parallel on CI [#54](https://github.com/opicaud/pact-reference/issues/54) ([19e8ced](https://github.com/opicaud/pact-reference/commit/19e8cedfdaf0d4cbc5480c1351d46718cb2a6848))
* cleanup warnings and fixed test ([45fc1a0](https://github.com/opicaud/pact-reference/commit/45fc1a06478b442b3d12dc9ea67da06646f5f390))
* CLI was reporting incorrect pact specification version ([6343607](https://github.com/opicaud/pact-reference/commit/634360793c8cbc70abb5223584164924cde2f92a))
* clippy error ([e5b1f93](https://github.com/opicaud/pact-reference/commit/e5b1f93d96b6195b1f7aa89394c2ff49c9a55ead))
* clippy erros ([cbc7812](https://github.com/opicaud/pact-reference/commit/cbc7812aec0efc48ae303e8a3e9fdb8206df48a9))
* clippy violation - caused a compiler error ([728465d](https://github.com/opicaud/pact-reference/commit/728465d51a6cd2a377a5815308ee8e4516df8098))
* clippy violation: using `clone` on a double-reference ([e588bb2](https://github.com/opicaud/pact-reference/commit/e588bb297ccc1310cfb99f23ed771cfeea420171))
* **clippy:** using `clone` on a double-reference; this will copy the reference instead of cloning the inner type ([0a70d64](https://github.com/opicaud/pact-reference/commit/0a70d64df37100bc56e95fd019aade867ae7b607))
* **clippy:** you are implementing `Hash` explicitly but have derived `PartialEq` ([9852811](https://github.com/opicaud/pact-reference/commit/98528116c02eecb53ad4cf0c28680afa87e25bc1))
* comparing query paraneters where actual has less values but there is a type matcher ([0e3db9d](https://github.com/opicaud/pact-reference/commit/0e3db9dff5029e7f4fad4ad51520e46a3bd52fcf))
* conan packages for pact_ffi ([6d1ff31](https://github.com/opicaud/pact-reference/commit/6d1ff318cb3a8187e071bd94aaed467ba9f01847))
* Consumer DSL needs to increment plugin access to avoid plugin shutting down when mock server starts ([57a8ad7](https://github.com/opicaud/pact-reference/commit/57a8ad7d7d679cc5830fdd36cf5b02e465edc10d))
* consumer version selectors ([f4a7d52](https://github.com/opicaud/pact-reference/commit/f4a7d52b7441e5bc7cac0d6d55b7c662b6174287))
* **consumer:** request and response builders were using the first interaction from plugins, not the correct one ([f6d0c35](https://github.com/opicaud/pact-reference/commit/f6d0c35ecacd7fee4cfd0d10d833abb4590fcdc9))
* content type matcher was not being applied if content type was not octet_stream [#171](https://github.com/opicaud/pact-reference/issues/171) ([65d0514](https://github.com/opicaud/pact-reference/commit/65d05149cb720fa4b41f661f40e87b6d74dac9e4))
* correct build dependencies ([f2c7145](https://github.com/opicaud/pact-reference/commit/f2c7145057cc48a1198825421561e854787ba995))
* correct C examples after adding prefix ([5801e46](https://github.com/opicaud/pact-reference/commit/5801e46e3ae69c45ee221adff228a17c6aaf6c78))
* correct clippy error ([7baf074](https://github.com/opicaud/pact-reference/commit/7baf074bfd86944ad3377f90721340eae7eb2b92))
* correct headers attribute with multiple values might not be matched ([eef6b08](https://github.com/opicaud/pact-reference/commit/eef6b0860156b0d66f221a4c2ba990c994be7893))
* correct issue with headers/query with multiple values ([75c965e](https://github.com/opicaud/pact-reference/commit/75c965e476abc3b66bd3634c786d2bb7955be3dc))
* correct overflow of max value for random int generator [#39](https://github.com/opicaud/pact-reference/issues/39) ([91da912](https://github.com/opicaud/pact-reference/commit/91da912c2450e3a0ed661a79ea6836df83887c0a))
* correct pact merging to remove duplicates [#54](https://github.com/opicaud/pact-reference/issues/54) ([a660b87](https://github.com/opicaud/pact-reference/commit/a660b877a8ec48d48a379755a2dfeb91ae48f0de))
* correct parsing of JSON encoded bodies as per V4 spec ([ba24b0a](https://github.com/opicaud/pact-reference/commit/ba24b0a83ac8dac223c590a2529033907911b9b0))
* Correct test after upgrading pact_models to 1.0.2 ([2cf5d8a](https://github.com/opicaud/pact-reference/commit/2cf5d8addc5a1fe139254bae53bab29a26873378))
* correct the backing arary list for headers from FFI call ([9c84713](https://github.com/opicaud/pact-reference/commit/9c84713c57a021b156d7fce909d575be18d02342))
* correct the backing array list for query parameters from FFI call ([c93e364](https://github.com/opicaud/pact-reference/commit/c93e3640a170125c8e02f83bef90d472eaf8d560))
* correct the matching logic with lists and eachkey/eachvalue matchers ([1a01d11](https://github.com/opicaud/pact-reference/commit/1a01d111e656d743a899545b0b693702275c2119))
* correct the pact_verifier_cli release scripts ([f9cf35f](https://github.com/opicaud/pact-reference/commit/f9cf35f3a315204ed8b6a8cf6a81933753872657))
* correct the release script ([adf1a97](https://github.com/opicaud/pact-reference/commit/adf1a978b31d23f9adc85643ef79c0d33fa9e092))
* correct the release scripts ([2057f2c](https://github.com/opicaud/pact-reference/commit/2057f2c16e7c16d700919f9f2618e4b22bfc9e22))
* correct the version in pact_verifier_cli ([f9ecd89](https://github.com/opicaud/pact-reference/commit/f9ecd8907945d4b95f0e6fd71c5bb5cc701e018c))
* correct the version of the pact_consumer crate ([2b39873](https://github.com/opicaud/pact-reference/commit/2b39873d9b4ecaba2de6bd4f7e334beda9540458))
* correct the windows lib name in conan package ([4287f0e](https://github.com/opicaud/pact-reference/commit/4287f0ebe179df1acab10c90186ca2acbb8563f0))
* correct the windows lib name in conan package ([c1015d5](https://github.com/opicaud/pact-reference/commit/c1015d5c488f6f2886643a701e54384451b3f904))
* correct version ([637e814](https://github.com/opicaud/pact-reference/commit/637e814131dd09f77d97ab2bb3b3a79543b59ce9))
* corrected some spelling ([b5c7842](https://github.com/opicaud/pact-reference/commit/b5c7842fefd250240b5c95a2bddbe3ad82b162ea))
* corrected the docker build for the mock server cli [#14](https://github.com/opicaud/pact-reference/issues/14) ([a45d5f8](https://github.com/opicaud/pact-reference/commit/a45d5f86d55ec6e2ffa94b352cc983d418899c5a))
* corrected the docker build for the verifier cli [#14](https://github.com/opicaud/pact-reference/issues/14) ([9d24b7e](https://github.com/opicaud/pact-reference/commit/9d24b7e021dbc2b108e7cda7eda8f40379625abf))
* corrected the release scripts to check for a version parameter ([386ab52](https://github.com/opicaud/pact-reference/commit/386ab52b5ff8915d8733645ff0b82c27b06ba0c4))
* correctly assemble UTF-8 percent encoded query parameters ([7f054e8](https://github.com/opicaud/pact-reference/commit/7f054e844cfe8940a4e698c0d29571ef78755cbc))
* **cors:** source allowed origin from origin header, add credentials ([86d32dd](https://github.com/opicaud/pact-reference/commit/86d32ddf09df4c127dba7e2b2e46959ef5f870e6))
* date and time matchers with JSON ([2920364](https://github.com/opicaud/pact-reference/commit/2920364b4e97ffceb68829d6f1bf41a47a9381d4))
* date/time matchers fallback to the old key ([61ab50f](https://github.com/opicaud/pact-reference/commit/61ab50f4d4e859452f2ea24ac0f914ccd915ab9b))
* detect common text types when comparing content type ([a0c9d20](https://github.com/opicaud/pact-reference/commit/a0c9d2030750e2facb716a2a21143d3c861c9996))
* display the error message when the verification can not be run due to an error ([bfa0437](https://github.com/opicaud/pact-reference/commit/bfa0437022a6b0c9ddb4c5a4d736254e13d220f2))
* doc tests with Into trait fail to link with Rust beta 1.27.0 ([1e0c65b](https://github.com/opicaud/pact-reference/commit/1e0c65bfc0c51dd766646a87f6ca2f3f026fbea4))
* docker build now requires libclang system library ([9f3ad74](https://github.com/opicaud/pact-reference/commit/9f3ad748db76bf19b92e92978db25131b5876148))
* docker file needs to be able to build Oniguruma lib ([8a0c5c2](https://github.com/opicaud/pact-reference/commit/8a0c5c259157a7523b5e2a325e49a7edca5e99de))
* docker release script ([0dd10e6](https://github.com/opicaud/pact-reference/commit/0dd10e6476edd5407173e4f695b59aa2006aa5c0))
* docker release script ([5b22076](https://github.com/opicaud/pact-reference/commit/5b22076817438d8a62f8370f5933bc7124a4304f))
* DocPath join needs to detect numeric values ([7b2e853](https://github.com/opicaud/pact-reference/commit/7b2e85380f825f0f87a258f38361d4e79a1a5870))
* Docpath join was escaping * ([a3f7471](https://github.com/opicaud/pact-reference/commit/a3f747115a4721180928af3a2c9cb7565db9f948))
* don't clone a double reference (clippy error) ([d8ceb74](https://github.com/opicaud/pact-reference/commit/d8ceb7463ede069ab82cfe3a873856d6382f0b11))
* don't unwrap a result when generating random string from regex ([9389c0a](https://github.com/opicaud/pact-reference/commit/9389c0a1af723e2619bf0bda1c11bbe6c50014d1))
* drop(from_raw(ptr))` if you intend to drop the `CString` ([1cafd00](https://github.com/opicaud/pact-reference/commit/1cafd00a0d8ad441cd5b3aaf8de5ae91c1e772f4))
* Each key matching was not implemented correctly ([28f562e](https://github.com/opicaud/pact-reference/commit/28f562e298ff203c665b3a45ac07f53add7ea652))
* EachValue was outputting the wrong JSON ([48a6be5](https://github.com/opicaud/pact-reference/commit/48a6be5f28552ebc164bb87538c47f00614cb19f))
* error caused an internal mutex to be poisoned ([5251fcf](https://github.com/opicaud/pact-reference/commit/5251fcf5c1df854742e90eafde1374930fe03e0e))
* expected opaque type, found enum `Result` ([fe22ae3](https://github.com/opicaud/pact-reference/commit/fe22ae3aba36d3c0c332ad345d81534bd0ddf3ff))
* failing pact_consumer build ([13976f5](https://github.com/opicaud/pact-reference/commit/13976f5285af17d324f7d6d816a2707a727278d8))
* failing test after changing  message_with_contents function signature ([78c20d6](https://github.com/opicaud/pact-reference/commit/78c20d6ae90af41c548593668dd37e76236ee9f2))
* failing tests [#116](https://github.com/opicaud/pact-reference/issues/116) ([b1a4c8c](https://github.com/opicaud/pact-reference/commit/b1a4c8cb2cc72b6b7d195e6e486e2129955d759e))
* feat deps pattern to use via external libpact_ffi.a ([77a5e26](https://github.com/opicaud/pact-reference/commit/77a5e2661e12a4d55d3145af4f45b8518b802783))
* FFI always detects + stores JSON bodies as plain text ([aff4d30](https://github.com/opicaud/pact-reference/commit/aff4d301c7f674a2131f79fef3e3cf43ee7dc0ac))
* FFI datetime matcher was using incorrect field ([ddacb5d](https://github.com/opicaud/pact-reference/commit/ddacb5d77fdb18b1a6fd13d410f02c7acfa603cc))
* FFI function was exposing a struct from the models crate ([8b075d3](https://github.com/opicaud/pact-reference/commit/8b075d3867113b900fa6d781bee41c9cd6780138))
* FFI mismatch json should have the actual values as UTF-8 string not bytes [#64](https://github.com/opicaud/pact-reference/issues/64) ([a45d0c3](https://github.com/opicaud/pact-reference/commit/a45d0c3b1b49ce9ad3cee6246b41d4b9c8114c7f))
* ffi.pactffi_logger_attach_sink causes seg fault if log directory doesn't exist [#226](https://github.com/opicaud/pact-reference/issues/226) ([9dad5d2](https://github.com/opicaud/pact-reference/commit/9dad5d2a0304bf28c30e05f10f1ce6ef703d8c63))
* **FFI:** broken build after upgrading pact_models ([4f366ac](https://github.com/opicaud/pact-reference/commit/4f366ac5e5b55d967b4497bb9e2d940a4a384adb))
* **ffi:** correct race condition in pactffi_using_plugin ([d41e244](https://github.com/opicaud/pact-reference/commit/d41e2440a8d5011e51a90eeb44dcaa7dbe448b0d))
* **FFI:** FFI passes matching rules and generators for paths etc. with a path of $ ([b6bba54](https://github.com/opicaud/pact-reference/commit/b6bba5403f2f5b785f89bd46ab4d4a7522299f03))
* **FFI:** fix matching rule for paths [#205](https://github.com/opicaud/pact-reference/issues/205) ([e95d701](https://github.com/opicaud/pact-reference/commit/e95d701da50984b2fdb578405a39836a9e479f9e))
* **FFI:** fix matching rule for paths [#205](https://github.com/opicaud/pact-reference/issues/205) ([b0fdbb6](https://github.com/opicaud/pact-reference/commit/b0fdbb6eef339fa345c4ad1990e9003f00dfdf74))
* **FFI:** fixed race condition with Pact handle ids ([8520760](https://github.com/opicaud/pact-reference/commit/852076025500a0347dfe1127c6ec27f1f7d3dd6e))
* **FFI:** handle headers with multiple values correctly [#205](https://github.com/opicaud/pact-reference/issues/205) ([f634fa9](https://github.com/opicaud/pact-reference/commit/f634fa91dace0daa3163aa9600f4055039915490))
* **FFI:** handle query parameters with multiple values correctly [#205](https://github.com/opicaud/pact-reference/issues/205) ([52b7009](https://github.com/opicaud/pact-reference/commit/52b7009763e55d00b42cbc8fa5f62796d464d062))
* **FFI:** Message metadata was not being passed on to the mock server ([a56bc05](https://github.com/opicaud/pact-reference/commit/a56bc05601ea439acc4840e1fed32b0e50fcf563))
* **ffi:** OSX CMake file had the wring filename ([1307dde](https://github.com/opicaud/pact-reference/commit/1307dde047635cb18533f463e9383b322927a11b))
* **ffi:** pactffi_create_mock_server_for_transport was returning the wrong status for invalid address ([a78f2a1](https://github.com/opicaud/pact-reference/commit/a78f2a1d74491b0d7269204bbdbae4d14f90f8f5))
* **FFI:** pactffi_with_binary_file was incorrectly setting the response content type to application/octet-stream [#171](https://github.com/opicaud/pact-reference/issues/171) ([3c5c45d](https://github.com/opicaud/pact-reference/commit/3c5c45d4e6f1b6f7f8a8e29787fb12074eeb53e1))
* **ffi:** plugin data was not merged into the Pact file correctly ([797d1cc](https://github.com/opicaud/pact-reference/commit/797d1cceb5e703c0112766e2db690167c26c5d98))
* **FFI:** Replaced the matching rule union type with 3 FFI functions which should support Go better ([7756d30](https://github.com/opicaud/pact-reference/commit/7756d305f03577ae28fe33943968e397d0b8758b))
* **ffi:** resources were not freed correctly when the mock server is provided by a plugin ([873f0c9](https://github.com/opicaud/pact-reference/commit/873f0c938b5af33b4fa2163c7af0368f5f88530b))
* **FFI:** update the example in docs to use new function [#205](https://github.com/opicaud/pact-reference/issues/205) ([f0cde4e](https://github.com/opicaud/pact-reference/commit/f0cde4e949a9c9b12a617a524d7e4e1329416246))
* **FFI:** use a multi-threaded reactor for FFI setup_contents call to plugins ([ec2ed51](https://github.com/opicaud/pact-reference/commit/ec2ed51dc2f45c4a1dfeb75784b3d357f72c14ed))
* **FFI:** Use a star for the path with values matcher [#216](https://github.com/opicaud/pact-reference/issues/216) ([b8be05c](https://github.com/opicaud/pact-reference/commit/b8be05c1c4363391379997b692e48438df38e6f1))
* fix missing last tag ([36f7e47](https://github.com/opicaud/pact-reference/commit/36f7e477761bea6eda1945e08b3d946e65c7e4bd))
* fix the build after refactoring the pact write function ([2fb0c6e](https://github.com/opicaud/pact-reference/commit/2fb0c6e3005872636f45677e1824d092e548727b))
* for failing integration test ([2679653](https://github.com/opicaud/pact-reference/commit/26796531b54baac1de99425644d37e4c3316acaf))
* generators in process_object ([63ab0d2](https://github.com/opicaud/pact-reference/commit/63ab0d2d846378be5ceb07c3449f4a6aa8252a8a))
* generators to_json was only writing the first one for bodies, headers and queries ([cbb6e20](https://github.com/opicaud/pact-reference/commit/cbb6e209df045599f2ced277a77788d64081d5ea))
* get verify_provider_async to wait on the metric call ([8056d7e](https://github.com/opicaud/pact-reference/commit/8056d7e96ca4dfd6db157a06699a5aa355752b48))
* global options no longer incorrectly display a warning about being provided twice [#27](https://github.com/opicaud/pact-reference/issues/27) ([e5af1b0](https://github.com/opicaud/pact-reference/commit/e5af1b077a6479ef9a1d0cb961f1bedb9576fcc7))
* handle path expressions that start with an underscore ([433d9c5](https://github.com/opicaud/pact-reference/commit/433d9c5941ddddb117e96c3c54272a9b4bbb9e99))
* Header matching rules with an index were not being applied [#238](https://github.com/opicaud/pact-reference/issues/238) ([2c8467e](https://github.com/opicaud/pact-reference/commit/2c8467ed19ed224b89bdfb51253953049a8ae0f2))
* http_consumer_feature_test on linux ([52768a3](https://github.com/opicaud/pact-reference/commit/52768a339ffa78fa9311b8664565162c57fb2b34))
* ignore flakey test ([6ff9c33](https://github.com/opicaud/pact-reference/commit/6ff9c33c61df43020a9147dedee9a45fc5cf72be))
* implement display for Interaction and Message ([831ba3d](https://github.com/opicaud/pact-reference/commit/831ba3d1b90ae1cf7852106f0fe89db0f1ff39ca))
* improve the error message when a merge conflict occurs ([6af29ce](https://github.com/opicaud/pact-reference/commit/6af29ce86db7d00f679fc1c079d51963a25afa2c))
* in callback executors, pass self by value to avoid lifetime issues ([a27ce14](https://github.com/opicaud/pact-reference/commit/a27ce14e410e971dc636c08df765a0f46174c6e3))
* include test results for successful interactions when publishing verification results [#92](https://github.com/opicaud/pact-reference/issues/92) ([74bd53f](https://github.com/opicaud/pact-reference/commit/74bd53fdef37396e30998671688629aacfe5413b))
* incorrectly handling provider state parameters from FFI call ([3a12b6f](https://github.com/opicaud/pact-reference/commit/3a12b6feda35f654d4f3d1a479eaae15715e33bf))
* Interaction builder was not copying plugin config data to the Pact metadata ([e91ad62](https://github.com/opicaud/pact-reference/commit/e91ad6221454d894f77eaf1cad745364a77adc10))
* intermediate date/time matcher JSON should use the format attribute ([f94f25a](https://github.com/opicaud/pact-reference/commit/f94f25a41405c18c46dec324ce7df23d9ff38cbd))
* introduce GeneratorTestMode and restrict provider state generator to the provider side ([13ce2f2](https://github.com/opicaud/pact-reference/commit/13ce2f21a830cdf1aeb0c880fc8a45f0a117cea5))
* jsdom does not support access-control-allow-headers: * for CORS pre-flight responses ([326d02d](https://github.com/opicaud/pact-reference/commit/326d02d181e336f8ad515d85e55c3651e17cc974))
* Keep the original value when injecting from a provider state value so data type is retained [#116](https://github.com/opicaud/pact-reference/issues/116) ([e21db69](https://github.com/opicaud/pact-reference/commit/e21db69997f99270c515d1a23fbaa54f6b5d75b5))
* linux verifier ffi shasum path was incorrect. Fixes [#114](https://github.com/opicaud/pact-reference/issues/114) ([12e5170](https://github.com/opicaud/pact-reference/commit/12e51704360c3d323bd030357ce22a6bb88c4790))
* lock the pact crate versions so that updates do not break CLI install [#189](https://github.com/opicaud/pact-reference/issues/189) ([8d58ea3](https://github.com/opicaud/pact-reference/commit/8d58ea349b9a1363ff994c786b64429d05213299))
* log crate version must be fixed across all crates (including plugin driver) ([c208964](https://github.com/opicaud/pact-reference/commit/c20896454047e8e8e69795c0854ee9e6332dc945))
* Macos on conan package ([a0d701e](https://github.com/opicaud/pact-reference/commit/a0d701ee0e83ad785002cb59a46e13e900729a04))
* make application/xml equivalent to text/xml ([6995298](https://github.com/opicaud/pact-reference/commit/6995298e241bf193d906ec2474dee960b2765d81))
* make HAL client fetch and fetch link functions support brokers hosted with context paths [#220](https://github.com/opicaud/pact-reference/issues/220) ([77a7c8b](https://github.com/opicaud/pact-reference/commit/77a7c8ba4d4c60c95081bab040448050ea626873))
* make sure metadata entries are correctly encoded when downgrading a pact ([a859d0e](https://github.com/opicaud/pact-reference/commit/a859d0e1ac53952af7f18913ba59c854a69240e8))
* map matching logic was not including the EachValue matcher ([cd6fe27](https://github.com/opicaud/pact-reference/commit/cd6fe27a3959e43b867254f673207c48ea9b1349))
* matcher_from_integration_json in mockserver/bodies.rs doesn't support all MatchingRules [#247](https://github.com/opicaud/pact-reference/issues/247) ([3760c2b](https://github.com/opicaud/pact-reference/commit/3760c2b3d1bf20be5f1ace96573b1452e28b56f7))
* matchers in Pact file can have a different order on OSX ([c8ad6d4](https://github.com/opicaud/pact-reference/commit/c8ad6d49a916c5c1232c485a24cfa31b247acba0))
* matching binary data was broken after refactor ([d24cfe3](https://github.com/opicaud/pact-reference/commit/d24cfe30e0bca6bea212589bbca2c5c4a5df2154))
* matching definition parser was incorrectly merging multiple definitions ([e1e0b43](https://github.com/opicaud/pact-reference/commit/e1e0b43ecca23a261438268746ef44015d938087))
* Matching rule parser was not handling decimal values correctly ([74a36a1](https://github.com/opicaud/pact-reference/commit/74a36a1b768908c3b76a44d8a3e36ea1ba41ab34))
* Matching rules are not being applied correctly to message metadata [#245](https://github.com/opicaud/pact-reference/issues/245) ([4409441](https://github.com/opicaud/pact-reference/commit/4409441b21b8f6a3edf8029ba9b49ce640871dcb))
* message pact feature test ([cf679bd](https://github.com/opicaud/pact-reference/commit/cf679bdd3996a41e842cedefd1194c52264cabfa))
* message pact feature test ([84d79a1](https://github.com/opicaud/pact-reference/commit/84d79a10afa86d50097f32adc70b4d33b2e90b74))
* message pact needed matchingrules + generators ([59e23f4](https://github.com/opicaud/pact-reference/commit/59e23f416932638708d20237d6db5fec394738f1))
* Message pact was not loading the IDs from the Pact Broker [#239](https://github.com/opicaud/pact-reference/issues/239) ([64d500b](https://github.com/opicaud/pact-reference/commit/64d500b0c7f47141a39fea36cd989bf15fd99a04))
* message_reify was returning a pointer to a Rust string ([ad0a72e](https://github.com/opicaud/pact-reference/commit/ad0a72ee9cfa7fab8f58bfb29527a59f325cfad0))
* Metadata was missing from the generator categories ([f84adc7](https://github.com/opicaud/pact-reference/commit/f84adc7ad614d548305c27c1d0ade0ae627481dc))
* **metrics:** swap uid for cid ([25d8cd9](https://github.com/opicaud/pact-reference/commit/25d8cd9b516ce619ac3a4e7354b3c7e174eec734))
* min/max type matchers must not apply the limits when cascading ([8bcd1c7](https://github.com/opicaud/pact-reference/commit/8bcd1c7ecad5a1792b6c446a90806be902c11ca2))
* min/max type matchers were not being applied to query parameters ([4e9d837](https://github.com/opicaud/pact-reference/commit/4e9d837430051609da15f0930b44a725f5190673))
* missing $ in macro ([86f8140](https://github.com/opicaud/pact-reference/commit/86f81408bb2d0f876cab73631dfe3f084abaabcf))
* missing import ([6076485](https://github.com/opicaud/pact-reference/commit/607648555e1bb7ba278a55e7d1e32b2a7a41747d))
* mock server matching requests with headers with multiple values ([d85f28c](https://github.com/opicaud/pact-reference/commit/d85f28c05cca9fa2548e57c765367c17ff103248))
* MockServerURL generator was using the incorrect field ([56ce20a](https://github.com/opicaud/pact-reference/commit/56ce20a03a33f16f853b5d86e3a8e41ce07bf4af))
* notEmpty matching rule defintion should be applied to any primitive value ([407cc2e](https://github.com/opicaud/pact-reference/commit/407cc2e5208743a151b1f6e99d3c649b89e49654))
* ok so maybe let's see if this works on linux 🤷 ([eb4b328](https://github.com/opicaud/pact-reference/commit/eb4b328ed43cf0d9dfd50316806248a22d2b40fe))
* Only print errors in the CLI to STDERR [#28](https://github.com/opicaud/pact-reference/issues/28) ([3c33294](https://github.com/opicaud/pact-reference/commit/3c33294887f109f1944c7793a56cd383d2f8b6f3))
* pact specification key in the metadata should be camelcase [#3](https://github.com/opicaud/pact-reference/issues/3) ([b68c893](https://github.com/opicaud/pact-reference/commit/b68c8937e59a8f836e485e573228ae11a1f74060))
* pact_consumer should be a dev dependency ([0c5d6c2](https://github.com/opicaud/pact-reference/commit/0c5d6c27fa8bf1b3c08d2a63c172dfd00897bdb9))
* PACT_DO_NOT_TRACK should be upper case ([43754e6](https://github.com/opicaud/pact-reference/commit/43754e6df296709ccc5be1f5645ad44bfada4bc7))
* pact_verifier_cli needs to use Tokio 0.2 ([2ebeef9](https://github.com/opicaud/pact-reference/commit/2ebeef9a1e2ec47e05f56f98bf72c6e059715d0d))
* pact_verifier_cli was printing the version from the FFI crate ([e8d6d84](https://github.com/opicaud/pact-reference/commit/e8d6d84414e266d0557d6aee4f7260b70a2caf18))
* **pact_verifier_cli:** log entries were being duplicated ([05e6399](https://github.com/opicaud/pact-reference/commit/05e6399d4568b312b8a65cc80e20cc16fd6d01e8))
* **pact_verifier_cli:** stop using deprecated clap::parser::matches::arg_matches::ArgMatches::values_of_lossy ([b626002](https://github.com/opicaud/pact-reference/commit/b626002c1aebecd8a7697d17fd3faf08148dfc13))
* pact_verifier_ffi release scripts ([6daae85](https://github.com/opicaud/pact-reference/commit/6daae85947f85aef9eec0d4e8dc1db2364a73218))
* **pact-ffi:** intermediate JSON - add test for JSON with decimal matcher [#179](https://github.com/opicaud/pact-reference/issues/179) ([7688908](https://github.com/opicaud/pact-reference/commit/76889087a5292fd6d131486214a9447d8dace112))
* **pact-ffi:** intermediate JSON - type matcher paths were being incorrectly allocated to children [#179](https://github.com/opicaud/pact-reference/issues/179) ([b10453c](https://github.com/opicaud/pact-reference/commit/b10453c3dec92b95b5e8c201de19385dddc4a382))
* pacts for verification unmarshal fails if 'pending' attr is not returned in response ([d481bc1](https://github.com/opicaud/pact-reference/commit/d481bc10d379bc68128cce340468fd01ee3d0c5b))
* panicked at 'called  on a  value' when FFI LevelFilter == Off [#226](https://github.com/opicaud/pact-reference/issues/226) ([d976db0](https://github.com/opicaud/pact-reference/commit/d976db0c3d413fceee6b2cb14353793d9f6c62b0))
* parse the V3 keys as path expressions for query and header matchers ([948e620](https://github.com/opicaud/pact-reference/commit/948e620ca8f14fcb6e4b05cb585076a79aa0fe0a))
* path in release scripts ([2f29760](https://github.com/opicaud/pact-reference/commit/2f2976088e468520ee810c012468d13a8a4c35cd))
* pinning version of webmachine until reqwest is updated ([773b4b1](https://github.com/opicaud/pact-reference/commit/773b4b1076f018c14444fd56028064bb404f67c5))
* PluginData configuration is optional ([c0bdd35](https://github.com/opicaud/pact-reference/commit/c0bdd359f792a070e2099256c84f603a3781125d))
* ported matching logic fixes from Pact-JVM ([6633575](https://github.com/opicaud/pact-reference/commit/6633575c148931bdb971ba2741cb9487483066c3))
* provider request timeout should be > 16bit integers. Fixes https://github.com/pact-foundation/pact-js/issues/761 ([0ef3fb9](https://github.com/opicaud/pact-reference/commit/0ef3fb981a53f1858f875fc29ef561ceed1b0c26))
* provider state handlers must be synchronous so they are executed for the actual request ([126b463](https://github.com/opicaud/pact-reference/commit/126b4635613820bcdc827f605a63b72fcc98d7dd))
* publishing provider branch was broken when invoked via a webhook call ([7f51bdc](https://github.com/opicaud/pact-reference/commit/7f51bdc6ddb64478e5b1e10a618a2d35b64ef430))
* race condition when shutting down plugin via FFI ([e4a445b](https://github.com/opicaud/pact-reference/commit/e4a445ba15e71f7332cf1f411b6b744c40e3c847))
* random decimal generator now includes a decimal point in the generated values ([042bed0](https://github.com/opicaud/pact-reference/commit/042bed0aeb136d2d26e8cd47e861c64ae324f72e))
* release script ([0fe57d9](https://github.com/opicaud/pact-reference/commit/0fe57d9ca24bcf683f0e74a3cbb59b631e8615c6))
* remove duplicated line ([a7c674a](https://github.com/opicaud/pact-reference/commit/a7c674ab0985cddc73947e2b75dad65856377a08))
* repeat the test 3 times [#54](https://github.com/opicaud/pact-reference/issues/54) ([d4dd39f](https://github.com/opicaud/pact-reference/commit/d4dd39f6f305d3dafb4ef321bbdf56701cb4324b))
* reqwest is dyn linked to openssl by default, which causes a SIGSEGV on alpine linux ([b4e2684](https://github.com/opicaud/pact-reference/commit/b4e2684404bdcd8543aa352eb937d57f597c8555))
* results for sync messages were not being displayed ([4587a43](https://github.com/opicaud/pact-reference/commit/4587a430247ca3457ac550fe1839a4a14b9e35a2))
* retain the data type for simple expressions [#116](https://github.com/opicaud/pact-reference/issues/116) ([80e3c4e](https://github.com/opicaud/pact-reference/commit/80e3c4e722bdde71a242ad039d2b0f416a757279))
* return a failure if any pact verification fails [#47](https://github.com/opicaud/pact-reference/issues/47) ([665bbd8](https://github.com/opicaud/pact-reference/commit/665bbd8c112c75d4062a3b83020d24faad8f5c10))
* return the most relevant response from the mock server [#69](https://github.com/opicaud/pact-reference/issues/69) ([da53bac](https://github.com/opicaud/pact-reference/commit/da53bacf9238e87413ea7841b9ad03ce462fab6c))
* return version of the mock server via FFI without heap allocation [#80](https://github.com/opicaud/pact-reference/issues/80) ([51eef86](https://github.com/opicaud/pact-reference/commit/51eef864f040d93a112f91e45f742be04ab1fe85))
* rust/pact_mock_server_cli/Dockerfile to reduce vulnerabilities ([fcbee0c](https://github.com/opicaud/pact-reference/commit/fcbee0c2a9e137354c95200778d345bb9628ded8))
* rust/pact_mock_server_cli/Dockerfile to reduce vulnerabilities ([eb92d66](https://github.com/opicaud/pact-reference/commit/eb92d665cdd7aec7c48a0c2d487e6956498e9bce))
* rust/pact_verifier_cli/Dockerfile to reduce vulnerabilities ([c7f6887](https://github.com/opicaud/pact-reference/commit/c7f6887148187cf60cd471883425dee225c496ea))
* rust/pact_verifier_cli/Dockerfile to reduce vulnerabilities ([f709528](https://github.com/opicaud/pact-reference/commit/f709528d6bccae8acc984b7d8f3ad5ce01af68eb))
* serialise v2 path matcher correctly for FFI ([a33718a](https://github.com/opicaud/pact-reference/commit/a33718a096ab2d6d6e79e2a646fbce484918ed78))
* set content-type header in message request ([3e943b1](https://github.com/opicaud/pact-reference/commit/3e943b1677321d4e91ac25ed66e4c847ed92ab0e))
* set the path to the generated pact file [#54](https://github.com/opicaud/pact-reference/issues/54) ([b5474b4](https://github.com/opicaud/pact-reference/commit/b5474b4a91cf2a9d1b3edb85c15ddfa43d926031))
* shared mime-info db not available on Windows ([41b406a](https://github.com/opicaud/pact-reference/commit/41b406aac30bc5ae7b3000a5a1558997dfb074cf))
* shutdown the tokio reactor correctly when there is an error ([c97f5d1](https://github.com/opicaud/pact-reference/commit/c97f5d1a326fb4695be374309f1b18fcdfa02b0c))
* Some matching rules do not have associated configuration ([39338c4](https://github.com/opicaud/pact-reference/commit/39338c46f8e43661605267deac822835aa0ad49e))
* sort the header and query parameter keys when writing the pact [#246](https://github.com/opicaud/pact-reference/issues/246) ([4c04cb6](https://github.com/opicaud/pact-reference/commit/4c04cb65edc8c04abc2dab059cfdfb0d091ef640))
* State change descriptions were not being displayed along with the interaction description ([6cae9b0](https://github.com/opicaud/pact-reference/commit/6cae9b0932eb03a3d8c909ad92b7a9c8c3f12a0d))
* state change URLs should not end with a slash [#110](https://github.com/opicaud/pact-reference/issues/110) ([e993074](https://github.com/opicaud/pact-reference/commit/e99307407c0c24314e73d125a5e1927252502a76))
* store matching rules in a set to avoid duplicates ([a0dc946](https://github.com/opicaud/pact-reference/commit/a0dc9468837f9d3cf05b39d7310b258c30c721ee))
* strip off anchors before generating a value from a regex ([cd9d41c](https://github.com/opicaud/pact-reference/commit/cd9d41cc78bb0dc7f27739eeceeea684594a9589))
* support header values that are not well formed [#228](https://github.com/opicaud/pact-reference/issues/228) ([4f786ff](https://github.com/opicaud/pact-reference/commit/4f786ff4baf568c000bc209d5020a79e381cc1c0))
* support matching rules affected by Pact-JVM defect 743 ([97abce4](https://github.com/opicaud/pact-reference/commit/97abce4d0ffb136e9bb136da9d6cd326e8aad765))
* Support RequestResponsePact loading from V4 formatted JSON [#246](https://github.com/opicaud/pact-reference/issues/246) ([155dae4](https://github.com/opicaud/pact-reference/commit/155dae400c8718121c430f2bf9b84399866b6b21))
* support specifying matching_branch in verifications ([29605ab](https://github.com/opicaud/pact-reference/commit/29605ab06dd6ffcc1c120f0506339eec7a996858))
* support specifying matching_branch in verifications ([260deb7](https://github.com/opicaud/pact-reference/commit/260deb7026c81c3d81d2c277c5777a9ae44c1d9b))
* switch to the Oniguruma crate for regex matching [#46](https://github.com/opicaud/pact-reference/issues/46) ([defe890](https://github.com/opicaud/pact-reference/commit/defe8907b4f261ca02487ece9c96325b3886f27b))
* Templated values in HAL links need to be URL encoded [#166](https://github.com/opicaud/pact-reference/issues/166) ([f4fdba3](https://github.com/opicaud/pact-reference/commit/f4fdba3c2a3e81962e096fa2dbfa0632c44b4e4b))
* times with millisecond precision less 3 caused chronos to panic ([850282d](https://github.com/opicaud/pact-reference/commit/850282d70787eee0c015ccbb97daa20f88f8faf6))
* try loosen dependencies to fix dependency cycle issue ([f91dc00](https://github.com/opicaud/pact-reference/commit/f91dc00da1013bbedd8880f1aab821dba343bb1c))
* update conan test packages to use updated API ([2eba288](https://github.com/opicaud/pact-reference/commit/2eba2886d77e1cd025d6cbb72d78957654bd9ab5))
* update doc comment on message_with_contents function ([64e0700](https://github.com/opicaud/pact-reference/commit/64e07005ac9b791207e1cad363f952db0086df11))
* update flakey ffi feature test ([7d50453](https://github.com/opicaud/pact-reference/commit/7d50453f50b51edfeace4ab766d9dc571eb5920c))
* Update onig to latest master to fix  Regex Matcher Fails On Valid Inputs [#214](https://github.com/opicaud/pact-reference/issues/214) ([6ad00a5](https://github.com/opicaud/pact-reference/commit/6ad00a5da941a700ed0443104fc07c88e825461c))
* update to latest driver crate ([fc5be20](https://github.com/opicaud/pact-reference/commit/fc5be20223124292f089d9d5a5a303c2ebfd84de))
* update to latest models and plugin driver crates ([918e5be](https://github.com/opicaud/pact-reference/commit/918e5beb7c4422c061c6f6fff0bc64c2524c42d0))
* Upgrade pact_models to 0.4.5 - fixes FFI bug with generators for request paths ([f8db90d](https://github.com/opicaud/pact-reference/commit/f8db90d2df4b316eed7a93cbf02bf6e79f7fd34a))
* Upgrade pact_models to 1.0 and pact-plugin-driver to 0.1.15 to fix cyclic dependency issue ([577824e](https://github.com/opicaud/pact-reference/commit/577824e70e0571ddf8292cd55cc981cef92c7c31))
* Upgrade pact_verifier to 0.13.13 ([cdb555f](https://github.com/opicaud/pact-reference/commit/cdb555f8adb122c74c394ccad085d1597177c270))
* Upgrade plugin driver to 0.1.13 (fixes issue loading plugin when there are multiple versions for the same plugin) ([965a1c4](https://github.com/opicaud/pact-reference/commit/965a1c415dc7df0e3c7d2f45b62a4f9c9e14c6d4))
* Upgrade plugin driver to 0.3.1 ([1e7331f](https://github.com/opicaud/pact-reference/commit/1e7331f15d70ae9a83a10e09dce238aceb42ff7e))
* Upgrade reqwest to 0.11.10 to resolve [#156](https://github.com/opicaud/pact-reference/issues/156) ([73ae0ef](https://github.com/opicaud/pact-reference/commit/73ae0ef000113bb8e6362754a33a3bbbd8e0fa43))
* upgrade to tree_magic_mini 2.0.0 because they pulled 1.0.0 from crates.io and now builds fail ([75c2c1a](https://github.com/opicaud/pact-reference/commit/75c2c1a33e16dc5b49f8f25d8cad5ff349dfcc37))
* upgrade uuid crate ([1651af1](https://github.com/opicaud/pact-reference/commit/1651af19e9a176998b364b511b5d30d0d84388bd))
* use a single result enum [#66](https://github.com/opicaud/pact-reference/issues/66) ([9b1c192](https://github.com/opicaud/pact-reference/commit/9b1c19250bb6422a40612b601ee0658de3dbd683))
* use the pacts for verification endpoint if the conusmer selectors are specified [#133](https://github.com/opicaud/pact-reference/issues/133) ([c274ca1](https://github.com/opicaud/pact-reference/commit/c274ca1ac45d65758e59cf897d195dea0686adcf))
* use Vec instead of HashSet to maintain order of matching rules on OSX ([42f0a39](https://github.com/opicaud/pact-reference/commit/42f0a396197ec6e1f0adcf49ac00ee140dc707f0))
* using `clone` on a double-reference ([39c3816](https://github.com/opicaud/pact-reference/commit/39c3816305243c942d0962722313ab5882c135c3))
* using `clone` on a double-reference ([c182c25](https://github.com/opicaud/pact-reference/commit/c182c251cef9a4f1e900c933a69b7ca8c3eb95ec))
* UUID generator should return hyphenated values ([a5f17a5](https://github.com/opicaud/pact-reference/commit/a5f17a54d276eb4034ba138362d1e658e791b009))
* V3 path matcher JSON format was incorrect ([b52f095](https://github.com/opicaud/pact-reference/commit/b52f09563897eef11c2e33e431957865de8b1c65))
* **V4:** Status code matcher was not converted to JSON correctly ([457aa5f](https://github.com/opicaud/pact-reference/commit/457aa5fc81bb709cf7524547f8ac28fb850eac66))
* Values matcher should not be applied to a slice like Equality ([dfa9f61](https://github.com/opicaud/pact-reference/commit/dfa9f6148e7601523cde70c08e89faa66fb5f9fd))
* Values matchers must not cascade ([07e2a3b](https://github.com/opicaud/pact-reference/commit/07e2a3b63598e0828cb7ee878ac414f8833cd829))
* values_matcher_defined should include EachValue matcher ([41a5231](https://github.com/opicaud/pact-reference/commit/41a523199c31350ee8292fec960c9aa9b569a1fd))
* verification CLI was reporting incorrect pact specification version ([4b8fb64](https://github.com/opicaud/pact-reference/commit/4b8fb645ba24b5f0125db548a011b5aa0869e68c))
* Verification results across multiple pacts accumulate, publishing invalid results [#231](https://github.com/opicaud/pact-reference/issues/231) ([c12d9a6](https://github.com/opicaud/pact-reference/commit/c12d9a61a6001fe9eeb0b30025d9d61866e529b6))
* **verifier test:** missing addition of teardown impl ([1768141](https://github.com/opicaud/pact-reference/commit/1768141e4e6a9f65d611b71786e90150b268fd6b))
* verifier was returning a mismatch when the expected body is empty [#113](https://github.com/opicaud/pact-reference/issues/113) ([a44cbbe](https://github.com/opicaud/pact-reference/commit/a44cbbeef383abded363fe0f9613fb05d79668b4))
* **verifier:** fix typos in the implementation of Display on the PactSource enum ([b8d263f](https://github.com/opicaud/pact-reference/commit/b8d263f760b71035fc4773d280dbe5a49185e3c6))
* **verifier:** provider state executor teardown function does not need to be async ([6466545](https://github.com/opicaud/pact-reference/commit/6466545f3634032f6e30a5da3c530360c2fb60fc))
* **verifier:** the state_change_teardown option didn't appear to actually be used ([5f782d6](https://github.com/opicaud/pact-reference/commit/5f782d6757bd97ff202a16081b7120c48735efee))
* verify interaction was blocking the thread ([484b747](https://github.com/opicaud/pact-reference/commit/484b747ffeb37e9271395894eff4cf983d27e495))
* was incorrectly selecting the matching rule when weight was equal ([67e2147](https://github.com/opicaud/pact-reference/commit/67e2147deb068733dfb5ec221fe70e5dfe0c9b17))
* was missing setter to set the transport with V4 interactions ([01ac989](https://github.com/opicaud/pact-reference/commit/01ac989b3cab8383a144d36b7fe86c2f3f8e983c))
* when comparing content types, check the base type if the actual content type has a suffix [#224](https://github.com/opicaud/pact-reference/issues/224) ([83d14ce](https://github.com/opicaud/pact-reference/commit/83d14ce1424bcbc0298e717b207f48b91d5080f1))
* when displaying diff, if actual body was empty a panic resulted ([baf3693](https://github.com/opicaud/pact-reference/commit/baf3693ce193e00311613634c6f47c3b21bd8803))
* when loading pacts from a dir, filter by the provider name [#233](https://github.com/opicaud/pact-reference/issues/233) ([34a67cb](https://github.com/opicaud/pact-reference/commit/34a67cb9c76b581f45c1117649dfc100fb9b27c2))
* when loading plugins for Pact files, only take minor + major version into account ([e93c557](https://github.com/opicaud/pact-reference/commit/e93c5574393816d53f3a92e5d3d16b7c6ff97773))
* when matching bodies, use any content type header matcher ([88eff15](https://github.com/opicaud/pact-reference/commit/88eff157e138d0b2151859d3341019ba62d7c1a9))
* when merging pacts, it helps to use the new interations in the merged pact, not the old ones [#77](https://github.com/opicaud/pact-reference/issues/77) ([3acf437](https://github.com/opicaud/pact-reference/commit/3acf4376bc475e0b1a2acaa08c2b1505ad36d4b4))
* Windows URL on conan package ([bb1e35e](https://github.com/opicaud/pact-reference/commit/bb1e35ea2858e95220e19206c8585200c1996941))
* write_pact_file was always serialising a v3 pact even if the spec version was set to 2 ([d7632cb](https://github.com/opicaud/pact-reference/commit/d7632cb5b81f7fae9185285872511f3a72092329))
* xml response matching rules ([13f7c36](https://github.com/opicaud/pact-reference/commit/13f7c36fa8af2eec06c880320c9f692cd14d1059))

### chore

* rename header PACT_MESSAGE_METADATA -> Pact-Message-Metadata ([b3a6f19](https://github.com/opicaud/pact-reference/commit/b3a6f193f7d9012f64ecbf140081e1bf17b44beb))

### deps

* **pact_mock_server_ffi:** remove formdata, add multipart ([3b73b71](https://github.com/opicaud/pact-reference/commit/3b73b71fe4f34511c69e83fcb24a11fd16e70ce0))

### Features

* add --no-color option to verfier CLI [#203](https://github.com/opicaud/pact-reference/issues/203) ([4530dbd](https://github.com/opicaud/pact-reference/commit/4530dbdecc9f35f2487d2a03975fa72dd18e5f6d))
* add a boolean return value for all FFI interaction functions [#108](https://github.com/opicaud/pact-reference/issues/108) ([64adcdc](https://github.com/opicaud/pact-reference/commit/64adcdc4e14c0e604ce8139420ed80d081dc81d3))
* Add a command to shut the master mock server down [#26](https://github.com/opicaud/pact-reference/issues/26) ([40ad75b](https://github.com/opicaud/pact-reference/commit/40ad75bdaea5edf659a5cbb17c4bae025016dc03))
* add a method to join a value onto a doc path ([c707a8c](https://github.com/opicaud/pact-reference/commit/c707a8c05d393aeebc866c795de740a8162e2993))
* add a mock server config struct ([29ba743](https://github.com/opicaud/pact-reference/commit/29ba743638e78c1e127695edab2e45b24a47b776))
* add a mock server URL generator ([09b197d](https://github.com/opicaud/pact-reference/commit/09b197d4d41bc4a3fe37860df392fc3e32084e6b))
* Add a parameter for the server key to the start command [#26](https://github.com/opicaud/pact-reference/issues/26) ([074569a](https://github.com/opicaud/pact-reference/commit/074569ace68cbc8051a35cbddd09e3ae21c0e42c))
* add a test to check for error result with IO error [#213](https://github.com/opicaud/pact-reference/issues/213) ([8ca3303](https://github.com/opicaud/pact-reference/commit/8ca3303bd9417764999e04f8e18b3c31d9afd22f))
* add ability of mock server to expose metrics [#94](https://github.com/opicaud/pact-reference/issues/94) ([5a529fd](https://github.com/opicaud/pact-reference/commit/5a529fd52d0f842213e2d0147b7913f0e00921db))
* add all the CORS headers ([d3c5cf2](https://github.com/opicaud/pact-reference/commit/d3c5cf284e67c64603b12208344e50515be9c888))
* add an iterator over the matching rules from a matching definition expression ([18e1e11](https://github.com/opicaud/pact-reference/commit/18e1e113b05ec6663c637193f3ea5fa06ba09bfc))
* Add ARM64 (aarch64) linux targets to the release build [#160](https://github.com/opicaud/pact-reference/issues/160) ([e3bef15](https://github.com/opicaud/pact-reference/commit/e3bef1556a2613cbda7df8616d97f71325a303ff))
* add bazel to build libpact_ffi.a ([c1098a4](https://github.com/opicaud/pact-reference/commit/c1098a42486e8acb38d43a4aa275b06c18bd1315))
* add bazel to build shared library libpact_ffi.a ([1149bed](https://github.com/opicaud/pact-reference/commit/1149bed2b35ad2dde9f2213ed660fb99f672a7ea))
* add bazel to build shared library libpact_ffi.a ([83df4f6](https://github.com/opicaud/pact-reference/commit/83df4f620911be57b029c32f3485614856779f33))
* add CLI options to provide different ports when there are different transports ([8cc2948](https://github.com/opicaud/pact-reference/commit/8cc294825d64f20af31804eafc7c617ce653a51f))
* add colons to the allowed path characters ([66c328e](https://github.com/opicaud/pact-reference/commit/66c328edeaff40487282eb543f1e9c025b46ae5c))
* add convience methods to modify headers ([e699061](https://github.com/opicaud/pact-reference/commit/e6990616414890f174f5d6c5030a28d8f745eea4))
* add cross config to build arm64 binaries ([34f4f6c](https://github.com/opicaud/pact-reference/commit/34f4f6cd567a2f8f78c2c1ba44c188614e45b388))
* add custom-header to the old FFI args for implementations that have not moved to handles ([2e5823a](https://github.com/opicaud/pact-reference/commit/2e5823a015e077fd1701bb5baa8e457efa47371c))
* add date-time matcher to consumer DSL ([be604cc](https://github.com/opicaud/pact-reference/commit/be604cce3c14af3802e979bff594ff641507e7b9))
* add docs on the matching rule IDs ([cfc565e](https://github.com/opicaud/pact-reference/commit/cfc565e3a10e5142ba0fc45bbcaab476111665a6))
* add exponental deplay the pact broker client retries [#94](https://github.com/opicaud/pact-reference/issues/94) ([656201c](https://github.com/opicaud/pact-reference/commit/656201c3bc942377cf539db7aa5285b1914c38aa))
* add FFI function to create mock server from Pact handle ([0613180](https://github.com/opicaud/pact-reference/commit/06131807d6c6cccdbdcdb03ae85ab2b4ee109c62))
* add FFI function to get the generator from a matching definition ([f7b561e](https://github.com/opicaud/pact-reference/commit/f7b561eea96ba05e6d8e8b36837182fba4636992))
* add FFI function to parse a matching definition expression ([768a132](https://github.com/opicaud/pact-reference/commit/768a132beec12daf6f1ce9e95f4b19ea86555eaa))
* add FFI function to parse JSON to a Pact model ([e21d345](https://github.com/opicaud/pact-reference/commit/e21d3454d2488adddc04fd268486182be5cabf11))
* add FFI function to return generator JSON ([570e33c](https://github.com/opicaud/pact-reference/commit/570e33c1936819fb2ad1c0ea483bebe3077866b8))
* add FFI function to set a message contents ([cf40b7d](https://github.com/opicaud/pact-reference/commit/cf40b7de34ba8e7becdc8aada60c62f5359e82f4))
* add FFI function to set a message contents as binary ([8f112ad](https://github.com/opicaud/pact-reference/commit/8f112ad07034a8b88825d90078b3a55ca15be55b))
* add FFI functions to extract logs from a verifcation run ([42be9eb](https://github.com/opicaud/pact-reference/commit/42be9eb8602740da598f1f8c778db62bbdde2573))
* add FFI functions to return the verifier output and results ([c676e82](https://github.com/opicaud/pact-reference/commit/c676e821888d1d07e7ad2cbe27bc6483c44c2da7))
* add for custom headers to the HTTP client used by the verifier [#182](https://github.com/opicaud/pact-reference/issues/182) ([f52c362](https://github.com/opicaud/pact-reference/commit/f52c362526dfad5b2629cd5633dd5c5b03995a88))
* add function to detect if a string is a matching definition ([481762f](https://github.com/opicaud/pact-reference/commit/481762f0070deab7298340e8545c60818cde2cbd))
* add function to get matching rule as JSON ([7a2686e](https://github.com/opicaud/pact-reference/commit/7a2686e000bf4aeffe382e43f8cc27a754af1247))
* add function to retrieve the TLS CA cert ([2f16b34](https://github.com/opicaud/pact-reference/commit/2f16b34850594be7573ea0094323c83c1163e70f))
* Add functions to calc unique key to V4 interaction trait ([6de6c22](https://github.com/opicaud/pact-reference/commit/6de6c229bc6624b07893aecdaa9db63c5c9f5462))
* add functions to return mutable references to the V4 model trait ([15b8f08](https://github.com/opicaud/pact-reference/commit/15b8f08f4d55834eaf60a47ec8685e292f85ea22))
* add functions to return plugin details to the WASM interface ([5ceaae2](https://github.com/opicaud/pact-reference/commit/5ceaae2af82c720165a4e5dc71d3998fc319bb28))
* add generator FFI functions ([b7c010e](https://github.com/opicaud/pact-reference/commit/b7c010eb1957f6b244f2ea76f4b64fcfc23d7b42))
* add ignore-no-pacts-error to the verifier CLI [#213](https://github.com/opicaud/pact-reference/issues/213) ([8663cd3](https://github.com/opicaud/pact-reference/commit/8663cd3f32213d47c28813186a9e67019a2821c6))
* Add initial V4 models and example pact files ([7232e89](https://github.com/opicaud/pact-reference/commit/7232e8955d9d301944b2acffbe35eae5d3dad5f4))
* add json output to the verifier CLI ([d0fa29d](https://github.com/opicaud/pact-reference/commit/d0fa29dc91b79d926f35bd89ca814f64656b1b8f))
* add MessagePact (Pact with Messages instead of Interactions) ([cc42fbc](https://github.com/opicaud/pact-reference/commit/cc42fbc9e062c585c42a65f6e90ea870dbe42720))
* add metadata to consumer message ffi interface ([10e54b8](https://github.com/opicaud/pact-reference/commit/10e54b88dbeeb26f62a06ffce43d15cf243cc024))
* add method to DocPath to return the parent path ([b5fd82e](https://github.com/opicaud/pact-reference/commit/b5fd82e5fd624d1d5691305d77de438ded7c078f))
* add method to V4Pact to find an interaction by ID ([7e3e2e1](https://github.com/opicaud/pact-reference/commit/7e3e2e18949f317ee47ac77ee8adc07a2420eb4d))
* add metric call when the mock server is shutdown via FFI function ([78c05f2](https://github.com/opicaud/pact-reference/commit/78c05f29f8f23e496edace45060c0517b7577a78))
* add metrics event for provider verification ([f8042d6](https://github.com/opicaud/pact-reference/commit/f8042d6b4351dd4e5c337a0151ac263d22f65925))
* add metrics events for Pact-Rust consumer tests ([cba3f08](https://github.com/opicaud/pact-reference/commit/cba3f08ef57aed85e778d3cd65c8235a4c7906ae))
* add metrics publishing to matching crate ([48d061e](https://github.com/opicaud/pact-reference/commit/48d061ef5066732b2baa90248572b33b6f622eb4))
* add musl target to the release build [#185](https://github.com/opicaud/pact-reference/issues/185) ([16fbe7c](https://github.com/opicaud/pact-reference/commit/16fbe7cfe96ee760867c17a40c353205df997356))
* add mutable iteraction over Pact interactions ([daa2c10](https://github.com/opicaud/pact-reference/commit/daa2c1011e612da6df323b93f26f79f8f48f283c))
* add mutable methods to Pact model traits ([fa83806](https://github.com/opicaud/pact-reference/commit/fa83806c8ff0831c3a66eaabb6f2f944faa57f0b))
* Add options for compact and human formats to the verifier CLI log output ([53a622a](https://github.com/opicaud/pact-reference/commit/53a622adb2194833b396b3a5eeab1fe2832b847a))
* add pactffi_create_mock_server_for_transport function ([5cd2ae5](https://github.com/opicaud/pact-reference/commit/5cd2ae5a4c588f500e56c08afb65f7a7476d585a))
* add pactffi_pact_handle_write_file which knows about the spec version ([675506e](https://github.com/opicaud/pact-reference/commit/675506e1fd61ed2f86dcc77d2c37945db8e2fb4e))
* add retries to the provider state change calls [#197](https://github.com/opicaud/pact-reference/issues/197) ([18118e8](https://github.com/opicaud/pact-reference/commit/18118e8280bd1da2d89d0e366d81c6a4628c4911))
* add retry to the pact broker client fetch [#94](https://github.com/opicaud/pact-reference/issues/94) ([8541751](https://github.com/opicaud/pact-reference/commit/8541751e22a81751198a7687839c5c63bbb677c2))
* add retry to the pact broker client post and put [#94](https://github.com/opicaud/pact-reference/issues/94) ([e38634e](https://github.com/opicaud/pact-reference/commit/e38634eb26dd5dc14e20b7236e7a7e97a75148e8))
* add self-signed tls option to mockserver cli (to test TLS with Tokio 1.0) ([76f052b](https://github.com/opicaud/pact-reference/commit/76f052bbd372852334b44bcdcbeaf837b471fccc))
* Add short option for custom headers ([14e3b8f](https://github.com/opicaud/pact-reference/commit/14e3b8ffbbab0147ea551ff8482b16d81ef5a4e4))
* add support for custom headers via the verifier CLI [#182](https://github.com/opicaud/pact-reference/issues/182) ([7932480](https://github.com/opicaud/pact-reference/commit/793248027c14332b1440581e09ed4c7788990e67))
* add support for custom headers with the verifier FFI calls [#182](https://github.com/opicaud/pact-reference/issues/182) ([74bd453](https://github.com/opicaud/pact-reference/commit/74bd4531c045235701d570b6d570646e0c36aa8a))
* add support for TLS with the mock server [#65](https://github.com/opicaud/pact-reference/issues/65) ([da885a3](https://github.com/opicaud/pact-reference/commit/da885a3c68a750eabb10f1f23832254af484542e))
* add support functions for regular expressions for foreign DSLs ([b30fd2d](https://github.com/opicaud/pact-reference/commit/b30fd2d5b10205039ddfd267b1f6ccd0042df6cf))
* add tests for serialising Generator::ProviderStateGenerator ([b130cd2](https://github.com/opicaud/pact-reference/commit/b130cd22ebea2b736d18bf6f5353edef627b5ee2))
* add user-agent header to the HALClient ([8bb2534](https://github.com/opicaud/pact-reference/commit/8bb2534ddba053f32cd46bd00b4d3f45bdc59743))
* add verification option to disable ANSI escape codes in output [#203](https://github.com/opicaud/pact-reference/issues/203) ([40f7bdc](https://github.com/opicaud/pact-reference/commit/40f7bdc413440e31a8e9e1ceaebdafc81991c3d2))
* add verifiedBy to the verified results ([09513de](https://github.com/opicaud/pact-reference/commit/09513de575b2059cd8ed434ca3acd8181fd1a099))
* add verifier ffi function set consumer filters ([dab7027](https://github.com/opicaud/pact-reference/commit/dab702729bfd56df1736d3ffe5a9db4d63a3769b))
* add verifier ffi function set verification options ([05f4c3d](https://github.com/opicaud/pact-reference/commit/05f4c3de5a714278f3f01ad10f7ba2f67c99ff50))
* added a struct for handling content types ([5316030](https://github.com/opicaud/pact-reference/commit/5316030dca71373e9bf918a22d8d9226f2ac210d))
* added convenience header methods to HttpPart ([ead1af2](https://github.com/opicaud/pact-reference/commit/ead1af2bf9589a375791459367c3259c04d80b99))
* Added header_from_provider_state and path_from_provider_state ([ffbcaf5](https://github.com/opicaud/pact-reference/commit/ffbcaf58b85a5bbc49e957204c61cd165c8d7cf9))
* added interaction handle ([9ec8817](https://github.com/opicaud/pact-reference/commit/9ec8817c9f71ebd745887cc5b45752a723ee2dee))
* added read locks and a mutex guard to reading and writing pacts ([9976e80](https://github.com/opicaud/pact-reference/commit/9976e80bc06db7b55bd3d630f8d2a8e10463b8ef))
* added some tests for publishing verification results to the pact broker [#44](https://github.com/opicaud/pact-reference/issues/44) ([eef3d97](https://github.com/opicaud/pact-reference/commit/eef3d97139002e33679213ec9f6cfb2978cdcc4b))
* added test for array contains as a generator ([5556b32](https://github.com/opicaud/pact-reference/commit/5556b326b1a0cfcf34c717419c6e4e5885211289))
* added the ProviderStateGenerator as a generator type ([cb30a2f](https://github.com/opicaud/pact-reference/commit/cb30a2f227fef624f8298d12f1c422fd4fd6946a))
* added V4 interaction types ([b2725dd](https://github.com/opicaud/pact-reference/commit/b2725dd59e2441c014b20773f741ef0f1d622491))
* added validation of provider state JSON ([31873ee](https://github.com/opicaud/pact-reference/commit/31873ee30d8cb75f9a55c6b6f1b8cd308572e8b6))
* added verification of req/res interaction ([82a2d5d](https://github.com/opicaud/pact-reference/commit/82a2d5dfd1f10b02e2f04b68e56e7e5aca192390))
* allow BrokerWithDynamicConfiguration to publish results ([f76ddd8](https://github.com/opicaud/pact-reference/commit/f76ddd8e8c12e55e020ae334e6e765fc74313ed7)), closes [#181](https://github.com/opicaud/pact-reference/issues/181)
* allow callers to add messages to log ([f683304](https://github.com/opicaud/pact-reference/commit/f683304cef9797bad897a2b8029d95bf22dcd494))
* allow callers to add metadata into resulting pact file ([0dc59d0](https://github.com/opicaud/pact-reference/commit/0dc59d07dbfa717fcebc760791930b6361564441))
* allow ffi bindings to set spec version ([6af4d3f](https://github.com/opicaud/pact-reference/commit/6af4d3f6ab4780c052e2d508df3c9e0c297e8f8c))
* allow FFI mockserver to log to a memory buffer ([eb19188](https://github.com/opicaud/pact-reference/commit/eb191887de28d0374c9f8dde48d8575147ea51a2))
* allow https scheme and ability to disable ssl verification ([6cec6c7](https://github.com/opicaud/pact-reference/commit/6cec6c7e16ea6dbad162115c6beec202e5586d5f))
* allow messages to have binary payloads ([5024e17](https://github.com/opicaud/pact-reference/commit/5024e1797092f8c0b092ba718a4b2fae9f7d5411))
* allow non deafult json content-type ([c1ccb62](https://github.com/opicaud/pact-reference/commit/c1ccb62faf3e7850e84f3fbc8764ec6f14b8cf56))
* allow sensible defaults for interaction transports ([ce11a61](https://github.com/opicaud/pact-reference/commit/ce11a61974f9112b98e2cc427c5ab9f45aabb996))
* allow set consumer version selectors ([7c561f2](https://github.com/opicaud/pact-reference/commit/7c561f2a63f52e52e72fcb5703a0f68e3739826c))
* allow set filter info ([41e69a2](https://github.com/opicaud/pact-reference/commit/41e69a225f9eba76bf9dbbf9a1a36164e74ddf64))
* Allow the directory pacts are written to to be overriden in consumer tests [#21](https://github.com/opicaud/pact-reference/issues/21) ([a5588dc](https://github.com/opicaud/pact-reference/commit/a5588dc426551525d20b28e3288379226ddde646))
* allow the interaction transport to be set in consumer tests ([24186e9](https://github.com/opicaud/pact-reference/commit/24186e900c69965cd47948af0ddf869fc89047ca))
* always execute provider_states callbacks even when no state is defined ([8216ec7](https://github.com/opicaud/pact-reference/commit/8216ec768d63445b819cffde65e47acc37f4dfcd))
* array contains working with Siren example ([7110ab1](https://github.com/opicaud/pact-reference/commit/7110ab116889157dd9c86ae25600800874d5d91a))
* basic array contains matcher working ([d79beb4](https://github.com/opicaud/pact-reference/commit/d79beb4fd834a8027b8d1c2dc56d1fdfe1ce4f94))
* being able to build pact_verifier_cli ([467a442](https://github.com/opicaud/pact-reference/commit/467a44233894d177c5df444d98873d3c920007f4))
* capture all the output from the verifier ([5f148cd](https://github.com/opicaud/pact-reference/commit/5f148cdd44b7307dc8f828275750d308a1944c0a))
* Capture all the results from the verification process ([bf15223](https://github.com/opicaud/pact-reference/commit/bf152233ceeb4d922f23ef3d5683c4afe8d0687f))
* cleaned up the error display a bit ([258cb96](https://github.com/opicaud/pact-reference/commit/258cb96aa3c673ca806c9b71ffe21ea4e71e5884))
* cleaned up the logging of request matches ([ce94df9](https://github.com/opicaud/pact-reference/commit/ce94df9609380a2b5600ef909d73016f49037985))
* cleanup date matching [#33](https://github.com/opicaud/pact-reference/issues/33) ([e72fb9e](https://github.com/opicaud/pact-reference/commit/e72fb9e8d18c823cd2ce00dbc45c07138d2e168b))
* consumer builders need to populate the interaction config from the plugins ([ee498dc](https://github.com/opicaud/pact-reference/commit/ee498dce73ab479949c791819e4a894ccf25f2e2))
* Copied pact_mockserver_ffi to pact_ffi ([084ab46](https://github.com/opicaud/pact-reference/commit/084ab46b08f92665d37557dfe7b42589a7c6e844))
* copied verfier_ffi crate to pact_ffi ([0d5ec68](https://github.com/opicaud/pact-reference/commit/0d5ec68a0d293ce2cd601ac4ef077a508e854ebe))
* create conan package for linking with C++ projects ([d357ad2](https://github.com/opicaud/pact-reference/commit/d357ad265e17fe364b6677854bc6ab707b589e7b))
* deal with verification output from plugins ([bc4f04d](https://github.com/opicaud/pact-reference/commit/bc4f04df20ac7edbdae706b7852920ae4d299fd7))
* Detect Pactbroker responses from the URL content [#199](https://github.com/opicaud/pact-reference/issues/199) ([1972a74](https://github.com/opicaud/pact-reference/commit/1972a74a3c223d2fee84bc643e090f7ac32a7783))
* do no write empty comments + added consumer version to metadata ([9fd9e65](https://github.com/opicaud/pact-reference/commit/9fd9e652b86fa1e58e2a2169799315fada3482c7))
* do not output an error if no_pacts_is_error is false and no pacts were found to verify [#213](https://github.com/opicaud/pact-reference/issues/213) ([43be2e8](http…
opicaud pushed a commit to opicaud/pact-reference that referenced this issue Sep 7, 2023
# pact-reference-rust-v1.0.0 (2023-05-15)

### Bug Fixes

* `match` arms have incompatible types ([b7f967e](https://github.com/opicaud/pact-reference/commit/b7f967e0d5f6b12530c185aa25e0b071ce46195c))
* access-control-allow-methods header was duplicated ([44e7414](https://github.com/opicaud/pact-reference/commit/44e741400669928190ec494ed84ae0bb28cca047))
* add a small delay after loading plugins via FFI to resolve a race condition ([213d145](https://github.com/opicaud/pact-reference/commit/213d1459c578662532e64ec7a1b1ce9af15cb676))
* add a small delay at the end of validation to allow async tasks to finish ([00a0046](https://github.com/opicaud/pact-reference/commit/00a0046121932cc96b4614dc910864dcd966b35b))
* add a test to reflect behaviour as per V4 spec ([1c45b63](https://github.com/opicaud/pact-reference/commit/1c45b63c02fbb059cc4014faf27f3ea43097793a))
* add callback timeout option for verifcation callbacks ([4afa86a](https://github.com/opicaud/pact-reference/commit/4afa86a785686d3bd5aa16c3c1fff17969613948))
* add cc_library ([93d658f](https://github.com/opicaud/pact-reference/commit/93d658f566d62e07b8dd8f397a6d5f63348d14a3))
* add final newline to verifier output (Jest will overwrite it with the test name) ([8c2152e](https://github.com/opicaud/pact-reference/commit/8c2152ea7a311d8d64d5b1ca96bebf718f0b0f52))
* add function to display binary data in a meaningful way ([2ca2fe4](https://github.com/opicaud/pact-reference/commit/2ca2fe495baea63879d57c573d7cd01e38619921))
* add matching implementations for Vec<u8> and &Vec<u8> ([ede663e](https://github.com/opicaud/pact-reference/commit/ede663ec6a94258e3b7ac7bcb14dc655c38886b4))
* add missing params to provider state change executor ([17682dc](https://github.com/opicaud/pact-reference/commit/17682dcca70558ba7e47cad2ff9f8b72d409c4bc))
* add missing provider-branch to verifier CLI ([0af1830](https://github.com/opicaud/pact-reference/commit/0af18303fbc2898c4edd3fd8b63879cea59cc91d))
* Add OSX to the conan package ([a13c0fc](https://github.com/opicaud/pact-reference/commit/a13c0fc87a0b0bb9819fa04d8be4a9746868c633))
* add test for publish verification result issue [#231](https://github.com/opicaud/pact-reference/issues/231) ([33a784a](https://github.com/opicaud/pact-reference/commit/33a784a02b4de248ecb525c49afe4e0d949a9461))
* add tests for PUT and POST requests [#220](https://github.com/opicaud/pact-reference/issues/220) ([9fc5658](https://github.com/opicaud/pact-reference/commit/9fc56580390f8ed4c21a8bb0bbdfb99d0dc7dd24))
* add visibility public ([2fd1c0d](https://github.com/opicaud/pact-reference/commit/2fd1c0d6a28e11403feb35ae9417a0b8c6668a05))
* add zip file for binary test ([81eed06](https://github.com/opicaud/pact-reference/commit/81eed06215bc71e2688ab768034debcba68817d4))
* Allow dashes in path expressions for headers like Content-Type ([1184203](https://github.com/opicaud/pact-reference/commit/11842036c360487d5eb07f57c272b4d27196fd04))
* allow multiple consumer version selectors ([df23ba3](https://github.com/opicaud/pact-reference/commit/df23ba3de5a1838088d193a23d508d566a4639b0))
* allow the HTTP client to be optional in the provider state executor ([0e8bfad](https://github.com/opicaud/pact-reference/commit/0e8bfadb3b8e4e299ef6695560a1cf15b672c177))
* apply generators to the request in the same manor as the response ([ae95e0c](https://github.com/opicaud/pact-reference/commit/ae95e0cddf8d57403edd281a1eeb5969e041ce8a))
* arrayContains matcher JSON was missing match attribute ([c686ce0](https://github.com/opicaud/pact-reference/commit/c686ce04b0b12727b92a70efbb68f141837d3142))
* async message builder was not setting the pact plugin config correctly ([df67b72](https://github.com/opicaud/pact-reference/commit/df67b7232f0189afa4846cdb0886d35994320a87))
* broken message test ([a7e5778](https://github.com/opicaud/pact-reference/commit/a7e57786c80b3524b9c65a47c77cb3fbb9361d57))
* broken test for v2 path matcher ([5167cfb](https://github.com/opicaud/pact-reference/commit/5167cfbad380b6f732ac1a384981d4886260e366))
* broken tests after handling multiple header values ([7616ccb](https://github.com/opicaud/pact-reference/commit/7616ccbc68232cf5e0a323c0688d4c39c2df14fa))
* cbindgen fails in latest nightly rust ([fcfc7c1](https://github.com/opicaud/pact-reference/commit/fcfc7c1633276283df86c3896d808a89419aaea0))
* cbindgen fails in latest nightly rust ([61e4d69](https://github.com/opicaud/pact-reference/commit/61e4d69d0107f92884607d1b43f5576094bdfddd))
* cbindgen fails in latest nightly rust ([4b1ba4a](https://github.com/opicaud/pact-reference/commit/4b1ba4a26957e5c2f65b98cc08c4d8f46a3474fb))
* change filegroup ([e819794](https://github.com/opicaud/pact-reference/commit/e819794e703f8e62e716a84beee467ed899cf760))
* Charsets in headers should be compared ignoring case ([a151bcc](https://github.com/opicaud/pact-reference/commit/a151bcc50c548396792dca56ac71066fe1cd3443))
* check the size of the merged pact file [#54](https://github.com/opicaud/pact-reference/issues/54) ([bc044be](https://github.com/opicaud/pact-reference/commit/bc044be0c6b42017e85c1b092ac4a6e83f522a05))
* cleanup compiler warning ([beb1c03](https://github.com/opicaud/pact-reference/commit/beb1c031b8f09d355fc6fbc21916eac25307d98a))
* cleanup env var and set tests to not run in parallel on CI [#54](https://github.com/opicaud/pact-reference/issues/54) ([19e8ced](https://github.com/opicaud/pact-reference/commit/19e8cedfdaf0d4cbc5480c1351d46718cb2a6848))
* cleanup warnings and fixed test ([45fc1a0](https://github.com/opicaud/pact-reference/commit/45fc1a06478b442b3d12dc9ea67da06646f5f390))
* CLI was reporting incorrect pact specification version ([6343607](https://github.com/opicaud/pact-reference/commit/634360793c8cbc70abb5223584164924cde2f92a))
* clippy error ([e5b1f93](https://github.com/opicaud/pact-reference/commit/e5b1f93d96b6195b1f7aa89394c2ff49c9a55ead))
* clippy erros ([cbc7812](https://github.com/opicaud/pact-reference/commit/cbc7812aec0efc48ae303e8a3e9fdb8206df48a9))
* clippy violation - caused a compiler error ([728465d](https://github.com/opicaud/pact-reference/commit/728465d51a6cd2a377a5815308ee8e4516df8098))
* clippy violation: using `clone` on a double-reference ([e588bb2](https://github.com/opicaud/pact-reference/commit/e588bb297ccc1310cfb99f23ed771cfeea420171))
* **clippy:** using `clone` on a double-reference; this will copy the reference instead of cloning the inner type ([0a70d64](https://github.com/opicaud/pact-reference/commit/0a70d64df37100bc56e95fd019aade867ae7b607))
* **clippy:** you are implementing `Hash` explicitly but have derived `PartialEq` ([9852811](https://github.com/opicaud/pact-reference/commit/98528116c02eecb53ad4cf0c28680afa87e25bc1))
* comparing query paraneters where actual has less values but there is a type matcher ([0e3db9d](https://github.com/opicaud/pact-reference/commit/0e3db9dff5029e7f4fad4ad51520e46a3bd52fcf))
* conan packages for pact_ffi ([6d1ff31](https://github.com/opicaud/pact-reference/commit/6d1ff318cb3a8187e071bd94aaed467ba9f01847))
* Consumer DSL needs to increment plugin access to avoid plugin shutting down when mock server starts ([57a8ad7](https://github.com/opicaud/pact-reference/commit/57a8ad7d7d679cc5830fdd36cf5b02e465edc10d))
* consumer version selectors ([f4a7d52](https://github.com/opicaud/pact-reference/commit/f4a7d52b7441e5bc7cac0d6d55b7c662b6174287))
* **consumer:** request and response builders were using the first interaction from plugins, not the correct one ([f6d0c35](https://github.com/opicaud/pact-reference/commit/f6d0c35ecacd7fee4cfd0d10d833abb4590fcdc9))
* content type matcher was not being applied if content type was not octet_stream [#171](https://github.com/opicaud/pact-reference/issues/171) ([65d0514](https://github.com/opicaud/pact-reference/commit/65d05149cb720fa4b41f661f40e87b6d74dac9e4))
* correct build dependencies ([f2c7145](https://github.com/opicaud/pact-reference/commit/f2c7145057cc48a1198825421561e854787ba995))
* correct C examples after adding prefix ([5801e46](https://github.com/opicaud/pact-reference/commit/5801e46e3ae69c45ee221adff228a17c6aaf6c78))
* correct clippy error ([7baf074](https://github.com/opicaud/pact-reference/commit/7baf074bfd86944ad3377f90721340eae7eb2b92))
* correct headers attribute with multiple values might not be matched ([eef6b08](https://github.com/opicaud/pact-reference/commit/eef6b0860156b0d66f221a4c2ba990c994be7893))
* correct issue with headers/query with multiple values ([75c965e](https://github.com/opicaud/pact-reference/commit/75c965e476abc3b66bd3634c786d2bb7955be3dc))
* correct overflow of max value for random int generator [#39](https://github.com/opicaud/pact-reference/issues/39) ([91da912](https://github.com/opicaud/pact-reference/commit/91da912c2450e3a0ed661a79ea6836df83887c0a))
* correct pact merging to remove duplicates [#54](https://github.com/opicaud/pact-reference/issues/54) ([a660b87](https://github.com/opicaud/pact-reference/commit/a660b877a8ec48d48a379755a2dfeb91ae48f0de))
* correct parsing of JSON encoded bodies as per V4 spec ([ba24b0a](https://github.com/opicaud/pact-reference/commit/ba24b0a83ac8dac223c590a2529033907911b9b0))
* Correct test after upgrading pact_models to 1.0.2 ([2cf5d8a](https://github.com/opicaud/pact-reference/commit/2cf5d8addc5a1fe139254bae53bab29a26873378))
* correct the backing arary list for headers from FFI call ([9c84713](https://github.com/opicaud/pact-reference/commit/9c84713c57a021b156d7fce909d575be18d02342))
* correct the backing array list for query parameters from FFI call ([c93e364](https://github.com/opicaud/pact-reference/commit/c93e3640a170125c8e02f83bef90d472eaf8d560))
* correct the matching logic with lists and eachkey/eachvalue matchers ([1a01d11](https://github.com/opicaud/pact-reference/commit/1a01d111e656d743a899545b0b693702275c2119))
* correct the pact_verifier_cli release scripts ([f9cf35f](https://github.com/opicaud/pact-reference/commit/f9cf35f3a315204ed8b6a8cf6a81933753872657))
* correct the release script ([adf1a97](https://github.com/opicaud/pact-reference/commit/adf1a978b31d23f9adc85643ef79c0d33fa9e092))
* correct the release scripts ([2057f2c](https://github.com/opicaud/pact-reference/commit/2057f2c16e7c16d700919f9f2618e4b22bfc9e22))
* correct the version in pact_verifier_cli ([f9ecd89](https://github.com/opicaud/pact-reference/commit/f9ecd8907945d4b95f0e6fd71c5bb5cc701e018c))
* correct the version of the pact_consumer crate ([2b39873](https://github.com/opicaud/pact-reference/commit/2b39873d9b4ecaba2de6bd4f7e334beda9540458))
* correct the windows lib name in conan package ([4287f0e](https://github.com/opicaud/pact-reference/commit/4287f0ebe179df1acab10c90186ca2acbb8563f0))
* correct the windows lib name in conan package ([c1015d5](https://github.com/opicaud/pact-reference/commit/c1015d5c488f6f2886643a701e54384451b3f904))
* correct version ([637e814](https://github.com/opicaud/pact-reference/commit/637e814131dd09f77d97ab2bb3b3a79543b59ce9))
* corrected some spelling ([b5c7842](https://github.com/opicaud/pact-reference/commit/b5c7842fefd250240b5c95a2bddbe3ad82b162ea))
* corrected the docker build for the mock server cli [#14](https://github.com/opicaud/pact-reference/issues/14) ([a45d5f8](https://github.com/opicaud/pact-reference/commit/a45d5f86d55ec6e2ffa94b352cc983d418899c5a))
* corrected the docker build for the verifier cli [#14](https://github.com/opicaud/pact-reference/issues/14) ([9d24b7e](https://github.com/opicaud/pact-reference/commit/9d24b7e021dbc2b108e7cda7eda8f40379625abf))
* corrected the release scripts to check for a version parameter ([386ab52](https://github.com/opicaud/pact-reference/commit/386ab52b5ff8915d8733645ff0b82c27b06ba0c4))
* correctly assemble UTF-8 percent encoded query parameters ([7f054e8](https://github.com/opicaud/pact-reference/commit/7f054e844cfe8940a4e698c0d29571ef78755cbc))
* **cors:** source allowed origin from origin header, add credentials ([86d32dd](https://github.com/opicaud/pact-reference/commit/86d32ddf09df4c127dba7e2b2e46959ef5f870e6))
* date and time matchers with JSON ([2920364](https://github.com/opicaud/pact-reference/commit/2920364b4e97ffceb68829d6f1bf41a47a9381d4))
* date/time matchers fallback to the old key ([61ab50f](https://github.com/opicaud/pact-reference/commit/61ab50f4d4e859452f2ea24ac0f914ccd915ab9b))
* detect common text types when comparing content type ([a0c9d20](https://github.com/opicaud/pact-reference/commit/a0c9d2030750e2facb716a2a21143d3c861c9996))
* display the error message when the verification can not be run due to an error ([bfa0437](https://github.com/opicaud/pact-reference/commit/bfa0437022a6b0c9ddb4c5a4d736254e13d220f2))
* doc tests with Into trait fail to link with Rust beta 1.27.0 ([1e0c65b](https://github.com/opicaud/pact-reference/commit/1e0c65bfc0c51dd766646a87f6ca2f3f026fbea4))
* docker build now requires libclang system library ([9f3ad74](https://github.com/opicaud/pact-reference/commit/9f3ad748db76bf19b92e92978db25131b5876148))
* docker file needs to be able to build Oniguruma lib ([8a0c5c2](https://github.com/opicaud/pact-reference/commit/8a0c5c259157a7523b5e2a325e49a7edca5e99de))
* docker release script ([0dd10e6](https://github.com/opicaud/pact-reference/commit/0dd10e6476edd5407173e4f695b59aa2006aa5c0))
* docker release script ([5b22076](https://github.com/opicaud/pact-reference/commit/5b22076817438d8a62f8370f5933bc7124a4304f))
* DocPath join needs to detect numeric values ([7b2e853](https://github.com/opicaud/pact-reference/commit/7b2e85380f825f0f87a258f38361d4e79a1a5870))
* Docpath join was escaping * ([a3f7471](https://github.com/opicaud/pact-reference/commit/a3f747115a4721180928af3a2c9cb7565db9f948))
* don't clone a double reference (clippy error) ([d8ceb74](https://github.com/opicaud/pact-reference/commit/d8ceb7463ede069ab82cfe3a873856d6382f0b11))
* don't unwrap a result when generating random string from regex ([9389c0a](https://github.com/opicaud/pact-reference/commit/9389c0a1af723e2619bf0bda1c11bbe6c50014d1))
* drop(from_raw(ptr))` if you intend to drop the `CString` ([1cafd00](https://github.com/opicaud/pact-reference/commit/1cafd00a0d8ad441cd5b3aaf8de5ae91c1e772f4))
* Each key matching was not implemented correctly ([28f562e](https://github.com/opicaud/pact-reference/commit/28f562e298ff203c665b3a45ac07f53add7ea652))
* EachValue was outputting the wrong JSON ([48a6be5](https://github.com/opicaud/pact-reference/commit/48a6be5f28552ebc164bb87538c47f00614cb19f))
* error caused an internal mutex to be poisoned ([5251fcf](https://github.com/opicaud/pact-reference/commit/5251fcf5c1df854742e90eafde1374930fe03e0e))
* expected opaque type, found enum `Result` ([fe22ae3](https://github.com/opicaud/pact-reference/commit/fe22ae3aba36d3c0c332ad345d81534bd0ddf3ff))
* failing pact_consumer build ([13976f5](https://github.com/opicaud/pact-reference/commit/13976f5285af17d324f7d6d816a2707a727278d8))
* failing test after changing  message_with_contents function signature ([78c20d6](https://github.com/opicaud/pact-reference/commit/78c20d6ae90af41c548593668dd37e76236ee9f2))
* failing tests [#116](https://github.com/opicaud/pact-reference/issues/116) ([b1a4c8c](https://github.com/opicaud/pact-reference/commit/b1a4c8cb2cc72b6b7d195e6e486e2129955d759e))
* feat deps pattern to use via external libpact_ffi.a ([77a5e26](https://github.com/opicaud/pact-reference/commit/77a5e2661e12a4d55d3145af4f45b8518b802783))
* FFI always detects + stores JSON bodies as plain text ([aff4d30](https://github.com/opicaud/pact-reference/commit/aff4d301c7f674a2131f79fef3e3cf43ee7dc0ac))
* FFI datetime matcher was using incorrect field ([ddacb5d](https://github.com/opicaud/pact-reference/commit/ddacb5d77fdb18b1a6fd13d410f02c7acfa603cc))
* FFI function was exposing a struct from the models crate ([8b075d3](https://github.com/opicaud/pact-reference/commit/8b075d3867113b900fa6d781bee41c9cd6780138))
* FFI mismatch json should have the actual values as UTF-8 string not bytes [#64](https://github.com/opicaud/pact-reference/issues/64) ([a45d0c3](https://github.com/opicaud/pact-reference/commit/a45d0c3b1b49ce9ad3cee6246b41d4b9c8114c7f))
* ffi.pactffi_logger_attach_sink causes seg fault if log directory doesn't exist [#226](https://github.com/opicaud/pact-reference/issues/226) ([9dad5d2](https://github.com/opicaud/pact-reference/commit/9dad5d2a0304bf28c30e05f10f1ce6ef703d8c63))
* **FFI:** broken build after upgrading pact_models ([4f366ac](https://github.com/opicaud/pact-reference/commit/4f366ac5e5b55d967b4497bb9e2d940a4a384adb))
* **ffi:** correct race condition in pactffi_using_plugin ([d41e244](https://github.com/opicaud/pact-reference/commit/d41e2440a8d5011e51a90eeb44dcaa7dbe448b0d))
* **FFI:** FFI passes matching rules and generators for paths etc. with a path of $ ([b6bba54](https://github.com/opicaud/pact-reference/commit/b6bba5403f2f5b785f89bd46ab4d4a7522299f03))
* **FFI:** fix matching rule for paths [#205](https://github.com/opicaud/pact-reference/issues/205) ([e95d701](https://github.com/opicaud/pact-reference/commit/e95d701da50984b2fdb578405a39836a9e479f9e))
* **FFI:** fix matching rule for paths [#205](https://github.com/opicaud/pact-reference/issues/205) ([b0fdbb6](https://github.com/opicaud/pact-reference/commit/b0fdbb6eef339fa345c4ad1990e9003f00dfdf74))
* **FFI:** fixed race condition with Pact handle ids ([8520760](https://github.com/opicaud/pact-reference/commit/852076025500a0347dfe1127c6ec27f1f7d3dd6e))
* **FFI:** handle headers with multiple values correctly [#205](https://github.com/opicaud/pact-reference/issues/205) ([f634fa9](https://github.com/opicaud/pact-reference/commit/f634fa91dace0daa3163aa9600f4055039915490))
* **FFI:** handle query parameters with multiple values correctly [#205](https://github.com/opicaud/pact-reference/issues/205) ([52b7009](https://github.com/opicaud/pact-reference/commit/52b7009763e55d00b42cbc8fa5f62796d464d062))
* **FFI:** Message metadata was not being passed on to the mock server ([a56bc05](https://github.com/opicaud/pact-reference/commit/a56bc05601ea439acc4840e1fed32b0e50fcf563))
* **ffi:** OSX CMake file had the wring filename ([1307dde](https://github.com/opicaud/pact-reference/commit/1307dde047635cb18533f463e9383b322927a11b))
* **ffi:** pactffi_create_mock_server_for_transport was returning the wrong status for invalid address ([a78f2a1](https://github.com/opicaud/pact-reference/commit/a78f2a1d74491b0d7269204bbdbae4d14f90f8f5))
* **FFI:** pactffi_with_binary_file was incorrectly setting the response content type to application/octet-stream [#171](https://github.com/opicaud/pact-reference/issues/171) ([3c5c45d](https://github.com/opicaud/pact-reference/commit/3c5c45d4e6f1b6f7f8a8e29787fb12074eeb53e1))
* **ffi:** plugin data was not merged into the Pact file correctly ([797d1cc](https://github.com/opicaud/pact-reference/commit/797d1cceb5e703c0112766e2db690167c26c5d98))
* **FFI:** Replaced the matching rule union type with 3 FFI functions which should support Go better ([7756d30](https://github.com/opicaud/pact-reference/commit/7756d305f03577ae28fe33943968e397d0b8758b))
* **ffi:** resources were not freed correctly when the mock server is provided by a plugin ([873f0c9](https://github.com/opicaud/pact-reference/commit/873f0c938b5af33b4fa2163c7af0368f5f88530b))
* **FFI:** update the example in docs to use new function [#205](https://github.com/opicaud/pact-reference/issues/205) ([f0cde4e](https://github.com/opicaud/pact-reference/commit/f0cde4e949a9c9b12a617a524d7e4e1329416246))
* **FFI:** use a multi-threaded reactor for FFI setup_contents call to plugins ([ec2ed51](https://github.com/opicaud/pact-reference/commit/ec2ed51dc2f45c4a1dfeb75784b3d357f72c14ed))
* **FFI:** Use a star for the path with values matcher [#216](https://github.com/opicaud/pact-reference/issues/216) ([b8be05c](https://github.com/opicaud/pact-reference/commit/b8be05c1c4363391379997b692e48438df38e6f1))
* fix missing last tag ([36f7e47](https://github.com/opicaud/pact-reference/commit/36f7e477761bea6eda1945e08b3d946e65c7e4bd))
* fix the build after refactoring the pact write function ([2fb0c6e](https://github.com/opicaud/pact-reference/commit/2fb0c6e3005872636f45677e1824d092e548727b))
* for failing integration test ([2679653](https://github.com/opicaud/pact-reference/commit/26796531b54baac1de99425644d37e4c3316acaf))
* generators in process_object ([63ab0d2](https://github.com/opicaud/pact-reference/commit/63ab0d2d846378be5ceb07c3449f4a6aa8252a8a))
* generators to_json was only writing the first one for bodies, headers and queries ([cbb6e20](https://github.com/opicaud/pact-reference/commit/cbb6e209df045599f2ced277a77788d64081d5ea))
* get verify_provider_async to wait on the metric call ([8056d7e](https://github.com/opicaud/pact-reference/commit/8056d7e96ca4dfd6db157a06699a5aa355752b48))
* global options no longer incorrectly display a warning about being provided twice [#27](https://github.com/opicaud/pact-reference/issues/27) ([e5af1b0](https://github.com/opicaud/pact-reference/commit/e5af1b077a6479ef9a1d0cb961f1bedb9576fcc7))
* handle path expressions that start with an underscore ([433d9c5](https://github.com/opicaud/pact-reference/commit/433d9c5941ddddb117e96c3c54272a9b4bbb9e99))
* Header matching rules with an index were not being applied [#238](https://github.com/opicaud/pact-reference/issues/238) ([2c8467e](https://github.com/opicaud/pact-reference/commit/2c8467ed19ed224b89bdfb51253953049a8ae0f2))
* http_consumer_feature_test on linux ([52768a3](https://github.com/opicaud/pact-reference/commit/52768a339ffa78fa9311b8664565162c57fb2b34))
* ignore flakey test ([6ff9c33](https://github.com/opicaud/pact-reference/commit/6ff9c33c61df43020a9147dedee9a45fc5cf72be))
* implement display for Interaction and Message ([831ba3d](https://github.com/opicaud/pact-reference/commit/831ba3d1b90ae1cf7852106f0fe89db0f1ff39ca))
* improve the error message when a merge conflict occurs ([6af29ce](https://github.com/opicaud/pact-reference/commit/6af29ce86db7d00f679fc1c079d51963a25afa2c))
* in callback executors, pass self by value to avoid lifetime issues ([a27ce14](https://github.com/opicaud/pact-reference/commit/a27ce14e410e971dc636c08df765a0f46174c6e3))
* include test results for successful interactions when publishing verification results [#92](https://github.com/opicaud/pact-reference/issues/92) ([74bd53f](https://github.com/opicaud/pact-reference/commit/74bd53fdef37396e30998671688629aacfe5413b))
* incorrectly handling provider state parameters from FFI call ([3a12b6f](https://github.com/opicaud/pact-reference/commit/3a12b6feda35f654d4f3d1a479eaae15715e33bf))
* Interaction builder was not copying plugin config data to the Pact metadata ([e91ad62](https://github.com/opicaud/pact-reference/commit/e91ad6221454d894f77eaf1cad745364a77adc10))
* intermediate date/time matcher JSON should use the format attribute ([f94f25a](https://github.com/opicaud/pact-reference/commit/f94f25a41405c18c46dec324ce7df23d9ff38cbd))
* introduce GeneratorTestMode and restrict provider state generator to the provider side ([13ce2f2](https://github.com/opicaud/pact-reference/commit/13ce2f21a830cdf1aeb0c880fc8a45f0a117cea5))
* jsdom does not support access-control-allow-headers: * for CORS pre-flight responses ([326d02d](https://github.com/opicaud/pact-reference/commit/326d02d181e336f8ad515d85e55c3651e17cc974))
* Keep the original value when injecting from a provider state value so data type is retained [#116](https://github.com/opicaud/pact-reference/issues/116) ([e21db69](https://github.com/opicaud/pact-reference/commit/e21db69997f99270c515d1a23fbaa54f6b5d75b5))
* linux verifier ffi shasum path was incorrect. Fixes [#114](https://github.com/opicaud/pact-reference/issues/114) ([12e5170](https://github.com/opicaud/pact-reference/commit/12e51704360c3d323bd030357ce22a6bb88c4790))
* lock the pact crate versions so that updates do not break CLI install [#189](https://github.com/opicaud/pact-reference/issues/189) ([8d58ea3](https://github.com/opicaud/pact-reference/commit/8d58ea349b9a1363ff994c786b64429d05213299))
* log crate version must be fixed across all crates (including plugin driver) ([c208964](https://github.com/opicaud/pact-reference/commit/c20896454047e8e8e69795c0854ee9e6332dc945))
* Macos on conan package ([a0d701e](https://github.com/opicaud/pact-reference/commit/a0d701ee0e83ad785002cb59a46e13e900729a04))
* make application/xml equivalent to text/xml ([6995298](https://github.com/opicaud/pact-reference/commit/6995298e241bf193d906ec2474dee960b2765d81))
* make HAL client fetch and fetch link functions support brokers hosted with context paths [#220](https://github.com/opicaud/pact-reference/issues/220) ([77a7c8b](https://github.com/opicaud/pact-reference/commit/77a7c8ba4d4c60c95081bab040448050ea626873))
* make sure metadata entries are correctly encoded when downgrading a pact ([a859d0e](https://github.com/opicaud/pact-reference/commit/a859d0e1ac53952af7f18913ba59c854a69240e8))
* map matching logic was not including the EachValue matcher ([cd6fe27](https://github.com/opicaud/pact-reference/commit/cd6fe27a3959e43b867254f673207c48ea9b1349))
* matcher_from_integration_json in mockserver/bodies.rs doesn't support all MatchingRules [#247](https://github.com/opicaud/pact-reference/issues/247) ([3760c2b](https://github.com/opicaud/pact-reference/commit/3760c2b3d1bf20be5f1ace96573b1452e28b56f7))
* matchers in Pact file can have a different order on OSX ([c8ad6d4](https://github.com/opicaud/pact-reference/commit/c8ad6d49a916c5c1232c485a24cfa31b247acba0))
* matching binary data was broken after refactor ([d24cfe3](https://github.com/opicaud/pact-reference/commit/d24cfe30e0bca6bea212589bbca2c5c4a5df2154))
* matching definition parser was incorrectly merging multiple definitions ([e1e0b43](https://github.com/opicaud/pact-reference/commit/e1e0b43ecca23a261438268746ef44015d938087))
* Matching rule parser was not handling decimal values correctly ([74a36a1](https://github.com/opicaud/pact-reference/commit/74a36a1b768908c3b76a44d8a3e36ea1ba41ab34))
* Matching rules are not being applied correctly to message metadata [#245](https://github.com/opicaud/pact-reference/issues/245) ([4409441](https://github.com/opicaud/pact-reference/commit/4409441b21b8f6a3edf8029ba9b49ce640871dcb))
* message pact feature test ([cf679bd](https://github.com/opicaud/pact-reference/commit/cf679bdd3996a41e842cedefd1194c52264cabfa))
* message pact feature test ([84d79a1](https://github.com/opicaud/pact-reference/commit/84d79a10afa86d50097f32adc70b4d33b2e90b74))
* message pact needed matchingrules + generators ([59e23f4](https://github.com/opicaud/pact-reference/commit/59e23f416932638708d20237d6db5fec394738f1))
* Message pact was not loading the IDs from the Pact Broker [#239](https://github.com/opicaud/pact-reference/issues/239) ([64d500b](https://github.com/opicaud/pact-reference/commit/64d500b0c7f47141a39fea36cd989bf15fd99a04))
* message_reify was returning a pointer to a Rust string ([ad0a72e](https://github.com/opicaud/pact-reference/commit/ad0a72ee9cfa7fab8f58bfb29527a59f325cfad0))
* Metadata was missing from the generator categories ([f84adc7](https://github.com/opicaud/pact-reference/commit/f84adc7ad614d548305c27c1d0ade0ae627481dc))
* **metrics:** swap uid for cid ([25d8cd9](https://github.com/opicaud/pact-reference/commit/25d8cd9b516ce619ac3a4e7354b3c7e174eec734))
* min/max type matchers must not apply the limits when cascading ([8bcd1c7](https://github.com/opicaud/pact-reference/commit/8bcd1c7ecad5a1792b6c446a90806be902c11ca2))
* min/max type matchers were not being applied to query parameters ([4e9d837](https://github.com/opicaud/pact-reference/commit/4e9d837430051609da15f0930b44a725f5190673))
* missing $ in macro ([86f8140](https://github.com/opicaud/pact-reference/commit/86f81408bb2d0f876cab73631dfe3f084abaabcf))
* missing import ([6076485](https://github.com/opicaud/pact-reference/commit/607648555e1bb7ba278a55e7d1e32b2a7a41747d))
* mock server matching requests with headers with multiple values ([d85f28c](https://github.com/opicaud/pact-reference/commit/d85f28c05cca9fa2548e57c765367c17ff103248))
* MockServerURL generator was using the incorrect field ([56ce20a](https://github.com/opicaud/pact-reference/commit/56ce20a03a33f16f853b5d86e3a8e41ce07bf4af))
* notEmpty matching rule defintion should be applied to any primitive value ([407cc2e](https://github.com/opicaud/pact-reference/commit/407cc2e5208743a151b1f6e99d3c649b89e49654))
* ok so maybe let's see if this works on linux 🤷 ([eb4b328](https://github.com/opicaud/pact-reference/commit/eb4b328ed43cf0d9dfd50316806248a22d2b40fe))
* Only print errors in the CLI to STDERR [#28](https://github.com/opicaud/pact-reference/issues/28) ([3c33294](https://github.com/opicaud/pact-reference/commit/3c33294887f109f1944c7793a56cd383d2f8b6f3))
* pact specification key in the metadata should be camelcase [#3](https://github.com/opicaud/pact-reference/issues/3) ([b68c893](https://github.com/opicaud/pact-reference/commit/b68c8937e59a8f836e485e573228ae11a1f74060))
* pact_consumer should be a dev dependency ([0c5d6c2](https://github.com/opicaud/pact-reference/commit/0c5d6c27fa8bf1b3c08d2a63c172dfd00897bdb9))
* PACT_DO_NOT_TRACK should be upper case ([43754e6](https://github.com/opicaud/pact-reference/commit/43754e6df296709ccc5be1f5645ad44bfada4bc7))
* pact_verifier_cli needs to use Tokio 0.2 ([2ebeef9](https://github.com/opicaud/pact-reference/commit/2ebeef9a1e2ec47e05f56f98bf72c6e059715d0d))
* pact_verifier_cli was printing the version from the FFI crate ([e8d6d84](https://github.com/opicaud/pact-reference/commit/e8d6d84414e266d0557d6aee4f7260b70a2caf18))
* **pact_verifier_cli:** log entries were being duplicated ([05e6399](https://github.com/opicaud/pact-reference/commit/05e6399d4568b312b8a65cc80e20cc16fd6d01e8))
* **pact_verifier_cli:** stop using deprecated clap::parser::matches::arg_matches::ArgMatches::values_of_lossy ([b626002](https://github.com/opicaud/pact-reference/commit/b626002c1aebecd8a7697d17fd3faf08148dfc13))
* pact_verifier_ffi release scripts ([6daae85](https://github.com/opicaud/pact-reference/commit/6daae85947f85aef9eec0d4e8dc1db2364a73218))
* **pact-ffi:** intermediate JSON - add test for JSON with decimal matcher [#179](https://github.com/opicaud/pact-reference/issues/179) ([7688908](https://github.com/opicaud/pact-reference/commit/76889087a5292fd6d131486214a9447d8dace112))
* **pact-ffi:** intermediate JSON - type matcher paths were being incorrectly allocated to children [#179](https://github.com/opicaud/pact-reference/issues/179) ([b10453c](https://github.com/opicaud/pact-reference/commit/b10453c3dec92b95b5e8c201de19385dddc4a382))
* pacts for verification unmarshal fails if 'pending' attr is not returned in response ([d481bc1](https://github.com/opicaud/pact-reference/commit/d481bc10d379bc68128cce340468fd01ee3d0c5b))
* panicked at 'called  on a  value' when FFI LevelFilter == Off [#226](https://github.com/opicaud/pact-reference/issues/226) ([d976db0](https://github.com/opicaud/pact-reference/commit/d976db0c3d413fceee6b2cb14353793d9f6c62b0))
* parse the V3 keys as path expressions for query and header matchers ([948e620](https://github.com/opicaud/pact-reference/commit/948e620ca8f14fcb6e4b05cb585076a79aa0fe0a))
* path in release scripts ([2f29760](https://github.com/opicaud/pact-reference/commit/2f2976088e468520ee810c012468d13a8a4c35cd))
* pinning version of webmachine until reqwest is updated ([773b4b1](https://github.com/opicaud/pact-reference/commit/773b4b1076f018c14444fd56028064bb404f67c5))
* PluginData configuration is optional ([c0bdd35](https://github.com/opicaud/pact-reference/commit/c0bdd359f792a070e2099256c84f603a3781125d))
* ported matching logic fixes from Pact-JVM ([6633575](https://github.com/opicaud/pact-reference/commit/6633575c148931bdb971ba2741cb9487483066c3))
* provider request timeout should be > 16bit integers. Fixes https://github.com/pact-foundation/pact-js/issues/761 ([0ef3fb9](https://github.com/opicaud/pact-reference/commit/0ef3fb981a53f1858f875fc29ef561ceed1b0c26))
* provider state handlers must be synchronous so they are executed for the actual request ([126b463](https://github.com/opicaud/pact-reference/commit/126b4635613820bcdc827f605a63b72fcc98d7dd))
* publishing provider branch was broken when invoked via a webhook call ([7f51bdc](https://github.com/opicaud/pact-reference/commit/7f51bdc6ddb64478e5b1e10a618a2d35b64ef430))
* race condition when shutting down plugin via FFI ([e4a445b](https://github.com/opicaud/pact-reference/commit/e4a445ba15e71f7332cf1f411b6b744c40e3c847))
* random decimal generator now includes a decimal point in the generated values ([042bed0](https://github.com/opicaud/pact-reference/commit/042bed0aeb136d2d26e8cd47e861c64ae324f72e))
* release script ([0fe57d9](https://github.com/opicaud/pact-reference/commit/0fe57d9ca24bcf683f0e74a3cbb59b631e8615c6))
* remove duplicated line ([a7c674a](https://github.com/opicaud/pact-reference/commit/a7c674ab0985cddc73947e2b75dad65856377a08))
* repeat the test 3 times [#54](https://github.com/opicaud/pact-reference/issues/54) ([d4dd39f](https://github.com/opicaud/pact-reference/commit/d4dd39f6f305d3dafb4ef321bbdf56701cb4324b))
* reqwest is dyn linked to openssl by default, which causes a SIGSEGV on alpine linux ([b4e2684](https://github.com/opicaud/pact-reference/commit/b4e2684404bdcd8543aa352eb937d57f597c8555))
* results for sync messages were not being displayed ([4587a43](https://github.com/opicaud/pact-reference/commit/4587a430247ca3457ac550fe1839a4a14b9e35a2))
* retain the data type for simple expressions [#116](https://github.com/opicaud/pact-reference/issues/116) ([80e3c4e](https://github.com/opicaud/pact-reference/commit/80e3c4e722bdde71a242ad039d2b0f416a757279))
* return a failure if any pact verification fails [#47](https://github.com/opicaud/pact-reference/issues/47) ([665bbd8](https://github.com/opicaud/pact-reference/commit/665bbd8c112c75d4062a3b83020d24faad8f5c10))
* return the most relevant response from the mock server [#69](https://github.com/opicaud/pact-reference/issues/69) ([da53bac](https://github.com/opicaud/pact-reference/commit/da53bacf9238e87413ea7841b9ad03ce462fab6c))
* return version of the mock server via FFI without heap allocation [#80](https://github.com/opicaud/pact-reference/issues/80) ([51eef86](https://github.com/opicaud/pact-reference/commit/51eef864f040d93a112f91e45f742be04ab1fe85))
* rust/pact_mock_server_cli/Dockerfile to reduce vulnerabilities ([fcbee0c](https://github.com/opicaud/pact-reference/commit/fcbee0c2a9e137354c95200778d345bb9628ded8))
* rust/pact_mock_server_cli/Dockerfile to reduce vulnerabilities ([eb92d66](https://github.com/opicaud/pact-reference/commit/eb92d665cdd7aec7c48a0c2d487e6956498e9bce))
* rust/pact_verifier_cli/Dockerfile to reduce vulnerabilities ([c7f6887](https://github.com/opicaud/pact-reference/commit/c7f6887148187cf60cd471883425dee225c496ea))
* rust/pact_verifier_cli/Dockerfile to reduce vulnerabilities ([f709528](https://github.com/opicaud/pact-reference/commit/f709528d6bccae8acc984b7d8f3ad5ce01af68eb))
* serialise v2 path matcher correctly for FFI ([a33718a](https://github.com/opicaud/pact-reference/commit/a33718a096ab2d6d6e79e2a646fbce484918ed78))
* set content-type header in message request ([3e943b1](https://github.com/opicaud/pact-reference/commit/3e943b1677321d4e91ac25ed66e4c847ed92ab0e))
* set the path to the generated pact file [#54](https://github.com/opicaud/pact-reference/issues/54) ([b5474b4](https://github.com/opicaud/pact-reference/commit/b5474b4a91cf2a9d1b3edb85c15ddfa43d926031))
* shared mime-info db not available on Windows ([41b406a](https://github.com/opicaud/pact-reference/commit/41b406aac30bc5ae7b3000a5a1558997dfb074cf))
* shutdown the tokio reactor correctly when there is an error ([c97f5d1](https://github.com/opicaud/pact-reference/commit/c97f5d1a326fb4695be374309f1b18fcdfa02b0c))
* Some matching rules do not have associated configuration ([39338c4](https://github.com/opicaud/pact-reference/commit/39338c46f8e43661605267deac822835aa0ad49e))
* sort the header and query parameter keys when writing the pact [#246](https://github.com/opicaud/pact-reference/issues/246) ([4c04cb6](https://github.com/opicaud/pact-reference/commit/4c04cb65edc8c04abc2dab059cfdfb0d091ef640))
* State change descriptions were not being displayed along with the interaction description ([6cae9b0](https://github.com/opicaud/pact-reference/commit/6cae9b0932eb03a3d8c909ad92b7a9c8c3f12a0d))
* state change URLs should not end with a slash [#110](https://github.com/opicaud/pact-reference/issues/110) ([e993074](https://github.com/opicaud/pact-reference/commit/e99307407c0c24314e73d125a5e1927252502a76))
* store matching rules in a set to avoid duplicates ([a0dc946](https://github.com/opicaud/pact-reference/commit/a0dc9468837f9d3cf05b39d7310b258c30c721ee))
* strip off anchors before generating a value from a regex ([cd9d41c](https://github.com/opicaud/pact-reference/commit/cd9d41cc78bb0dc7f27739eeceeea684594a9589))
* support header values that are not well formed [#228](https://github.com/opicaud/pact-reference/issues/228) ([4f786ff](https://github.com/opicaud/pact-reference/commit/4f786ff4baf568c000bc209d5020a79e381cc1c0))
* support matching rules affected by Pact-JVM defect 743 ([97abce4](https://github.com/opicaud/pact-reference/commit/97abce4d0ffb136e9bb136da9d6cd326e8aad765))
* Support RequestResponsePact loading from V4 formatted JSON [#246](https://github.com/opicaud/pact-reference/issues/246) ([155dae4](https://github.com/opicaud/pact-reference/commit/155dae400c8718121c430f2bf9b84399866b6b21))
* support specifying matching_branch in verifications ([29605ab](https://github.com/opicaud/pact-reference/commit/29605ab06dd6ffcc1c120f0506339eec7a996858))
* support specifying matching_branch in verifications ([260deb7](https://github.com/opicaud/pact-reference/commit/260deb7026c81c3d81d2c277c5777a9ae44c1d9b))
* switch to the Oniguruma crate for regex matching [#46](https://github.com/opicaud/pact-reference/issues/46) ([defe890](https://github.com/opicaud/pact-reference/commit/defe8907b4f261ca02487ece9c96325b3886f27b))
* Templated values in HAL links need to be URL encoded [#166](https://github.com/opicaud/pact-reference/issues/166) ([f4fdba3](https://github.com/opicaud/pact-reference/commit/f4fdba3c2a3e81962e096fa2dbfa0632c44b4e4b))
* times with millisecond precision less 3 caused chronos to panic ([850282d](https://github.com/opicaud/pact-reference/commit/850282d70787eee0c015ccbb97daa20f88f8faf6))
* try loosen dependencies to fix dependency cycle issue ([f91dc00](https://github.com/opicaud/pact-reference/commit/f91dc00da1013bbedd8880f1aab821dba343bb1c))
* update conan test packages to use updated API ([2eba288](https://github.com/opicaud/pact-reference/commit/2eba2886d77e1cd025d6cbb72d78957654bd9ab5))
* update doc comment on message_with_contents function ([64e0700](https://github.com/opicaud/pact-reference/commit/64e07005ac9b791207e1cad363f952db0086df11))
* update flakey ffi feature test ([7d50453](https://github.com/opicaud/pact-reference/commit/7d50453f50b51edfeace4ab766d9dc571eb5920c))
* Update onig to latest master to fix  Regex Matcher Fails On Valid Inputs [#214](https://github.com/opicaud/pact-reference/issues/214) ([6ad00a5](https://github.com/opicaud/pact-reference/commit/6ad00a5da941a700ed0443104fc07c88e825461c))
* update to latest driver crate ([fc5be20](https://github.com/opicaud/pact-reference/commit/fc5be20223124292f089d9d5a5a303c2ebfd84de))
* update to latest models and plugin driver crates ([918e5be](https://github.com/opicaud/pact-reference/commit/918e5beb7c4422c061c6f6fff0bc64c2524c42d0))
* Upgrade pact_models to 0.4.5 - fixes FFI bug with generators for request paths ([f8db90d](https://github.com/opicaud/pact-reference/commit/f8db90d2df4b316eed7a93cbf02bf6e79f7fd34a))
* Upgrade pact_models to 1.0 and pact-plugin-driver to 0.1.15 to fix cyclic dependency issue ([577824e](https://github.com/opicaud/pact-reference/commit/577824e70e0571ddf8292cd55cc981cef92c7c31))
* Upgrade pact_verifier to 0.13.13 ([cdb555f](https://github.com/opicaud/pact-reference/commit/cdb555f8adb122c74c394ccad085d1597177c270))
* Upgrade plugin driver to 0.1.13 (fixes issue loading plugin when there are multiple versions for the same plugin) ([965a1c4](https://github.com/opicaud/pact-reference/commit/965a1c415dc7df0e3c7d2f45b62a4f9c9e14c6d4))
* Upgrade plugin driver to 0.3.1 ([1e7331f](https://github.com/opicaud/pact-reference/commit/1e7331f15d70ae9a83a10e09dce238aceb42ff7e))
* Upgrade reqwest to 0.11.10 to resolve [#156](https://github.com/opicaud/pact-reference/issues/156) ([73ae0ef](https://github.com/opicaud/pact-reference/commit/73ae0ef000113bb8e6362754a33a3bbbd8e0fa43))
* upgrade to tree_magic_mini 2.0.0 because they pulled 1.0.0 from crates.io and now builds fail ([75c2c1a](https://github.com/opicaud/pact-reference/commit/75c2c1a33e16dc5b49f8f25d8cad5ff349dfcc37))
* upgrade uuid crate ([1651af1](https://github.com/opicaud/pact-reference/commit/1651af19e9a176998b364b511b5d30d0d84388bd))
* use a single result enum [#66](https://github.com/opicaud/pact-reference/issues/66) ([9b1c192](https://github.com/opicaud/pact-reference/commit/9b1c19250bb6422a40612b601ee0658de3dbd683))
* use the pacts for verification endpoint if the conusmer selectors are specified [#133](https://github.com/opicaud/pact-reference/issues/133) ([c274ca1](https://github.com/opicaud/pact-reference/commit/c274ca1ac45d65758e59cf897d195dea0686adcf))
* use Vec instead of HashSet to maintain order of matching rules on OSX ([42f0a39](https://github.com/opicaud/pact-reference/commit/42f0a396197ec6e1f0adcf49ac00ee140dc707f0))
* using `clone` on a double-reference ([39c3816](https://github.com/opicaud/pact-reference/commit/39c3816305243c942d0962722313ab5882c135c3))
* using `clone` on a double-reference ([c182c25](https://github.com/opicaud/pact-reference/commit/c182c251cef9a4f1e900c933a69b7ca8c3eb95ec))
* UUID generator should return hyphenated values ([a5f17a5](https://github.com/opicaud/pact-reference/commit/a5f17a54d276eb4034ba138362d1e658e791b009))
* V3 path matcher JSON format was incorrect ([b52f095](https://github.com/opicaud/pact-reference/commit/b52f09563897eef11c2e33e431957865de8b1c65))
* **V4:** Status code matcher was not converted to JSON correctly ([457aa5f](https://github.com/opicaud/pact-reference/commit/457aa5fc81bb709cf7524547f8ac28fb850eac66))
* Values matcher should not be applied to a slice like Equality ([dfa9f61](https://github.com/opicaud/pact-reference/commit/dfa9f6148e7601523cde70c08e89faa66fb5f9fd))
* Values matchers must not cascade ([07e2a3b](https://github.com/opicaud/pact-reference/commit/07e2a3b63598e0828cb7ee878ac414f8833cd829))
* values_matcher_defined should include EachValue matcher ([41a5231](https://github.com/opicaud/pact-reference/commit/41a523199c31350ee8292fec960c9aa9b569a1fd))
* verification CLI was reporting incorrect pact specification version ([4b8fb64](https://github.com/opicaud/pact-reference/commit/4b8fb645ba24b5f0125db548a011b5aa0869e68c))
* Verification results across multiple pacts accumulate, publishing invalid results [#231](https://github.com/opicaud/pact-reference/issues/231) ([c12d9a6](https://github.com/opicaud/pact-reference/commit/c12d9a61a6001fe9eeb0b30025d9d61866e529b6))
* **verifier test:** missing addition of teardown impl ([1768141](https://github.com/opicaud/pact-reference/commit/1768141e4e6a9f65d611b71786e90150b268fd6b))
* verifier was returning a mismatch when the expected body is empty [#113](https://github.com/opicaud/pact-reference/issues/113) ([a44cbbe](https://github.com/opicaud/pact-reference/commit/a44cbbeef383abded363fe0f9613fb05d79668b4))
* **verifier:** fix typos in the implementation of Display on the PactSource enum ([b8d263f](https://github.com/opicaud/pact-reference/commit/b8d263f760b71035fc4773d280dbe5a49185e3c6))
* **verifier:** provider state executor teardown function does not need to be async ([6466545](https://github.com/opicaud/pact-reference/commit/6466545f3634032f6e30a5da3c530360c2fb60fc))
* **verifier:** the state_change_teardown option didn't appear to actually be used ([5f782d6](https://github.com/opicaud/pact-reference/commit/5f782d6757bd97ff202a16081b7120c48735efee))
* verify interaction was blocking the thread ([484b747](https://github.com/opicaud/pact-reference/commit/484b747ffeb37e9271395894eff4cf983d27e495))
* was incorrectly selecting the matching rule when weight was equal ([67e2147](https://github.com/opicaud/pact-reference/commit/67e2147deb068733dfb5ec221fe70e5dfe0c9b17))
* was missing setter to set the transport with V4 interactions ([01ac989](https://github.com/opicaud/pact-reference/commit/01ac989b3cab8383a144d36b7fe86c2f3f8e983c))
* when comparing content types, check the base type if the actual content type has a suffix [#224](https://github.com/opicaud/pact-reference/issues/224) ([83d14ce](https://github.com/opicaud/pact-reference/commit/83d14ce1424bcbc0298e717b207f48b91d5080f1))
* when displaying diff, if actual body was empty a panic resulted ([baf3693](https://github.com/opicaud/pact-reference/commit/baf3693ce193e00311613634c6f47c3b21bd8803))
* when loading pacts from a dir, filter by the provider name [#233](https://github.com/opicaud/pact-reference/issues/233) ([34a67cb](https://github.com/opicaud/pact-reference/commit/34a67cb9c76b581f45c1117649dfc100fb9b27c2))
* when loading plugins for Pact files, only take minor + major version into account ([e93c557](https://github.com/opicaud/pact-reference/commit/e93c5574393816d53f3a92e5d3d16b7c6ff97773))
* when matching bodies, use any content type header matcher ([88eff15](https://github.com/opicaud/pact-reference/commit/88eff157e138d0b2151859d3341019ba62d7c1a9))
* when merging pacts, it helps to use the new interations in the merged pact, not the old ones [#77](https://github.com/opicaud/pact-reference/issues/77) ([3acf437](https://github.com/opicaud/pact-reference/commit/3acf4376bc475e0b1a2acaa08c2b1505ad36d4b4))
* Windows URL on conan package ([bb1e35e](https://github.com/opicaud/pact-reference/commit/bb1e35ea2858e95220e19206c8585200c1996941))
* write_pact_file was always serialising a v3 pact even if the spec version was set to 2 ([d7632cb](https://github.com/opicaud/pact-reference/commit/d7632cb5b81f7fae9185285872511f3a72092329))
* xml response matching rules ([13f7c36](https://github.com/opicaud/pact-reference/commit/13f7c36fa8af2eec06c880320c9f692cd14d1059))

### chore

* rename header PACT_MESSAGE_METADATA -> Pact-Message-Metadata ([b3a6f19](https://github.com/opicaud/pact-reference/commit/b3a6f193f7d9012f64ecbf140081e1bf17b44beb))

### deps

* **pact_mock_server_ffi:** remove formdata, add multipart ([3b73b71](https://github.com/opicaud/pact-reference/commit/3b73b71fe4f34511c69e83fcb24a11fd16e70ce0))

### Features

* add --no-color option to verfier CLI [#203](https://github.com/opicaud/pact-reference/issues/203) ([4530dbd](https://github.com/opicaud/pact-reference/commit/4530dbdecc9f35f2487d2a03975fa72dd18e5f6d))
* add a boolean return value for all FFI interaction functions [#108](https://github.com/opicaud/pact-reference/issues/108) ([64adcdc](https://github.com/opicaud/pact-reference/commit/64adcdc4e14c0e604ce8139420ed80d081dc81d3))
* Add a command to shut the master mock server down [#26](https://github.com/opicaud/pact-reference/issues/26) ([40ad75b](https://github.com/opicaud/pact-reference/commit/40ad75bdaea5edf659a5cbb17c4bae025016dc03))
* add a method to join a value onto a doc path ([c707a8c](https://github.com/opicaud/pact-reference/commit/c707a8c05d393aeebc866c795de740a8162e2993))
* add a mock server config struct ([29ba743](https://github.com/opicaud/pact-reference/commit/29ba743638e78c1e127695edab2e45b24a47b776))
* add a mock server URL generator ([09b197d](https://github.com/opicaud/pact-reference/commit/09b197d4d41bc4a3fe37860df392fc3e32084e6b))
* Add a parameter for the server key to the start command [#26](https://github.com/opicaud/pact-reference/issues/26) ([074569a](https://github.com/opicaud/pact-reference/commit/074569ace68cbc8051a35cbddd09e3ae21c0e42c))
* add a test to check for error result with IO error [#213](https://github.com/opicaud/pact-reference/issues/213) ([8ca3303](https://github.com/opicaud/pact-reference/commit/8ca3303bd9417764999e04f8e18b3c31d9afd22f))
* add ability of mock server to expose metrics [#94](https://github.com/opicaud/pact-reference/issues/94) ([5a529fd](https://github.com/opicaud/pact-reference/commit/5a529fd52d0f842213e2d0147b7913f0e00921db))
* add all the CORS headers ([d3c5cf2](https://github.com/opicaud/pact-reference/commit/d3c5cf284e67c64603b12208344e50515be9c888))
* add an iterator over the matching rules from a matching definition expression ([18e1e11](https://github.com/opicaud/pact-reference/commit/18e1e113b05ec6663c637193f3ea5fa06ba09bfc))
* Add ARM64 (aarch64) linux targets to the release build [#160](https://github.com/opicaud/pact-reference/issues/160) ([e3bef15](https://github.com/opicaud/pact-reference/commit/e3bef1556a2613cbda7df8616d97f71325a303ff))
* add bazel to build libpact_ffi.a ([c1098a4](https://github.com/opicaud/pact-reference/commit/c1098a42486e8acb38d43a4aa275b06c18bd1315))
* add bazel to build shared library libpact_ffi.a ([1149bed](https://github.com/opicaud/pact-reference/commit/1149bed2b35ad2dde9f2213ed660fb99f672a7ea))
* add bazel to build shared library libpact_ffi.a ([83df4f6](https://github.com/opicaud/pact-reference/commit/83df4f620911be57b029c32f3485614856779f33))
* add CLI options to provide different ports when there are different transports ([8cc2948](https://github.com/opicaud/pact-reference/commit/8cc294825d64f20af31804eafc7c617ce653a51f))
* add colons to the allowed path characters ([66c328e](https://github.com/opicaud/pact-reference/commit/66c328edeaff40487282eb543f1e9c025b46ae5c))
* add convience methods to modify headers ([e699061](https://github.com/opicaud/pact-reference/commit/e6990616414890f174f5d6c5030a28d8f745eea4))
* add cross config to build arm64 binaries ([34f4f6c](https://github.com/opicaud/pact-reference/commit/34f4f6cd567a2f8f78c2c1ba44c188614e45b388))
* add custom-header to the old FFI args for implementations that have not moved to handles ([2e5823a](https://github.com/opicaud/pact-reference/commit/2e5823a015e077fd1701bb5baa8e457efa47371c))
* add date-time matcher to consumer DSL ([be604cc](https://github.com/opicaud/pact-reference/commit/be604cce3c14af3802e979bff594ff641507e7b9))
* add docs on the matching rule IDs ([cfc565e](https://github.com/opicaud/pact-reference/commit/cfc565e3a10e5142ba0fc45bbcaab476111665a6))
* add exponental deplay the pact broker client retries [#94](https://github.com/opicaud/pact-reference/issues/94) ([656201c](https://github.com/opicaud/pact-reference/commit/656201c3bc942377cf539db7aa5285b1914c38aa))
* add FFI function to create mock server from Pact handle ([0613180](https://github.com/opicaud/pact-reference/commit/06131807d6c6cccdbdcdb03ae85ab2b4ee109c62))
* add FFI function to get the generator from a matching definition ([f7b561e](https://github.com/opicaud/pact-reference/commit/f7b561eea96ba05e6d8e8b36837182fba4636992))
* add FFI function to parse a matching definition expression ([768a132](https://github.com/opicaud/pact-reference/commit/768a132beec12daf6f1ce9e95f4b19ea86555eaa))
* add FFI function to parse JSON to a Pact model ([e21d345](https://github.com/opicaud/pact-reference/commit/e21d3454d2488adddc04fd268486182be5cabf11))
* add FFI function to return generator JSON ([570e33c](https://github.com/opicaud/pact-reference/commit/570e33c1936819fb2ad1c0ea483bebe3077866b8))
* add FFI function to set a message contents ([cf40b7d](https://github.com/opicaud/pact-reference/commit/cf40b7de34ba8e7becdc8aada60c62f5359e82f4))
* add FFI function to set a message contents as binary ([8f112ad](https://github.com/opicaud/pact-reference/commit/8f112ad07034a8b88825d90078b3a55ca15be55b))
* add FFI functions to extract logs from a verifcation run ([42be9eb](https://github.com/opicaud/pact-reference/commit/42be9eb8602740da598f1f8c778db62bbdde2573))
* add FFI functions to return the verifier output and results ([c676e82](https://github.com/opicaud/pact-reference/commit/c676e821888d1d07e7ad2cbe27bc6483c44c2da7))
* add for custom headers to the HTTP client used by the verifier [#182](https://github.com/opicaud/pact-reference/issues/182) ([f52c362](https://github.com/opicaud/pact-reference/commit/f52c362526dfad5b2629cd5633dd5c5b03995a88))
* add function to detect if a string is a matching definition ([481762f](https://github.com/opicaud/pact-reference/commit/481762f0070deab7298340e8545c60818cde2cbd))
* add function to get matching rule as JSON ([7a2686e](https://github.com/opicaud/pact-reference/commit/7a2686e000bf4aeffe382e43f8cc27a754af1247))
* add function to retrieve the TLS CA cert ([2f16b34](https://github.com/opicaud/pact-reference/commit/2f16b34850594be7573ea0094323c83c1163e70f))
* Add functions to calc unique key to V4 interaction trait ([6de6c22](https://github.com/opicaud/pact-reference/commit/6de6c229bc6624b07893aecdaa9db63c5c9f5462))
* add functions to return mutable references to the V4 model trait ([15b8f08](https://github.com/opicaud/pact-reference/commit/15b8f08f4d55834eaf60a47ec8685e292f85ea22))
* add functions to return plugin details to the WASM interface ([5ceaae2](https://github.com/opicaud/pact-reference/commit/5ceaae2af82c720165a4e5dc71d3998fc319bb28))
* add generator FFI functions ([b7c010e](https://github.com/opicaud/pact-reference/commit/b7c010eb1957f6b244f2ea76f4b64fcfc23d7b42))
* add ignore-no-pacts-error to the verifier CLI [#213](https://github.com/opicaud/pact-reference/issues/213) ([8663cd3](https://github.com/opicaud/pact-reference/commit/8663cd3f32213d47c28813186a9e67019a2821c6))
* Add initial V4 models and example pact files ([7232e89](https://github.com/opicaud/pact-reference/commit/7232e8955d9d301944b2acffbe35eae5d3dad5f4))
* add json output to the verifier CLI ([d0fa29d](https://github.com/opicaud/pact-reference/commit/d0fa29dc91b79d926f35bd89ca814f64656b1b8f))
* add MessagePact (Pact with Messages instead of Interactions) ([cc42fbc](https://github.com/opicaud/pact-reference/commit/cc42fbc9e062c585c42a65f6e90ea870dbe42720))
* add metadata to consumer message ffi interface ([10e54b8](https://github.com/opicaud/pact-reference/commit/10e54b88dbeeb26f62a06ffce43d15cf243cc024))
* add method to DocPath to return the parent path ([b5fd82e](https://github.com/opicaud/pact-reference/commit/b5fd82e5fd624d1d5691305d77de438ded7c078f))
* add method to V4Pact to find an interaction by ID ([7e3e2e1](https://github.com/opicaud/pact-reference/commit/7e3e2e18949f317ee47ac77ee8adc07a2420eb4d))
* add metric call when the mock server is shutdown via FFI function ([78c05f2](https://github.com/opicaud/pact-reference/commit/78c05f29f8f23e496edace45060c0517b7577a78))
* add metrics event for provider verification ([f8042d6](https://github.com/opicaud/pact-reference/commit/f8042d6b4351dd4e5c337a0151ac263d22f65925))
* add metrics events for Pact-Rust consumer tests ([cba3f08](https://github.com/opicaud/pact-reference/commit/cba3f08ef57aed85e778d3cd65c8235a4c7906ae))
* add metrics publishing to matching crate ([48d061e](https://github.com/opicaud/pact-reference/commit/48d061ef5066732b2baa90248572b33b6f622eb4))
* add musl target to the release build [#185](https://github.com/opicaud/pact-reference/issues/185) ([16fbe7c](https://github.com/opicaud/pact-reference/commit/16fbe7cfe96ee760867c17a40c353205df997356))
* add mutable iteraction over Pact interactions ([daa2c10](https://github.com/opicaud/pact-reference/commit/daa2c1011e612da6df323b93f26f79f8f48f283c))
* add mutable methods to Pact model traits ([fa83806](https://github.com/opicaud/pact-reference/commit/fa83806c8ff0831c3a66eaabb6f2f944faa57f0b))
* Add options for compact and human formats to the verifier CLI log output ([53a622a](https://github.com/opicaud/pact-reference/commit/53a622adb2194833b396b3a5eeab1fe2832b847a))
* add pactffi_create_mock_server_for_transport function ([5cd2ae5](https://github.com/opicaud/pact-reference/commit/5cd2ae5a4c588f500e56c08afb65f7a7476d585a))
* add pactffi_pact_handle_write_file which knows about the spec version ([675506e](https://github.com/opicaud/pact-reference/commit/675506e1fd61ed2f86dcc77d2c37945db8e2fb4e))
* add retries to the provider state change calls [#197](https://github.com/opicaud/pact-reference/issues/197) ([18118e8](https://github.com/opicaud/pact-reference/commit/18118e8280bd1da2d89d0e366d81c6a4628c4911))
* add retry to the pact broker client fetch [#94](https://github.com/opicaud/pact-reference/issues/94) ([8541751](https://github.com/opicaud/pact-reference/commit/8541751e22a81751198a7687839c5c63bbb677c2))
* add retry to the pact broker client post and put [#94](https://github.com/opicaud/pact-reference/issues/94) ([e38634e](https://github.com/opicaud/pact-reference/commit/e38634eb26dd5dc14e20b7236e7a7e97a75148e8))
* add self-signed tls option to mockserver cli (to test TLS with Tokio 1.0) ([76f052b](https://github.com/opicaud/pact-reference/commit/76f052bbd372852334b44bcdcbeaf837b471fccc))
* Add short option for custom headers ([14e3b8f](https://github.com/opicaud/pact-reference/commit/14e3b8ffbbab0147ea551ff8482b16d81ef5a4e4))
* add support for custom headers via the verifier CLI [#182](https://github.com/opicaud/pact-reference/issues/182) ([7932480](https://github.com/opicaud/pact-reference/commit/793248027c14332b1440581e09ed4c7788990e67))
* add support for custom headers with the verifier FFI calls [#182](https://github.com/opicaud/pact-reference/issues/182) ([74bd453](https://github.com/opicaud/pact-reference/commit/74bd4531c045235701d570b6d570646e0c36aa8a))
* add support for TLS with the mock server [#65](https://github.com/opicaud/pact-reference/issues/65) ([da885a3](https://github.com/opicaud/pact-reference/commit/da885a3c68a750eabb10f1f23832254af484542e))
* add support functions for regular expressions for foreign DSLs ([b30fd2d](https://github.com/opicaud/pact-reference/commit/b30fd2d5b10205039ddfd267b1f6ccd0042df6cf))
* add tests for serialising Generator::ProviderStateGenerator ([b130cd2](https://github.com/opicaud/pact-reference/commit/b130cd22ebea2b736d18bf6f5353edef627b5ee2))
* add user-agent header to the HALClient ([8bb2534](https://github.com/opicaud/pact-reference/commit/8bb2534ddba053f32cd46bd00b4d3f45bdc59743))
* add verification option to disable ANSI escape codes in output [#203](https://github.com/opicaud/pact-reference/issues/203) ([40f7bdc](https://github.com/opicaud/pact-reference/commit/40f7bdc413440e31a8e9e1ceaebdafc81991c3d2))
* add verifiedBy to the verified results ([09513de](https://github.com/opicaud/pact-reference/commit/09513de575b2059cd8ed434ca3acd8181fd1a099))
* add verifier ffi function set consumer filters ([dab7027](https://github.com/opicaud/pact-reference/commit/dab702729bfd56df1736d3ffe5a9db4d63a3769b))
* add verifier ffi function set verification options ([05f4c3d](https://github.com/opicaud/pact-reference/commit/05f4c3de5a714278f3f01ad10f7ba2f67c99ff50))
* added a struct for handling content types ([5316030](https://github.com/opicaud/pact-reference/commit/5316030dca71373e9bf918a22d8d9226f2ac210d))
* added convenience header methods to HttpPart ([ead1af2](https://github.com/opicaud/pact-reference/commit/ead1af2bf9589a375791459367c3259c04d80b99))
* Added header_from_provider_state and path_from_provider_state ([ffbcaf5](https://github.com/opicaud/pact-reference/commit/ffbcaf58b85a5bbc49e957204c61cd165c8d7cf9))
* added interaction handle ([9ec8817](https://github.com/opicaud/pact-reference/commit/9ec8817c9f71ebd745887cc5b45752a723ee2dee))
* added read locks and a mutex guard to reading and writing pacts ([9976e80](https://github.com/opicaud/pact-reference/commit/9976e80bc06db7b55bd3d630f8d2a8e10463b8ef))
* added some tests for publishing verification results to the pact broker [#44](https://github.com/opicaud/pact-reference/issues/44) ([eef3d97](https://github.com/opicaud/pact-reference/commit/eef3d97139002e33679213ec9f6cfb2978cdcc4b))
* added test for array contains as a generator ([5556b32](https://github.com/opicaud/pact-reference/commit/5556b326b1a0cfcf34c717419c6e4e5885211289))
* added the ProviderStateGenerator as a generator type ([cb30a2f](https://github.com/opicaud/pact-reference/commit/cb30a2f227fef624f8298d12f1c422fd4fd6946a))
* added V4 interaction types ([b2725dd](https://github.com/opicaud/pact-reference/commit/b2725dd59e2441c014b20773f741ef0f1d622491))
* added validation of provider state JSON ([31873ee](https://github.com/opicaud/pact-reference/commit/31873ee30d8cb75f9a55c6b6f1b8cd308572e8b6))
* added verification of req/res interaction ([82a2d5d](https://github.com/opicaud/pact-reference/commit/82a2d5dfd1f10b02e2f04b68e56e7e5aca192390))
* allow BrokerWithDynamicConfiguration to publish results ([f76ddd8](https://github.com/opicaud/pact-reference/commit/f76ddd8e8c12e55e020ae334e6e765fc74313ed7)), closes [#181](https://github.com/opicaud/pact-reference/issues/181)
* allow callers to add messages to log ([f683304](https://github.com/opicaud/pact-reference/commit/f683304cef9797bad897a2b8029d95bf22dcd494))
* allow callers to add metadata into resulting pact file ([0dc59d0](https://github.com/opicaud/pact-reference/commit/0dc59d07dbfa717fcebc760791930b6361564441))
* allow ffi bindings to set spec version ([6af4d3f](https://github.com/opicaud/pact-reference/commit/6af4d3f6ab4780c052e2d508df3c9e0c297e8f8c))
* allow FFI mockserver to log to a memory buffer ([eb19188](https://github.com/opicaud/pact-reference/commit/eb191887de28d0374c9f8dde48d8575147ea51a2))
* allow https scheme and ability to disable ssl verification ([6cec6c7](https://github.com/opicaud/pact-reference/commit/6cec6c7e16ea6dbad162115c6beec202e5586d5f))
* allow messages to have binary payloads ([5024e17](https://github.com/opicaud/pact-reference/commit/5024e1797092f8c0b092ba718a4b2fae9f7d5411))
* allow non deafult json content-type ([c1ccb62](https://github.com/opicaud/pact-reference/commit/c1ccb62faf3e7850e84f3fbc8764ec6f14b8cf56))
* allow sensible defaults for interaction transports ([ce11a61](https://github.com/opicaud/pact-reference/commit/ce11a61974f9112b98e2cc427c5ab9f45aabb996))
* allow set consumer version selectors ([7c561f2](https://github.com/opicaud/pact-reference/commit/7c561f2a63f52e52e72fcb5703a0f68e3739826c))
* allow set filter info ([41e69a2](https://github.com/opicaud/pact-reference/commit/41e69a225f9eba76bf9dbbf9a1a36164e74ddf64))
* Allow the directory pacts are written to to be overriden in consumer tests [#21](https://github.com/opicaud/pact-reference/issues/21) ([a5588dc](https://github.com/opicaud/pact-reference/commit/a5588dc426551525d20b28e3288379226ddde646))
* allow the interaction transport to be set in consumer tests ([24186e9](https://github.com/opicaud/pact-reference/commit/24186e900c69965cd47948af0ddf869fc89047ca))
* always execute provider_states callbacks even when no state is defined ([8216ec7](https://github.com/opicaud/pact-reference/commit/8216ec768d63445b819cffde65e47acc37f4dfcd))
* array contains working with Siren example ([7110ab1](https://github.com/opicaud/pact-reference/commit/7110ab116889157dd9c86ae25600800874d5d91a))
* basic array contains matcher working ([d79beb4](https://github.com/opicaud/pact-reference/commit/d79beb4fd834a8027b8d1c2dc56d1fdfe1ce4f94))
* being able to build pact_verifier_cli ([467a442](https://github.com/opicaud/pact-reference/commit/467a44233894d177c5df444d98873d3c920007f4))
* capture all the output from the verifier ([5f148cd](https://github.com/opicaud/pact-reference/commit/5f148cdd44b7307dc8f828275750d308a1944c0a))
* Capture all the results from the verification process ([bf15223](https://github.com/opicaud/pact-reference/commit/bf152233ceeb4d922f23ef3d5683c4afe8d0687f))
* cleaned up the error display a bit ([258cb96](https://github.com/opicaud/pact-reference/commit/258cb96aa3c673ca806c9b71ffe21ea4e71e5884))
* cleaned up the logging of request matches ([ce94df9](https://github.com/opicaud/pact-reference/commit/ce94df9609380a2b5600ef909d73016f49037985))
* cleanup date matching [#33](https://github.com/opicaud/pact-reference/issues/33) ([e72fb9e](https://github.com/opicaud/pact-reference/commit/e72fb9e8d18c823cd2ce00dbc45c07138d2e168b))
* consumer builders need to populate the interaction config from the plugins ([ee498dc](https://github.com/opicaud/pact-reference/commit/ee498dce73ab479949c791819e4a894ccf25f2e2))
* Copied pact_mockserver_ffi to pact_ffi ([084ab46](https://github.com/opicaud/pact-reference/commit/084ab46b08f92665d37557dfe7b42589a7c6e844))
* copied verfier_ffi crate to pact_ffi ([0d5ec68](https://github.com/opicaud/pact-reference/commit/0d5ec68a0d293ce2cd601ac4ef077a508e854ebe))
* create conan package for linking with C++ projects ([d357ad2](https://github.com/opicaud/pact-reference/commit/d357ad265e17fe364b6677854bc6ab707b589e7b))
* deal with verification output from plugins ([bc4f04d](https://github.com/opicaud/pact-reference/commit/bc4f04df20ac7edbdae706b7852920ae4d299fd7))
* Detect Pactbroker responses from the URL content [#199](https://github.com/opicaud/pact-reference/issues/199) ([1972a74](https://github.com/opicaud/pact-reference/commit/1972a74a3c223d2fee84bc643e090f7ac32a7783))
* do no write empty comments + added consumer version to metadata ([9fd9e65](https://github.com/opicaud/pact-reference/commit/9fd9e652b86fa1e58e2a2169799315fada3482c7))
* do not output an error if no_pacts_is_error is false and no pacts were found to verify [#213](https://github.com/opicaud/pact-reference/issues/213) ([43be2e8](http…
opicaud pushed a commit to opicaud/pact-reference that referenced this issue Sep 7, 2023
# pact-reference-rust-v1.0.0 (2023-09-07)

### Bug Fixes

* `match` arms have incompatible types ([b7f967e](https://github.com/opicaud/pact-reference/commit/b7f967e0d5f6b12530c185aa25e0b071ce46195c))
* access-control-allow-methods header was duplicated ([44e7414](https://github.com/opicaud/pact-reference/commit/44e741400669928190ec494ed84ae0bb28cca047))
* add a small delay after loading plugins via FFI to resolve a race condition ([213d145](https://github.com/opicaud/pact-reference/commit/213d1459c578662532e64ec7a1b1ce9af15cb676))
* add a small delay at the end of validation to allow async tasks to finish ([00a0046](https://github.com/opicaud/pact-reference/commit/00a0046121932cc96b4614dc910864dcd966b35b))
* add a test to reflect behaviour as per V4 spec ([1c45b63](https://github.com/opicaud/pact-reference/commit/1c45b63c02fbb059cc4014faf27f3ea43097793a))
* add callback timeout option for verifcation callbacks ([4afa86a](https://github.com/opicaud/pact-reference/commit/4afa86a785686d3bd5aa16c3c1fff17969613948))
* add cc_library ([78daf7a](https://github.com/opicaud/pact-reference/commit/78daf7a9024fd0a75db7c6605928a025aeebb944))
* Add Custom Header option not replacing already existing headers [#275](https://github.com/opicaud/pact-reference/issues/275) ([71b38a8](https://github.com/opicaud/pact-reference/commit/71b38a87258590a689d58f0b8b28a620121a139f))
* add final newline to verifier output (Jest will overwrite it with the test name) ([8c2152e](https://github.com/opicaud/pact-reference/commit/8c2152ea7a311d8d64d5b1ca96bebf718f0b0f52))
* add function to display binary data in a meaningful way ([2ca2fe4](https://github.com/opicaud/pact-reference/commit/2ca2fe495baea63879d57c573d7cd01e38619921))
* add matching implementations for Vec<u8> and &Vec<u8> ([ede663e](https://github.com/opicaud/pact-reference/commit/ede663ec6a94258e3b7ac7bcb14dc655c38886b4))
* add missing params to provider state change executor ([17682dc](https://github.com/opicaud/pact-reference/commit/17682dcca70558ba7e47cad2ff9f8b72d409c4bc))
* add missing provider-branch to verifier CLI ([0af1830](https://github.com/opicaud/pact-reference/commit/0af18303fbc2898c4edd3fd8b63879cea59cc91d))
* Add OSX to the conan package ([a13c0fc](https://github.com/opicaud/pact-reference/commit/a13c0fc87a0b0bb9819fa04d8be4a9746868c633))
* Add RefUnwindSafe trait bound to all Pact and Interaction trait methods so they can be used in an FFI context ([f8f0e77](https://github.com/opicaud/pact-reference/commit/f8f0e77365429277e62729a30925b7ea4215eba2))
* Add RefUnwindSafe trait bound to all Pact and Interaction uses ([261ecf4](https://github.com/opicaud/pact-reference/commit/261ecf472d468c881c7957fc5b06ad26648e09c3))
* add shallow_since to reproduce build ([8b6385a](https://github.com/opicaud/pact-reference/commit/8b6385a9ee284bdeef859450002c8e2180298bd6))
* add test for publish verification result issue [#231](https://github.com/opicaud/pact-reference/issues/231) ([33a784a](https://github.com/opicaud/pact-reference/commit/33a784a02b4de248ecb525c49afe4e0d949a9461))
* add tests for PUT and POST requests [#220](https://github.com/opicaud/pact-reference/issues/220) ([9fc5658](https://github.com/opicaud/pact-reference/commit/9fc56580390f8ed4c21a8bb0bbdfb99d0dc7dd24))
* add visibility public ([5eed9f7](https://github.com/opicaud/pact-reference/commit/5eed9f7399559850ff0dba2237bd99949b1d1f66))
* add zip file for binary test ([81eed06](https://github.com/opicaud/pact-reference/commit/81eed06215bc71e2688ab768034debcba68817d4))
* Allow dashes in path expressions for headers like Content-Type ([1184203](https://github.com/opicaud/pact-reference/commit/11842036c360487d5eb07f57c272b4d27196fd04))
* allow multiple consumer version selectors ([df23ba3](https://github.com/opicaud/pact-reference/commit/df23ba3de5a1838088d193a23d508d566a4639b0))
* allow the HTTP client to be optional in the provider state executor ([0e8bfad](https://github.com/opicaud/pact-reference/commit/0e8bfadb3b8e4e299ef6695560a1cf15b672c177))
* allow the pact builders to set the overwrite flag ([63be53b](https://github.com/opicaud/pact-reference/commit/63be53b2e84f2a53343bb2a85c319fd7b530b1e7))
* apply generators to the request in the same manor as the response ([ae95e0c](https://github.com/opicaud/pact-reference/commit/ae95e0cddf8d57403edd281a1eeb5969e041ce8a))
* arrayContains matcher JSON was missing match attribute ([c686ce0](https://github.com/opicaud/pact-reference/commit/c686ce04b0b12727b92a70efbb68f141837d3142))
* async message builder was not setting the pact plugin config correctly ([df67b72](https://github.com/opicaud/pact-reference/commit/df67b7232f0189afa4846cdb0886d35994320a87))
* broken message test ([a7e5778](https://github.com/opicaud/pact-reference/commit/a7e57786c80b3524b9c65a47c77cb3fbb9361d57))
* broken test for v2 path matcher ([5167cfb](https://github.com/opicaud/pact-reference/commit/5167cfbad380b6f732ac1a384981d4886260e366))
* broken tests after handling multiple header values ([7616ccb](https://github.com/opicaud/pact-reference/commit/7616ccbc68232cf5e0a323c0688d4c39c2df14fa))
* cbindgen fails in latest nightly rust ([fcfc7c1](https://github.com/opicaud/pact-reference/commit/fcfc7c1633276283df86c3896d808a89419aaea0))
* cbindgen fails in latest nightly rust ([61e4d69](https://github.com/opicaud/pact-reference/commit/61e4d69d0107f92884607d1b43f5576094bdfddd))
* cbindgen fails in latest nightly rust ([4b1ba4a](https://github.com/opicaud/pact-reference/commit/4b1ba4a26957e5c2f65b98cc08c4d8f46a3474fb))
* change filegroup ([7c5c2b6](https://github.com/opicaud/pact-reference/commit/7c5c2b678764dde65d1c9e30c837b2b052af226a))
* Charsets in headers should be compared ignoring case ([a151bcc](https://github.com/opicaud/pact-reference/commit/a151bcc50c548396792dca56ac71066fe1cd3443))
* check the size of the merged pact file [#54](https://github.com/opicaud/pact-reference/issues/54) ([bc044be](https://github.com/opicaud/pact-reference/commit/bc044be0c6b42017e85c1b092ac4a6e83f522a05))
* cleanup compiler warning ([beb1c03](https://github.com/opicaud/pact-reference/commit/beb1c031b8f09d355fc6fbc21916eac25307d98a))
* cleanup env var and set tests to not run in parallel on CI [#54](https://github.com/opicaud/pact-reference/issues/54) ([19e8ced](https://github.com/opicaud/pact-reference/commit/19e8cedfdaf0d4cbc5480c1351d46718cb2a6848))
* cleanup warnings and fixed test ([45fc1a0](https://github.com/opicaud/pact-reference/commit/45fc1a06478b442b3d12dc9ea67da06646f5f390))
* CLI was reporting incorrect pact specification version ([6343607](https://github.com/opicaud/pact-reference/commit/634360793c8cbc70abb5223584164924cde2f92a))
* clippy error ([e5b1f93](https://github.com/opicaud/pact-reference/commit/e5b1f93d96b6195b1f7aa89394c2ff49c9a55ead))
* clippy erros ([cbc7812](https://github.com/opicaud/pact-reference/commit/cbc7812aec0efc48ae303e8a3e9fdb8206df48a9))
* clippy violation - caused a compiler error ([728465d](https://github.com/opicaud/pact-reference/commit/728465d51a6cd2a377a5815308ee8e4516df8098))
* clippy violation: using `clone` on a double-reference ([e588bb2](https://github.com/opicaud/pact-reference/commit/e588bb297ccc1310cfb99f23ed771cfeea420171))
* **clippy:** using `clone` on a double-reference; this will copy the reference instead of cloning the inner type ([0a70d64](https://github.com/opicaud/pact-reference/commit/0a70d64df37100bc56e95fd019aade867ae7b607))
* **clippy:** you are implementing `Hash` explicitly but have derived `PartialEq` ([9852811](https://github.com/opicaud/pact-reference/commit/98528116c02eecb53ad4cf0c28680afa87e25bc1))
* comparing query paraneters where actual has less values but there is a type matcher ([0e3db9d](https://github.com/opicaud/pact-reference/commit/0e3db9dff5029e7f4fad4ad51520e46a3bd52fcf))
* conan packages for pact_ffi ([6d1ff31](https://github.com/opicaud/pact-reference/commit/6d1ff318cb3a8187e071bd94aaed467ba9f01847))
* Consumer DSL needs to increment plugin access to avoid plugin shutting down when mock server starts ([57a8ad7](https://github.com/opicaud/pact-reference/commit/57a8ad7d7d679cc5830fdd36cf5b02e465edc10d))
* consumer version selectors ([f4a7d52](https://github.com/opicaud/pact-reference/commit/f4a7d52b7441e5bc7cac0d6d55b7c662b6174287))
* **consumer:** request and response builders were using the first interaction from plugins, not the correct one ([f6d0c35](https://github.com/opicaud/pact-reference/commit/f6d0c35ecacd7fee4cfd0d10d833abb4590fcdc9))
* **consumer:** Setup multi-value headers correctly [#300](https://github.com/opicaud/pact-reference/issues/300) ([73033f5](https://github.com/opicaud/pact-reference/commit/73033f5490fc9c7a1317e94e227413861f260375))
* content type matcher was not being applied if content type was not octet_stream [#171](https://github.com/opicaud/pact-reference/issues/171) ([65d0514](https://github.com/opicaud/pact-reference/commit/65d05149cb720fa4b41f661f40e87b6d74dac9e4))
* correct build dependencies ([f2c7145](https://github.com/opicaud/pact-reference/commit/f2c7145057cc48a1198825421561e854787ba995))
* correct C examples after adding prefix ([5801e46](https://github.com/opicaud/pact-reference/commit/5801e46e3ae69c45ee221adff228a17c6aaf6c78))
* correct clippy error ([7baf074](https://github.com/opicaud/pact-reference/commit/7baf074bfd86944ad3377f90721340eae7eb2b92))
* correct equality error message to match compatibility-suite ([8a22a66](https://github.com/opicaud/pact-reference/commit/8a22a66a8159ac5de22ffe551be497dfb1b7de6f))
* correct headers attribute with multiple values might not be matched ([eef6b08](https://github.com/opicaud/pact-reference/commit/eef6b0860156b0d66f221a4c2ba990c994be7893))
* correct issue with headers/query with multiple values ([75c965e](https://github.com/opicaud/pact-reference/commit/75c965e476abc3b66bd3634c786d2bb7955be3dc))
* correct overflow of max value for random int generator [#39](https://github.com/opicaud/pact-reference/issues/39) ([91da912](https://github.com/opicaud/pact-reference/commit/91da912c2450e3a0ed661a79ea6836df83887c0a))
* correct pact merging to remove duplicates [#54](https://github.com/opicaud/pact-reference/issues/54) ([a660b87](https://github.com/opicaud/pact-reference/commit/a660b877a8ec48d48a379755a2dfeb91ae48f0de))
* correct parsing of JSON encoded bodies as per V4 spec ([ba24b0a](https://github.com/opicaud/pact-reference/commit/ba24b0a83ac8dac223c590a2529033907911b9b0))
* correct test after changes for compatibility suite ([61bd331](https://github.com/opicaud/pact-reference/commit/61bd331abbc446a3719b2e1d2a91669d85780381))
* Correct test after upgrading pact_models to 1.0.2 ([2cf5d8a](https://github.com/opicaud/pact-reference/commit/2cf5d8addc5a1fe139254bae53bab29a26873378))
* correct tests after upgrading pact_models ([37673fa](https://github.com/opicaud/pact-reference/commit/37673fac07d4cfb59fae42640f545240450cd3b2))
* correct the backing arary list for headers from FFI call ([9c84713](https://github.com/opicaud/pact-reference/commit/9c84713c57a021b156d7fce909d575be18d02342))
* correct the backing array list for query parameters from FFI call ([c93e364](https://github.com/opicaud/pact-reference/commit/c93e3640a170125c8e02f83bef90d472eaf8d560))
* Correct the format of matching errors on JSON ([f88adb2](https://github.com/opicaud/pact-reference/commit/f88adb2a18a9652d208123aafdfa1b581d2493fb))
* correct the matching logic with lists and eachkey/eachvalue matchers ([1a01d11](https://github.com/opicaud/pact-reference/commit/1a01d111e656d743a899545b0b693702275c2119))
* correct the pact_verifier_cli release scripts ([f9cf35f](https://github.com/opicaud/pact-reference/commit/f9cf35f3a315204ed8b6a8cf6a81933753872657))
* correct the release script ([adf1a97](https://github.com/opicaud/pact-reference/commit/adf1a978b31d23f9adc85643ef79c0d33fa9e092))
* correct the release scripts ([2057f2c](https://github.com/opicaud/pact-reference/commit/2057f2c16e7c16d700919f9f2618e4b22bfc9e22))
* Correct the use of matching rules on repeated header values ([95753e2](https://github.com/opicaud/pact-reference/commit/95753e291312503480c408cbc939a5bd78d8ef11))
* Correct the use of matching rules on repeated query parameters ([6a7e504](https://github.com/opicaud/pact-reference/commit/6a7e504e9347a91aa508aeddbc87f46423e5902b))
* correct the version in pact_verifier_cli ([f9ecd89](https://github.com/opicaud/pact-reference/commit/f9ecd8907945d4b95f0e6fd71c5bb5cc701e018c))
* correct the version of the pact_consumer crate ([2b39873](https://github.com/opicaud/pact-reference/commit/2b39873d9b4ecaba2de6bd4f7e334beda9540458))
* correct the windows lib name in conan package ([4287f0e](https://github.com/opicaud/pact-reference/commit/4287f0ebe179df1acab10c90186ca2acbb8563f0))
* correct the windows lib name in conan package ([c1015d5](https://github.com/opicaud/pact-reference/commit/c1015d5c488f6f2886643a701e54384451b3f904))
* Correct verifier error logging and handling optional JSON fields ([8b0ecd8](https://github.com/opicaud/pact-reference/commit/8b0ecd8b6606570b00ac1eba0ad5aeecd6b593de))
* correct version ([637e814](https://github.com/opicaud/pact-reference/commit/637e814131dd09f77d97ab2bb3b3a79543b59ce9))
* corrected some spelling ([b5c7842](https://github.com/opicaud/pact-reference/commit/b5c7842fefd250240b5c95a2bddbe3ad82b162ea))
* corrected the docker build for the mock server cli [#14](https://github.com/opicaud/pact-reference/issues/14) ([a45d5f8](https://github.com/opicaud/pact-reference/commit/a45d5f86d55ec6e2ffa94b352cc983d418899c5a))
* corrected the docker build for the verifier cli [#14](https://github.com/opicaud/pact-reference/issues/14) ([9d24b7e](https://github.com/opicaud/pact-reference/commit/9d24b7e021dbc2b108e7cda7eda8f40379625abf))
* corrected the release scripts to check for a version parameter ([386ab52](https://github.com/opicaud/pact-reference/commit/386ab52b5ff8915d8733645ff0b82c27b06ba0c4))
* correctly assemble UTF-8 percent encoded query parameters ([7f054e8](https://github.com/opicaud/pact-reference/commit/7f054e844cfe8940a4e698c0d29571ef78755cbc))
* Correctly deal with headers when the value is a string ([97684ad](https://github.com/opicaud/pact-reference/commit/97684ade0d57ff49dc0628a180136235279cdda3))
* **cors:** source allowed origin from origin header, add credentials ([86d32dd](https://github.com/opicaud/pact-reference/commit/86d32ddf09df4c127dba7e2b2e46959ef5f870e6))
* date and time matchers with JSON ([2920364](https://github.com/opicaud/pact-reference/commit/2920364b4e97ffceb68829d6f1bf41a47a9381d4))
* date/time matchers fallback to the old key ([61ab50f](https://github.com/opicaud/pact-reference/commit/61ab50f4d4e859452f2ea24ac0f914ccd915ab9b))
* Date/Time matchers should fall back to ISO 8601 formats if no format string is provided ([ac885b8](https://github.com/opicaud/pact-reference/commit/ac885b898598ad189185b946e58c3d335bbd03ff))
* detect common text types when comparing content type ([a0c9d20](https://github.com/opicaud/pact-reference/commit/a0c9d2030750e2facb716a2a21143d3c861c9996))
* display the error message when the verification can not be run due to an error ([bfa0437](https://github.com/opicaud/pact-reference/commit/bfa0437022a6b0c9ddb4c5a4d736254e13d220f2))
* do not auto-generate the interaction key if not set [#264](https://github.com/opicaud/pact-reference/issues/264) ([cf55b3c](https://github.com/opicaud/pact-reference/commit/cf55b3c59b8d571850ba54cc3ea7f1c7938ab0cf))
* do not split header values for headers like Date, Last-Modified, etc. [#259](https://github.com/opicaud/pact-reference/issues/259) ([b479f23](https://github.com/opicaud/pact-reference/commit/b479f2338fcf5a37dcd5394ed836c99a5545c44f))
* doc tests with Into trait fail to link with Rust beta 1.27.0 ([1e0c65b](https://github.com/opicaud/pact-reference/commit/1e0c65bfc0c51dd766646a87f6ca2f3f026fbea4))
* docker build now requires libclang system library ([9f3ad74](https://github.com/opicaud/pact-reference/commit/9f3ad748db76bf19b92e92978db25131b5876148))
* docker file needs to be able to build Oniguruma lib ([8a0c5c2](https://github.com/opicaud/pact-reference/commit/8a0c5c259157a7523b5e2a325e49a7edca5e99de))
* docker release script ([0dd10e6](https://github.com/opicaud/pact-reference/commit/0dd10e6476edd5407173e4f695b59aa2006aa5c0))
* docker release script ([5b22076](https://github.com/opicaud/pact-reference/commit/5b22076817438d8a62f8370f5933bc7124a4304f))
* DocPath join needs to detect numeric values ([7b2e853](https://github.com/opicaud/pact-reference/commit/7b2e85380f825f0f87a258f38361d4e79a1a5870))
* Docpath join was escaping * ([a3f7471](https://github.com/opicaud/pact-reference/commit/a3f747115a4721180928af3a2c9cb7565db9f948))
* don't clone a double reference (clippy error) ([d8ceb74](https://github.com/opicaud/pact-reference/commit/d8ceb7463ede069ab82cfe3a873856d6382f0b11))
* don't unwrap a result when generating random string from regex ([9389c0a](https://github.com/opicaud/pact-reference/commit/9389c0a1af723e2619bf0bda1c11bbe6c50014d1))
* drop(from_raw(ptr))` if you intend to drop the `CString` ([1cafd00](https://github.com/opicaud/pact-reference/commit/1cafd00a0d8ad441cd5b3aaf8de5ae91c1e772f4))
* Each key matching was not implemented correctly ([28f562e](https://github.com/opicaud/pact-reference/commit/28f562e298ff203c665b3a45ac07f53add7ea652))
* EachValue was outputting the wrong JSON ([48a6be5](https://github.com/opicaud/pact-reference/commit/48a6be5f28552ebc164bb87538c47f00614cb19f))
* error caused an internal mutex to be poisoned ([5251fcf](https://github.com/opicaud/pact-reference/commit/5251fcf5c1df854742e90eafde1374930fe03e0e))
* exclude headers from the pact conflict check ([6f70f30](https://github.com/opicaud/pact-reference/commit/6f70f30a4d4b5e70f42f4b3630fc1f0dddf0b7cf))
* expected opaque type, found enum `Result` ([fe22ae3](https://github.com/opicaud/pact-reference/commit/fe22ae3aba36d3c0c332ad345d81534bd0ddf3ff))
* failing pact_consumer build ([13976f5](https://github.com/opicaud/pact-reference/commit/13976f5285af17d324f7d6d816a2707a727278d8))
* failing test after changing  message_with_contents function signature ([78c20d6](https://github.com/opicaud/pact-reference/commit/78c20d6ae90af41c548593668dd37e76236ee9f2))
* failing tests [#116](https://github.com/opicaud/pact-reference/issues/116) ([b1a4c8c](https://github.com/opicaud/pact-reference/commit/b1a4c8cb2cc72b6b7d195e6e486e2129955d759e))
* feat deps pattern to use via external libpact_ffi.a ([85db020](https://github.com/opicaud/pact-reference/commit/85db020c88cef8351c8913b65231796ed5d529f8))
* FFI always detects + stores JSON bodies as plain text ([aff4d30](https://github.com/opicaud/pact-reference/commit/aff4d301c7f674a2131f79fef3e3cf43ee7dc0ac))
* FFI datetime matcher was using incorrect field ([ddacb5d](https://github.com/opicaud/pact-reference/commit/ddacb5d77fdb18b1a6fd13d410f02c7acfa603cc))
* FFI function was exposing a struct from the models crate ([8b075d3](https://github.com/opicaud/pact-reference/commit/8b075d3867113b900fa6d781bee41c9cd6780138))
* FFI mismatch json should have the actual values as UTF-8 string not bytes [#64](https://github.com/opicaud/pact-reference/issues/64) ([a45d0c3](https://github.com/opicaud/pact-reference/commit/a45d0c3b1b49ce9ad3cee6246b41d4b9c8114c7f))
* ffi.pactffi_logger_attach_sink causes seg fault if log directory doesn't exist [#226](https://github.com/opicaud/pact-reference/issues/226) ([9dad5d2](https://github.com/opicaud/pact-reference/commit/9dad5d2a0304bf28c30e05f10f1ce6ef703d8c63))
* **FFI:** Allow pactffi_with_multipart_file to append parts to an existing multipart body [#314](https://github.com/opicaud/pact-reference/issues/314) ([bae6b5a](https://github.com/opicaud/pact-reference/commit/bae6b5a9057990d8dd6bb80d019e23f8a9d076f1))
* **FFI:** broken build after upgrading pact_models ([4f366ac](https://github.com/opicaud/pact-reference/commit/4f366ac5e5b55d967b4497bb9e2d940a4a384adb))
* **FFI:** Check for the intermediate JSON format when setting the body contents with XML [#305](https://github.com/opicaud/pact-reference/issues/305) ([e6484f3](https://github.com/opicaud/pact-reference/commit/e6484f391b06ea3b9d307bbaba1d074bb617890b))
* **ffi:** correct race condition in pactffi_using_plugin ([d41e244](https://github.com/opicaud/pact-reference/commit/d41e2440a8d5011e51a90eeb44dcaa7dbe448b0d))
* **FFI:** Deal with multi-value headers correctly [#300](https://github.com/opicaud/pact-reference/issues/300) ([bfd731b](https://github.com/opicaud/pact-reference/commit/bfd731b8eefb3d1bb5a49c676db9136f7b47b279))
* **FFI:** FFI passes matching rules and generators for paths etc. with a path of $ ([b6bba54](https://github.com/opicaud/pact-reference/commit/b6bba5403f2f5b785f89bd46ab4d4a7522299f03))
* **FFI:** fix matching rule for paths [#205](https://github.com/opicaud/pact-reference/issues/205) ([e95d701](https://github.com/opicaud/pact-reference/commit/e95d701da50984b2fdb578405a39836a9e479f9e))
* **FFI:** fix matching rule for paths [#205](https://github.com/opicaud/pact-reference/issues/205) ([b0fdbb6](https://github.com/opicaud/pact-reference/commit/b0fdbb6eef339fa345c4ad1990e9003f00dfdf74))
* **FFI:** Fix test failing on CI because the plugins dir does not exist [#262](https://github.com/opicaud/pact-reference/issues/262) ([b2d7ec3](https://github.com/opicaud/pact-reference/commit/b2d7ec3a591c9285188405675a6b3381f9be28ba))
* **FFI:** Fix test failing on CI on Alpine [#262](https://github.com/opicaud/pact-reference/issues/262) ([2d43628](https://github.com/opicaud/pact-reference/commit/2d4362889d5dba8c8050c39a2765d8162d5aa91c))
* **FFI:** fixed race condition with Pact handle ids ([8520760](https://github.com/opicaud/pact-reference/commit/852076025500a0347dfe1127c6ec27f1f7d3dd6e))
* **FFI:** Guard against header names being passed in different case [#305](https://github.com/opicaud/pact-reference/issues/305) ([66648b4](https://github.com/opicaud/pact-reference/commit/66648b4ca03f33f57c1f57fa7085c1400035bc49))
* **FFI:** handle headers with multiple values correctly [#205](https://github.com/opicaud/pact-reference/issues/205) ([f634fa9](https://github.com/opicaud/pact-reference/commit/f634fa91dace0daa3163aa9600f4055039915490))
* **FFI:** handle query parameters with multiple values correctly [#205](https://github.com/opicaud/pact-reference/issues/205) ([52b7009](https://github.com/opicaud/pact-reference/commit/52b7009763e55d00b42cbc8fa5f62796d464d062))
* **FFI:** log and capture the error when the verification fails [#262](https://github.com/opicaud/pact-reference/issues/262) ([96ac10c](https://github.com/opicaud/pact-reference/commit/96ac10c10d39e508451882902b2e0700f8a44648))
* **FFI:** Message metadata was not being passed on to the mock server ([a56bc05](https://github.com/opicaud/pact-reference/commit/a56bc05601ea439acc4840e1fed32b0e50fcf563))
* **ffi:** OSX CMake file had the wring filename ([1307dde](https://github.com/opicaud/pact-reference/commit/1307dde047635cb18533f463e9383b322927a11b))
* **ffi:** pactffi_create_mock_server_for_transport was returning the wrong status for invalid address ([a78f2a1](https://github.com/opicaud/pact-reference/commit/a78f2a1d74491b0d7269204bbdbae4d14f90f8f5))
* **FFI:** pactffi_with_binary_file was incorrectly setting the response content type to application/octet-stream [#171](https://github.com/opicaud/pact-reference/issues/171) ([3c5c45d](https://github.com/opicaud/pact-reference/commit/3c5c45d4e6f1b6f7f8a8e29787fb12074eeb53e1))
* **ffi:** plugin data was not merged into the Pact file correctly ([797d1cc](https://github.com/opicaud/pact-reference/commit/797d1cceb5e703c0112766e2db690167c26c5d98))
* **FFI:** Replaced the matching rule union type with 3 FFI functions which should support Go better ([7756d30](https://github.com/opicaud/pact-reference/commit/7756d305f03577ae28fe33943968e397d0b8758b))
* **ffi:** resources were not freed correctly when the mock server is provided by a plugin ([873f0c9](https://github.com/opicaud/pact-reference/commit/873f0c938b5af33b4fa2163c7af0368f5f88530b))
* **FFI:** Stupid Windows [#314](https://github.com/opicaud/pact-reference/issues/314) ([37fa901](https://github.com/opicaud/pact-reference/commit/37fa901c454550ee358c06c47b2813972ed629ce))
* **FFI:** update the example in docs to use new function [#205](https://github.com/opicaud/pact-reference/issues/205) ([f0cde4e](https://github.com/opicaud/pact-reference/commit/f0cde4e949a9c9b12a617a524d7e4e1329416246))
* **FFI:** use a multi-threaded reactor for FFI setup_contents call to plugins ([ec2ed51](https://github.com/opicaud/pact-reference/commit/ec2ed51dc2f45c4a1dfeb75784b3d357f72c14ed))
* **FFI:** Use a star for the path with values matcher [#216](https://github.com/opicaud/pact-reference/issues/216) ([b8be05c](https://github.com/opicaud/pact-reference/commit/b8be05c1c4363391379997b692e48438df38e6f1))
* **FFI:** When appending parts to an existing multipart body, matching rules should still be configured for the new part [#314](https://github.com/opicaud/pact-reference/issues/314) ([7fc7bbc](https://github.com/opicaud/pact-reference/commit/7fc7bbc7340111e661713887e29daff2bdc454b6))
* fix missing last tag ([36f7e47](https://github.com/opicaud/pact-reference/commit/36f7e477761bea6eda1945e08b3d946e65c7e4bd))
* fix the build after refactoring the pact write function ([2fb0c6e](https://github.com/opicaud/pact-reference/commit/2fb0c6e3005872636f45677e1824d092e548727b))
* for failing integration test ([2679653](https://github.com/opicaud/pact-reference/commit/26796531b54baac1de99425644d37e4c3316acaf))
* generators in process_object ([63ab0d2](https://github.com/opicaud/pact-reference/commit/63ab0d2d846378be5ceb07c3449f4a6aa8252a8a))
* generators to_json was only writing the first one for bodies, headers and queries ([cbb6e20](https://github.com/opicaud/pact-reference/commit/cbb6e209df045599f2ced277a77788d64081d5ea))
* get verify_provider_async to wait on the metric call ([8056d7e](https://github.com/opicaud/pact-reference/commit/8056d7e96ca4dfd6db157a06699a5aa355752b48))
* global options no longer incorrectly display a warning about being provided twice [#27](https://github.com/opicaud/pact-reference/issues/27) ([e5af1b0](https://github.com/opicaud/pact-reference/commit/e5af1b077a6479ef9a1d0cb961f1bedb9576fcc7))
* handle path expressions that start with an underscore ([433d9c5](https://github.com/opicaud/pact-reference/commit/433d9c5941ddddb117e96c3c54272a9b4bbb9e99))
* hanlde validation errors from Pactbroker correctly [#273](https://github.com/opicaud/pact-reference/issues/273) ([59946c3](https://github.com/opicaud/pact-reference/commit/59946c3f0b5c77822a930eb9f628d8c1aa29d4c6))
* Header matching rules should be looked up in a case-insenstive way ([445ea1e](https://github.com/opicaud/pact-reference/commit/445ea1ee11a0b1fa55e6557759d21874cc9ccefc))
* Header matching rules with an index were not being applied [#238](https://github.com/opicaud/pact-reference/issues/238) ([2c8467e](https://github.com/opicaud/pact-reference/commit/2c8467ed19ed224b89bdfb51253953049a8ae0f2))
* header matching was incorrectly stripping whitespace around commas [#259](https://github.com/opicaud/pact-reference/issues/259) ([c559bc3](https://github.com/opicaud/pact-reference/commit/c559bc3d6b195841129841d826b4611a01826927))
* http_consumer_feature_test on linux ([52768a3](https://github.com/opicaud/pact-reference/commit/52768a339ffa78fa9311b8664565162c57fb2b34))
* ignore flakey test ([6ff9c33](https://github.com/opicaud/pact-reference/commit/6ff9c33c61df43020a9147dedee9a45fc5cf72be))
* implement display for Interaction and Message ([831ba3d](https://github.com/opicaud/pact-reference/commit/831ba3d1b90ae1cf7852106f0fe89db0f1ff39ca))
* improve the error message when a merge conflict occurs ([6af29ce](https://github.com/opicaud/pact-reference/commit/6af29ce86db7d00f679fc1c079d51963a25afa2c))
* in callback executors, pass self by value to avoid lifetime issues ([a27ce14](https://github.com/opicaud/pact-reference/commit/a27ce14e410e971dc636c08df765a0f46174c6e3))
* include test results for successful interactions when publishing verification results [#92](https://github.com/opicaud/pact-reference/issues/92) ([74bd53f](https://github.com/opicaud/pact-reference/commit/74bd53fdef37396e30998671688629aacfe5413b))
* incorrectly handling provider state parameters from FFI call ([3a12b6f](https://github.com/opicaud/pact-reference/commit/3a12b6feda35f654d4f3d1a479eaae15715e33bf))
* Interaction builder was not copying plugin config data to the Pact metadata ([e91ad62](https://github.com/opicaud/pact-reference/commit/e91ad6221454d894f77eaf1cad745364a77adc10))
* intermediate date/time matcher JSON should use the format attribute ([f94f25a](https://github.com/opicaud/pact-reference/commit/f94f25a41405c18c46dec324ce7df23d9ff38cbd))
* introduce GeneratorTestMode and restrict provider state generator to the provider side ([13ce2f2](https://github.com/opicaud/pact-reference/commit/13ce2f21a830cdf1aeb0c880fc8a45f0a117cea5))
* jsdom does not support access-control-allow-headers: * for CORS pre-flight responses ([326d02d](https://github.com/opicaud/pact-reference/commit/326d02d181e336f8ad515d85e55c3651e17cc974))
* Keep the original value when injecting from a provider state value so data type is retained [#116](https://github.com/opicaud/pact-reference/issues/116) ([e21db69](https://github.com/opicaud/pact-reference/commit/e21db69997f99270c515d1a23fbaa54f6b5d75b5))
* linux verifier ffi shasum path was incorrect. Fixes [#114](https://github.com/opicaud/pact-reference/issues/114) ([12e5170](https://github.com/opicaud/pact-reference/commit/12e51704360c3d323bd030357ce22a6bb88c4790))
* lock the pact crate versions so that updates do not break CLI install [#189](https://github.com/opicaud/pact-reference/issues/189) ([8d58ea3](https://github.com/opicaud/pact-reference/commit/8d58ea349b9a1363ff994c786b64429d05213299))
* log crate version must be fixed across all crates (including plugin driver) ([c208964](https://github.com/opicaud/pact-reference/commit/c20896454047e8e8e69795c0854ee9e6332dc945))
* Macos on conan package ([a0d701e](https://github.com/opicaud/pact-reference/commit/a0d701ee0e83ad785002cb59a46e13e900729a04))
* make application/xml equivalent to text/xml ([6995298](https://github.com/opicaud/pact-reference/commit/6995298e241bf193d906ec2474dee960b2765d81))
* make HAL client fetch and fetch link functions support brokers hosted with context paths [#220](https://github.com/opicaud/pact-reference/issues/220) ([77a7c8b](https://github.com/opicaud/pact-reference/commit/77a7c8ba4d4c60c95081bab040448050ea626873))
* make sure metadata entries are correctly encoded when downgrading a pact ([a859d0e](https://github.com/opicaud/pact-reference/commit/a859d0e1ac53952af7f18913ba59c854a69240e8))
* Make using_plugin consume self so that the builder will have the same lifetime as the returned async one ([6aa389c](https://github.com/opicaud/pact-reference/commit/6aa389c9d0c6f2dcd800e91e31f9ac6c2f875de4))
* map matching logic was not including the EachValue matcher ([cd6fe27](https://github.com/opicaud/pact-reference/commit/cd6fe27a3959e43b867254f673207c48ea9b1349))
* matcher_from_integration_json in mockserver/bodies.rs doesn't support all MatchingRules [#247](https://github.com/opicaud/pact-reference/issues/247) ([3760c2b](https://github.com/opicaud/pact-reference/commit/3760c2b3d1bf20be5f1ace96573b1452e28b56f7))
* matchers in Pact file can have a different order on OSX ([c8ad6d4](https://github.com/opicaud/pact-reference/commit/c8ad6d49a916c5c1232c485a24cfa31b247acba0))
* matching binary data was broken after refactor ([d24cfe3](https://github.com/opicaud/pact-reference/commit/d24cfe30e0bca6bea212589bbca2c5c4a5df2154))
* matching definition parser was incorrectly merging multiple definitions ([e1e0b43](https://github.com/opicaud/pact-reference/commit/e1e0b43ecca23a261438268746ef44015d938087))
* Matching rule parser was not handling decimal values correctly ([74a36a1](https://github.com/opicaud/pact-reference/commit/74a36a1b768908c3b76a44d8a3e36ea1ba41ab34))
* Matching rules are not being applied correctly to message metadata [#245](https://github.com/opicaud/pact-reference/issues/245) ([4409441](https://github.com/opicaud/pact-reference/commit/4409441b21b8f6a3edf8029ba9b49ce640871dcb))
* message pact feature test ([cf679bd](https://github.com/opicaud/pact-reference/commit/cf679bdd3996a41e842cedefd1194c52264cabfa))
* message pact feature test ([84d79a1](https://github.com/opicaud/pact-reference/commit/84d79a10afa86d50097f32adc70b4d33b2e90b74))
* message pact needed matchingrules + generators ([59e23f4](https://github.com/opicaud/pact-reference/commit/59e23f416932638708d20237d6db5fec394738f1))
* Message pact was not loading the IDs from the Pact Broker [#239](https://github.com/opicaud/pact-reference/issues/239) ([64d500b](https://github.com/opicaud/pact-reference/commit/64d500b0c7f47141a39fea36cd989bf15fd99a04))
* message_reify was returning a pointer to a Rust string ([ad0a72e](https://github.com/opicaud/pact-reference/commit/ad0a72ee9cfa7fab8f58bfb29527a59f325cfad0))
* Metadata was missing from the generator categories ([f84adc7](https://github.com/opicaud/pact-reference/commit/f84adc7ad614d548305c27c1d0ade0ae627481dc))
* **metrics:** swap uid for cid ([25d8cd9](https://github.com/opicaud/pact-reference/commit/25d8cd9b516ce619ac3a4e7354b3c7e174eec734))
* min/max type matchers must not apply the limits when cascading ([8bcd1c7](https://github.com/opicaud/pact-reference/commit/8bcd1c7ecad5a1792b6c446a90806be902c11ca2))
* min/max type matchers were not being applied to query parameters ([4e9d837](https://github.com/opicaud/pact-reference/commit/4e9d837430051609da15f0930b44a725f5190673))
* missing $ in macro ([86f8140](https://github.com/opicaud/pact-reference/commit/86f81408bb2d0f876cab73631dfe3f084abaabcf))
* missing import ([6076485](https://github.com/opicaud/pact-reference/commit/607648555e1bb7ba278a55e7d1e32b2a7a41747d))
* Mock server errors were not being printed if the test was panicking due to a failed assertion [#282](https://github.com/opicaud/pact-reference/issues/282) ([4fbd45c](https://github.com/opicaud/pact-reference/commit/4fbd45cc8b9cf8cb4e1b628dbba88d3af5cb73da))
* mock server matching requests with headers with multiple values ([d85f28c](https://github.com/opicaud/pact-reference/commit/d85f28c05cca9fa2548e57c765367c17ff103248))
* mock servers were shutting plugins down twice when shutting down ([30dad6d](https://github.com/opicaud/pact-reference/commit/30dad6d40633dac1bfc1a7f504f7ea6cb48e45ea))
* MockServerURL generator was fetching the incorrect field from the test context ([743b182](https://github.com/opicaud/pact-reference/commit/743b18231dcafc37635ca484a7156306969cf84b))
* MockServerURL generator was using the incorrect field ([56ce20a](https://github.com/opicaud/pact-reference/commit/56ce20a03a33f16f853b5d86e3a8e41ce07bf4af))
* no need to wrap the Pact for a mock server in a mutex (mock server is already behind a mutex) as this can cause deadlocks [#274](https://github.com/opicaud/pact-reference/issues/274) ([e58aa91](https://github.com/opicaud/pact-reference/commit/e58aa9176ed9a89927058668fe6ea69c84268430))
* notEmpty matching rule defintion should be applied to any primitive value ([407cc2e](https://github.com/opicaud/pact-reference/commit/407cc2e5208743a151b1f6e99d3c649b89e49654))
* ok so maybe let's see if this works on linux 🤷 ([eb4b328](https://github.com/opicaud/pact-reference/commit/eb4b328ed43cf0d9dfd50316806248a22d2b40fe))
* Only print errors in the CLI to STDERR [#28](https://github.com/opicaud/pact-reference/issues/28) ([3c33294](https://github.com/opicaud/pact-reference/commit/3c33294887f109f1944c7793a56cd383d2f8b6f3))
* pact specification key in the metadata should be camelcase [#3](https://github.com/opicaud/pact-reference/issues/3) ([b68c893](https://github.com/opicaud/pact-reference/commit/b68c8937e59a8f836e485e573228ae11a1f74060))
* pact_consumer should be a dev dependency ([0c5d6c2](https://github.com/opicaud/pact-reference/commit/0c5d6c27fa8bf1b3c08d2a63c172dfd00897bdb9))
* PACT_DO_NOT_TRACK should be upper case ([43754e6](https://github.com/opicaud/pact-reference/commit/43754e6df296709ccc5be1f5645ad44bfada4bc7))
* **pact_matching:** Correct the mismatch error with content-type header when there are multiple values [#305](https://github.com/opicaud/pact-reference/issues/305) ([5b91796](https://github.com/opicaud/pact-reference/commit/5b91796be035b0814cbee525323a44c5fda2dcab))
* **pact_matching:** EachValue matcher was applying the associated rule to the list and not the items in the list ([af498c7](https://github.com/opicaud/pact-reference/commit/af498c73fc2a76a0be1c9322a6e732d696a7d689))
* **pact_matching:** EachValue matcher was not applying the associated matching rules correctly [#299](https://github.com/opicaud/pact-reference/issues/299) ([4f448b1](https://github.com/opicaud/pact-reference/commit/4f448b1f668fb31f8c91fed929cb10d32135c3cd))
* **pact_matching:** Generators should add headers and query parameters if the key does not exist ([78bc8e2](https://github.com/opicaud/pact-reference/commit/78bc8e23b43930811aa3724537d73826654f80e2))
* **pact_matching:** Number of keys were still be compared when an EachKeys matcher is defined [#301](https://github.com/opicaud/pact-reference/issues/301) ([0459d40](https://github.com/opicaud/pact-reference/commit/0459d40c72cbc655ff1829a300e63e000035f08a))
* **pact_matching:** Support generators for V3 Message interactions ([1299a62](https://github.com/opicaud/pact-reference/commit/1299a622201d41ccb9965be5165a52cb93b38d02))
* **pact_models:** DocPath.parent was creating incorrect paths when the parent is a * ([27bc02c](https://github.com/opicaud/pact-reference/commit/27bc02c9d19e430371f6440852ec81e5c530b87c))
* **pact_models:** Implement add_header for V3 Message ([7e10838](https://github.com/opicaud/pact-reference/commit/7e108383c358e643eea18115393e9e3c4cc5f7d8))
* **pact_models:** MatchingRule::from_json shoud support integration format ([4b4e710](https://github.com/opicaud/pact-reference/commit/4b4e71059d2cf0fb9fb9ea2a485e5bf69b145d24))
* **pact_models:** MatchingRule::from_json shoud support integration format ([b7b7b9c](https://github.com/opicaud/pact-reference/commit/b7b7b9c003bb7ff8ec8f0f080908d79ebdde0882))
* pact_verifier_cli needs to use Tokio 0.2 ([2ebeef9](https://github.com/opicaud/pact-reference/commit/2ebeef9a1e2ec47e05f56f98bf72c6e059715d0d))
* pact_verifier_cli was printing the version from the FFI crate ([e8d6d84](https://github.com/opicaud/pact-reference/commit/e8d6d84414e266d0557d6aee4f7260b70a2caf18))
* **pact_verifier_cli:** log entries were being duplicated ([05e6399](https://github.com/opicaud/pact-reference/commit/05e6399d4568b312b8a65cc80e20cc16fd6d01e8))
* **pact_verifier_cli:** stop using deprecated clap::parser::matches::arg_matches::ArgMatches::values_of_lossy ([b626002](https://github.com/opicaud/pact-reference/commit/b626002c1aebecd8a7697d17fd3faf08148dfc13))
* pact_verifier_ffi release scripts ([6daae85](https://github.com/opicaud/pact-reference/commit/6daae85947f85aef9eec0d4e8dc1db2364a73218))
* **pact_verifier:** Fix missing PATCH version in plugin's version ([6df8ce8](https://github.com/opicaud/pact-reference/commit/6df8ce825239b120f26ed949f40975d0527f62f9))
* **pact-consumer:** Some code for the datetime feature was not being excluded when the feature was turned off [#290](https://github.com/opicaud/pact-reference/issues/290) ([e08119a](https://github.com/opicaud/pact-reference/commit/e08119abf3fbcb2bf732b7bb98e8ef0e310046b3))
* **pact-ffi:** intermediate JSON - add test for JSON with decimal matcher [#179](https://github.com/opicaud/pact-reference/issues/179) ([7688908](https://github.com/opicaud/pact-reference/commit/76889087a5292fd6d131486214a9447d8dace112))
* **pact-ffi:** intermediate JSON - type matcher paths were being incorrectly allocated to children [#179](https://github.com/opicaud/pact-reference/issues/179) ([b10453c](https://github.com/opicaud/pact-reference/commit/b10453c3dec92b95b5e8c201de19385dddc4a382))
* PactBuilder drop handler was cauing plugins to be shutdown twice ([7bd44a0](https://github.com/opicaud/pact-reference/commit/7bd44a0d6d1c6d2ea9f5b807629915b60c6b7a94))
* pacts for verification unmarshal fails if 'pending' attr is not returned in response ([d481bc1](https://github.com/opicaud/pact-reference/commit/d481bc10d379bc68128cce340468fd01ee3d0c5b))
* panicked at 'called  on a  value' when FFI LevelFilter == Off [#226](https://github.com/opicaud/pact-reference/issues/226) ([d976db0](https://github.com/opicaud/pact-reference/commit/d976db0c3d413fceee6b2cb14353793d9f6c62b0))
* parse the V3 keys as path expressions for query and header matchers ([948e620](https://github.com/opicaud/pact-reference/commit/948e620ca8f14fcb6e4b05cb585076a79aa0fe0a))
* Pass any custom header values on to the plugin verification call ([c368c65](https://github.com/opicaud/pact-reference/commit/c368c651c588db98e8b44e8f828ac0f6eb296ffd))
* path in release scripts ([2f29760](https://github.com/opicaud/pact-reference/commit/2f2976088e468520ee810c012468d13a8a4c35cd))
* pinning version of webmachine until reqwest is updated ([773b4b1](https://github.com/opicaud/pact-reference/commit/773b4b1076f018c14444fd56028064bb404f67c5))
* PluginData configuration is optional ([c0bdd35](https://github.com/opicaud/pact-reference/commit/c0bdd359f792a070e2099256c84f603a3781125d))
* ported matching logic fixes from Pact-JVM ([6633575](https://github.com/opicaud/pact-reference/commit/6633575c148931bdb971ba2741cb9487483066c3))
* provider request timeout should be > 16bit integers. Fixes https://github.com/pact-foundation/pact-js/issues/761 ([0ef3fb9](https://github.com/opicaud/pact-reference/commit/0ef3fb981a53f1858f875fc29ef561ceed1b0c26))
* provider state handlers must be synchronous so they are executed for the actual request ([126b463](https://github.com/opicaud/pact-reference/commit/126b4635613820bcdc827f605a63b72fcc98d7dd))
* Provider state teardown calls were not being invoked when there are no provider states ([693418f](https://github.com/opicaud/pact-reference/commit/693418fb7590649217d78a93b321ee679fe311aa))
* publishing provider branch was broken when invoked via a webhook call ([7f51bdc](https://github.com/opicaud/pact-reference/commit/7f51bdc6ddb64478e5b1e10a618a2d35b64ef430))
* race condition when shutting down plugin via FFI ([e4a445b](https://github.com/opicaud/pact-reference/commit/e4a445ba15e71f7332cf1f411b6b744c40e3c847))
* random decimal generator now includes a decimal point in the generated values ([042bed0](https://github.com/opicaud/pact-reference/commit/042bed0aeb136d2d26e8cd47e861c64ae324f72e))
* Regex matcher was incorrectly being applied to lists ([d5df06a](https://github.com/opicaud/pact-reference/commit/d5df06acd023e99f55a965381444d2d480c5e45b))
* release script ([0fe57d9](https://github.com/opicaud/pact-reference/commit/0fe57d9ca24bcf683f0e74a3cbb59b631e8615c6))
* remove duplicated line ([a7c674a](https://github.com/opicaud/pact-reference/commit/a7c674ab0985cddc73947e2b75dad65856377a08))
* remove generator from crates_repository ([55e16b4](https://github.com/opicaud/pact-reference/commit/55e16b41aa99999467448b5c25c20fa6331e319c))
* repeat the test 3 times [#54](https://github.com/opicaud/pact-reference/issues/54) ([d4dd39f](https://github.com/opicaud/pact-reference/commit/d4dd39f6f305d3dafb4ef321bbdf56701cb4324b))
* request and response builders were incorrectly setting empty bodies from plugin contents ([f8aea4f](https://github.com/opicaud/pact-reference/commit/f8aea4fc337108a8d977addb6a014e5e5dca0f84))
* reqwest is dyn linked to openssl by default, which causes a SIGSEGV on alpine linux ([b4e2684](https://github.com/opicaud/pact-reference/commit/b4e2684404bdcd8543aa352eb937d57f597c8555))
* results for sync messages were not being displayed ([4587a43](https://github.com/opicaud/pact-reference/commit/4587a430247ca3457ac550fe1839a4a14b9e35a2))
* retain the data type for simple expressions [#116](https://github.com/opicaud/pact-reference/issues/116) ([80e3c4e](https://github.com/opicaud/pact-reference/commit/80e3c4e722bdde71a242ad039d2b0f416a757279))
* return a failure if any pact verification fails [#47](https://github.com/opicaud/pact-reference/issues/47) ([665bbd8](https://github.com/opicaud/pact-reference/commit/665bbd8c112c75d4062a3b83020d24faad8f5c10))
* return the most relevant response from the mock server [#69](https://github.com/opicaud/pact-reference/issues/69) ([da53bac](https://github.com/opicaud/pact-reference/commit/da53bacf9238e87413ea7841b9ad03ce462fab6c))
* return version of the mock server via FFI without heap allocation [#80](https://github.com/opicaud/pact-reference/issues/80) ([51eef86](https://github.com/opicaud/pact-reference/commit/51eef864f040d93a112f91e45f742be04ab1fe85))
* rust/pact_mock_server_cli/Dockerfile to reduce vulnerabilities ([fcbee0c](https://github.com/opicaud/pact-reference/commit/fcbee0c2a9e137354c95200778d345bb9628ded8))
* rust/pact_mock_server_cli/Dockerfile to reduce vulnerabilities ([eb92d66](https://github.com/opicaud/pact-reference/commit/eb92d665cdd7aec7c48a0c2d487e6956498e9bce))
* rust/pact_verifier_cli/Dockerfile to reduce vulnerabilities ([c7f6887](https://github.com/opicaud/pact-reference/commit/c7f6887148187cf60cd471883425dee225c496ea))
* rust/pact_verifier_cli/Dockerfile to reduce vulnerabilities ([f709528](https://github.com/opicaud/pact-reference/commit/f709528d6bccae8acc984b7d8f3ad5ce01af68eb))
* serialise v2 path matcher correctly for FFI ([a33718a](https://github.com/opicaud/pact-reference/commit/a33718a096ab2d6d6e79e2a646fbce484918ed78))
* set content-type header in message request ([3e943b1](https://github.com/opicaud/pact-reference/commit/3e943b1677321d4e91ac25ed66e4c847ed92ab0e))
* set the path to the generated pact file [#54](https://github.com/opicaud/pact-reference/issues/54) ([b5474b4](https://github.com/opicaud/pact-reference/commit/b5474b4a91cf2a9d1b3edb85c15ddfa43d926031))
* shared mime-info db not available on Windows ([41b406a](https://github.com/opicaud/pact-reference/commit/41b406aac30bc5ae7b3000a5a1558997dfb074cf))
* shutdown the tokio reactor correctly when there is an error ([c97f5d1](https://github.com/opicaud/pact-reference/commit/c97f5d1a326fb4695be374309f1b18fcdfa02b0c))
* Some matching rules do not have associated configuration ([39338c4](https://github.com/opicaud/pact-reference/commit/39338c46f8e43661605267deac822835aa0ad49e))
* sort the header and query parameter keys when writing the pact [#246](https://github.com/opicaud/pact-reference/issues/246) ([4c04cb6](https://github.com/opicaud/pact-reference/commit/4c04cb65edc8c04abc2dab059cfdfb0d091ef640))
* State change descriptions were not being displayed along with the interaction description ([6cae9b0](https://github.com/opicaud/pact-reference/commit/6cae9b0932eb03a3d8c909ad92b7a9c8c3f12a0d))
* state change URLs should not end with a slash [#110](https://github.com/opicaud/pact-reference/issues/110) ([e993074](https://github.com/opicaud/pact-reference/commit/e99307407c0c24314e73d125a5e1927252502a76))
* store matching rules in a set to avoid duplicates ([a0dc946](https://github.com/opicaud/pact-reference/commit/a0dc9468837f9d3cf05b39d7310b258c30c721ee))
* strip off anchors before generating a value from a regex ([cd9d41c](https://github.com/opicaud/pact-reference/commit/cd9d41cc78bb0dc7f27739eeceeea684594a9589))
* Support fraction of seconds with more then 3 digits [#279](https://github.com/opicaud/pact-reference/issues/279) ([9d3205a](https://github.com/opicaud/pact-reference/commit/9d3205a08a97d2e7c35eec3c97d9d4efd3349117))
* support header values that are not well formed [#228](https://github.com/opicaud/pact-reference/issues/228) ([4f786ff](https://github.com/opicaud/pact-reference/commit/4f786ff4baf568c000bc209d5020a79e381cc1c0))
* support matching rules affected by Pact-JVM defect 743 ([97abce4](https://github.com/opicaud/pact-reference/commit/97abce4d0ffb136e9bb136da9d6cd326e8aad765))
* Support RequestResponsePact loading from V4 formatted JSON [#246](https://github.com/opicaud/pact-reference/issues/246) ([155dae4](https://github.com/opicaud/pact-reference/commit/155dae400c8718121c430f2bf9b84399866b6b21))
* support specifying matching_branch in verifications ([29605ab](https://github.com/opicaud/pact-reference/commit/29605ab06dd6ffcc1c120f0506339eec7a996858))
* support specifying matching_branch in verifications ([260deb7](https://github.com/opicaud/pact-reference/commit/260deb7026c81c3d81d2c277c5777a9ae44c1d9b))
* Support string escape sequences in matching definitions [#283](https://github.com/opicaud/pact-reference/issues/283) ([727ea82](https://github.com/opicaud/pact-reference/commit/727ea824bb92e126e4ec694da739da93393ddf7e))
* switch to the Oniguruma crate for regex matching [#46](https://github.com/opicaud/pact-reference/issues/46) ([defe890](https://github.com/opicaud/pact-reference/commit/defe8907b4f261ca02487ece9c96325b3886f27b))
* tag onig to be able to reproduce deterministic build ([ffb4484](https://github.com/opicaud/pact-reference/commit/ffb44840e1e1f84b61ea80f919015b9ae7fbab57))
* Templated values in HAL links need to be URL encoded [#166](https://github.com/opicaud/pact-reference/issues/166) ([f4fdba3](https://github.com/opicaud/pact-reference/commit/f4fdba3c2a3e81962e096fa2dbfa0632c44b4e4b))
* test test_req_res_message_client was failing on Windows with a channel error ([db59c86](https://github.com/opicaud/pact-reference/commit/db59c865d14e0e3592d7907277f01c20bc4e57cf))
* times with millisecond precision less 3 caused chronos to panic ([850282d](https://github.com/opicaud/pact-reference/commit/850282d70787eee0c015ccbb97daa20f88f8faf6))
* try loosen dependencies to fix dependency cycle issue ([f91dc00](https://github.com/opicaud/pact-reference/commit/f91dc00da1013bbedd8880f1aab821dba343bb1c))
* typo ([ec25400](https://github.com/opicaud/pact-reference/commit/ec2540058ead7e8d041cfd345acb1504368ce022))
* update conan test packages to use updated API ([2eba288](https://github.com/opicaud/pact-reference/commit/2eba2886d77e1cd025d6cbb72d78957654bd9ab5))
* update doc comment on message_with_contents function ([64e0700](https://github.com/opicaud/pact-reference/commit/64e07005ac9b791207e1cad363f952db0086df11))
* update flakey ffi feature test ([7d50453](https://github.com/opicaud/pact-reference/commit/7d50453f50b51edfeace4ab766d9dc571eb5920c))
* Update matching error messages to be in line with the compatibility-suite ([2e45e22](https://github.com/opicaud/pact-reference/commit/2e45e22311460aa2e553494eaba4716e6bb3e36e))
* Update onig to latest master to fix  Regex Matcher Fails On Valid Inputs [#214](https://github.com/opicaud/pact-reference/issues/214) ([6ad00a5](https://github.com/opicaud/pact-reference/commit/6ad00a5da941a700ed0443104fc07c88e825461c))
* update to latest driver crate ([fc5be20](https://github.com/opicaud/pact-reference/commit/fc5be20223124292f089d9d5a5a303c2ebfd84de))
* update to latest models and plugin driver crates ([918e5be](https://github.com/opicaud/pact-reference/commit/918e5beb7c4422c061c6f6fff0bc64c2524c42d0))
* Upgrade pact models to 1.0.11 (fixes generated key for V4 Pacts) ([84b9d9e](https://github.com/opicaud/pact-reference/commit/84b9d9e9d6a9570b3b6cbe4e933c0fb2c2095874))
* Upgrade pact_matching to 1.0.6 (fixes some issues with matching HTTP headers) ([11c701b](https://github.com/opicaud/pact-reference/commit/11c701b45a11ef2f079c155ac4322b3579ee09f2))
* Upgrade pact_models to 0.4.5 - fixes FFI bug with generators for request paths ([f8db90d](https://github.com/opicaud/pact-reference/commit/f8db90d2df4b316eed7a93cbf02bf6e79f7fd34a))
* Upgrade pact_models to 1.0 and pact-plugin-driver to 0.1.15 to fix cyclic dependency issue ([577824e](https://github.com/opicaud/pact-reference/commit/577824e70e0571ddf8292cd55cc981cef92c7c31))
* Upgrade pact_models to 1.0.9 (fixes issues with headers) ([e96bc54](https://github.com/opicaud/pact-reference/commit/e96bc54e64c53b0fd7d12e40adccf2d18542f1c1))
* Upgrade pact_verifier to 0.13.13 ([cdb555f](https://github.com/opicaud/pact-reference/commit/cdb555f8adb122c74c394ccad085d1597177c270))
* Upgrade pact-plugin-driver to 0.4.1 (fixes an issue introduced in 0.4.0 with shared channels to plugins) ([779a59f](https://github.com/opicaud/pact-reference/commit/779a59f05911dbf59bfb0c8ac4d53a665c789c13))
* Upgrade plugin driver to 0.1.13 (fixes issue loading plugin when there are multiple versions for the same plugin) ([965a1c4](https://github.com/opicaud/pact-reference/commit/965a1c415dc7df0e3c7d2f45b62a4f9c9e14c6d4))
* Upgrade plugin driver to 0.3.1 ([1e7331f](https://github.com/opicaud/pact-reference/commit/1e7331f15d70ae9a83a10e09dce238aceb42ff7e))
* Upgrade reqwest to 0.11.10 to resolve [#156](https://github.com/opicaud/pact-reference/issues/156) ([73ae0ef](https://github.com/opicaud/pact-reference/commit/73ae0ef000113bb8e6362754a33a3bbbd8e0fa43))
* upgrade to tree_magic_mini 2.0.0 because they pulled 1.0.0 from crates.io and now builds fail ([75c2c1a](https://github.com/opicaud/pact-reference/commit/75c2c1a33e16dc5b49f8f25d8cad5ff349dfcc37))
* upgrade uuid crate ([1651af1](https://github.com/opicaud/pact-reference/commit/1651af19e9a176998b364b511b5d30d0d84388bd))
* use a shared global tokio runtime so shared plugin connections can be used ([0af0035](https://github.com/opicaud/pact-reference/commit/0af00359ddfa5e15176770e1c7ba74ec5964d415))
* use a single result enum [#66](https://github.com/opicaud/pact-reference/issues/66) ([9b1c192](https://github.com/opicaud/pact-reference/commit/9b1c19250bb6422a40612b601ee0658de3dbd683))
* use cargo-bazel-lock local ([d6f56d5](https://github.com/opicaud/pact-reference/commit/d6f56d5351f7fe7fc3c4c36cc8e711e79c0f0b3d))
* use non overriden rust rules in MODULE ([648a61d](https://github.com/opicaud/pact-reference/commit/648a61dffcebf8b49f6758982ab557aaf7cca598))
* use the pacts for verification endpoint if the conusmer selectors are specified [#133](https://github.com/opicaud/pact-reference/issues/133) ([c274ca1](https://github.com/opicaud/pact-reference/commit/c274ca1ac45d65758e59cf897d195dea0686adcf))
* use Vec instead of HashSet to maintain order of matching rules on OSX ([42f0a39](https://github.com/opicaud/pact-reference/commit/42f0a396197ec6e1f0adcf49ac00ee140dc707f0))
* using `clone` on a double-reference ([39c3816](https://github.com/opicaud/pact-reference/commit/39c3816305243c942d0962722313ab5882c135c3))
* using `clone` on a double-reference ([c182c25](https://github.com/opicaud/pact-reference/commit/c182c251cef9a4f1e900c933a69b7ca8c3eb95ec))
* UUID generator should return hyphenated values ([a5f17a5](https://github.com/opicaud/pact-reference/commit/a5f17a54d276eb4034ba138362d1e658e791b009))
* V3 message binary content was not being base64 decoded correctly when loaded from a Pact file ([a03fc5f](https://github.com/opicaud/pact-reference/commit/a03fc5f0f515c337a01c937bc640253c089f48c1))
* V3 path matcher JSON format was incorrect ([b52f095](https://github.com/opicaud/pact-reference/commit/b52f09563897eef11c2e33e431957865de8b1c65))
* V4 models were not including the key in the implementation of equals ([867936d](https://github.com/opicaud/pact-reference/commit/867936d62c82d8787f4b36773e74d6f84202823d))
* **V4:** Bodies specified as a single empty JSON string should be mapped to an empty body ([eeb256d](https://github.com/opicaud/pact-reference/commit/eeb256db2b6236824cd8d3c4fe525e973ece3559))
* **V4:** Bodies where the content attribute is NULL should be NULL bodies ([315e6ae](https://github.com/opicaud/pact-reference/commit/315e6aeef7cd96f459b681220b64e3a1c9f8e4c8))
* **V4:** corrected all the hash functions for all V4 models ([d3cd235](https://github.com/opicaud/pact-reference/commit/d3cd2357b29c8a9bdbd6c3f7dcbc96f0d78e0615))
* **V4:** Status code matcher was not converted to JSON correctly ([457aa5f](https://github.com/opicaud/pact-reference/commit/457aa5fc81bb709cf7524547f8ac28fb850eac66))
* **V4:** when generating the interaction key, treat header keys in a case-insensitive manner ([10239f7](https://github.com/opicaud/pact-reference/commit/10239f7c42088d0fc11186a2485ff7551215d617))
* Values matcher should not be applied to a slice like Equality ([dfa9f61](https://github.com/opicaud/pact-reference/commit/dfa9f6148e7601523cde70c08e89faa66fb5f9fd))
* Values matchers must not cascade ([07e2a3b](https://github.com/opicaud/pact-reference/commit/07e2a3b63598e0828cb7ee878ac414f8833cd829))
* values_matcher_defined should include EachValue matcher ([41a5231](https://github.com/opicaud/pact-reference/commit/41a523199c31350ee8292fec960c9aa9b569a1fd))
* verification CLI was reporting incorrect pact specification version ([4b8fb64](https://github.com/opicaud/pact-reference/commit/4b8fb645ba24b5f0125db548a011b5aa0869e68c))
* Verification output comes from the plugin, so do not display any when a plugin is used ([0a248af](https://github.com/opicaud/pact-reference/commit/0a248af1ee7ca187878776c2f903ea0f123ce03c))
* Verification results across multiple pacts accumulate, publishing invalid results [#231](https://github.com/opicaud/pact-reference/issues/231) ([c12d9a6](https://github.com/opicaud/pact-reference/commit/c12d9a61a6001fe9eeb0b30025d9d61866e529b6))
* **verifier test:** missing addition of teardown impl ([1768141](https://github.com/opicaud/pact-reference/commit/1768141e4e6a9f65d611b71786e90150b268fd6b))
* verifier was returning a mismatch when the expected body is empty [#113](https://github.com/opicaud/pact-reference/issues/113) ([a44cbbe](https://github.com/opicaud/pact-reference/commit/a44cbbeef383abded363fe0f9613fb05d79668b4))
* **verifier:** fix typos in the implementation of Display on the PactSource enum ([b8d263f](https://github.com/opicaud/pact-reference/commit/b8d263f760b71035fc4773d280dbe5a49185e3c6))
* **verifier:** provider state executor teardown function does not need to be async ([6466545](https://github.com/opicaud/pact-reference/commit/6466545f3634032f6e30a5da3c530360c2fb60fc))
* **verifier:** the state_change_teardown option didn't appear to actually be used ([5f782d6](https://github.com/opicaud/pact-reference/commit/5f782d6757bd97ff202a16081b7120c48735efee))
* verify interaction was blocking the thread ([484b747](https://github.com/opicaud/pact-reference/commit/484b747ffeb37e9271395894eff4cf983d27e495))
* was incorrectly selecting the matching rule when weight was equal ([67e2147](https://github.com/opicaud/pact-reference/commit/67e2147deb068733dfb5ec221fe70e5dfe0c9b17))
* was missing setter to set the transport with V4 interactions ([01ac989](https://github.com/opicaud/pact-reference/commit/01ac989b3cab8383a144d36b7fe86c2f3f8e983c))
* when comparing content types, check the base type if the actual content type has a suffix [#224](https://github.com/opicaud/pact-reference/issues/224) ([83d14ce](https://github.com/opicaud/pact-reference/commit/83d14ce1424bcbc0298e717b207f48b91d5080f1))
* when displaying diff, if actual body was empty a panic resulted ([baf3693](https://github.com/opicaud/pact-reference/commit/baf3693ce193e00311613634c6f47c3b21bd8803))
* when loading pacts from a dir, filter by the provider name [#233](https://github.com/opicaud/pact-reference/issues/233) ([34a67cb](https://github.com/opicaud/pact-reference/commit/34a67cb9c76b581f45c1117649dfc100fb9b27c2))
* when loading plugins for Pact files, only take minor + major version into account ([e93c557](https://github.com/opicaud/pact-reference/commit/e93c5574393816d53f3a92e5d3d16b7c6ff97773))
* when matching bodies, use any content type header matcher ([88eff15](https://github.com/opicaud/pact-reference/commit/88eff157e138d0b2151859d3341019ba62d7c1a9))
* when merging pacts, it helps to use the new interations in the merged pact, not the old ones [#77](https://github.com/opicaud/pact-reference/issues/77) ([3acf437](https://github.com/opicaud/pact-reference/commit/3acf4376bc475e0b1a2acaa08c2b1505ad36d4b4))
* When writing V4 format, correct the content type set on the body ([f6ba3b2](https://github.com/opicaud/pact-reference/commit/f6ba3b2ab4c172a445a58aa394906730e395b716))
* Windows URL on conan package ([bb1e35e](https://github.com/opicaud/pact-reference/commit/bb1e35ea2858e95220e19206c8585200c1996941))
* write_pact_file was always serialising a v3 pact even if the spec version was set to 2 ([d7632cb](https://github.com/opicaud/pact-reference/commit/d7632cb5b81f7fae9185285872511f3a72092329))
* xml response matching rules ([13f7c36](https://github.com/opicaud/pact-reference/commit/13f7c36fa8af2eec06c880320c9f692cd14d1059))

### chore

* rename header PACT_MESSAGE_METADATA -> Pact-Message-Metadata ([b3a6f19](https://github.com/opicaud/pact-reference/commit/b3a6f193f7d9012f64ecbf140081e1bf17b44beb))

### deps

* **pact_mock_server_ffi:** remove formdata, add multipart ([3b73b71](https://github.com/opicaud/pact-reference/commit/3b73b71fe4f34511c69e83fcb24a11fd16e70ce0))

### Features

* add --no-color option to verfier CLI [#203](https://github.com/opicaud/pact-reference/issues/203) ([4530dbd](https://github.com/opicaud/pact-reference/commit/4530dbdecc9f35f2487d2a03975fa72dd18e5f6d))
* add a boolean return value for all FFI interaction functions [#108](https://github.com/opicaud/pact-reference/issues/108) ([64adcdc](https://github.com/opicaud/pact-reference/commit/64adcdc4e14c0e604ce8139420ed80d081dc81d3))
* Add a command to shut the master mock server down [#26](https://github.com/opicaud/pact-reference/issues/26) ([40ad75b](https://github.com/opicaud/pact-reference/commit/40ad75bdaea5edf659a5cbb17c4bae025016dc03))
* add a method to join a value onto a doc path ([c707a8c](https://github.com/opicaud/pact-reference/commit/c707a8c05d393aeebc866c795de740a8162e2993))
* add a mock server config struct ([29ba743](https://github.com/opicaud/pact-reference/commit/29ba743638e78c1e127695edab2e45b24a47b776))
* add a mock server URL generator ([09b197d](https://github.com/opicaud/pact-reference/commit/09b197d4d41bc4a3fe37860df392fc3e32084e6b))
* Add a parameter for the server key to the start command [#26](https://github.com/opicaud/pact-reference/issues/26) ([074569a](https://github.com/opicaud/pact-reference/commit/074569ace68cbc8051a35cbddd09e3ae21c0e42c))
* add a simple header parser to pact_models [#259](https://github.com/opicaud/pact-reference/issues/259) ([f04a327](https://github.com/opicaud/pact-reference/commit/f04a327336fa393fc4e2158a511b4949df3b15fa))
* add a test to check for error result with IO error [#213](https://github.com/opicaud/pact-reference/issues/213) ([8ca3303](https://github.com/opicaud/pact-reference/commit/8ca3303bd9417764999e04f8e18b3c31d9afd22f))
* add ability of mock server to expose metrics [#94](https://github.com/opicaud/pact-reference/issues/94) ([5a529fd](https://github.com/opicaud/pact-reference/commit/5a529fd52d0f842213e2d0147b7913f0e00921db))
* add all the CORS headers ([d3c5cf2](https://github.com/opicaud/pact-reference/commit/d3c5cf284e67c64603b12208344e50515be9c888))
* add an iterator over the matching rules from a matching definition expression ([18e1e11](https://github.com/opicaud/pact-reference/commit/18e1e113b05ec6663c637193f3ea5fa06ba09bfc))
* Add application/x-www-form-urlencoded to the known content types ([7dd8938](https://github.com/opicaud/pact-reference/commit/7dd8938476ec00dce4f7ce81e6d44ba42ef04e13))
* Add ARM64 (aarch64) linux targets to the release build [#160](https://github.com/opicaud/pact-reference/issues/160) ([e3bef15](https://github.com/opicaud/pact-reference/commit/e3bef1556a2613cbda7df8616d97f71325a303ff))
* add bazel to build libpact_ffi.a ([317fd6f](https://github.com/opicaud/pact-reference/commit/317fd6f732825dab343d016f357e8b96a352bedd))
* add bazel to build shared library libpact_ffi.a ([07e3b35](https://github.com/opicaud/pact-reference/commit/07e3b35d8630f62d964d663b747284c7a0cd2e04))
* add bazel to build shared library libpact_ffi.a ([3a70bee](https://github.com/opicaud/pact-reference/commit/3a70bee374b250cd530cd8ecc0a18a3998c21706))
* Add builder interface for plugins to provide DSL to construct interactions ([cd53617](https://github.com/opicaud/pact-reference/commit/cd536170357c7573ae4f7e948a723ca1ad1cc568))
* add CLI options to provide different ports when there are different transports ([8cc2948](https://github.com/opicaud/pact-reference/commit/8cc294825d64f20af31804eafc7c617ce653a51f))
* add colons to the allowed path characters ([66c328e](https://github.com/opicaud/pact-reference/commit/66c328edeaff40487282eb543f1e9c025b46ae5c))
* add convience methods to modify headers ([e699061](https://github.com/opicaud/pact-reference/commit/e6990616414890f174f5d6c5030a28d8f745eea4))
* Add crate feature for JUnit report output ([b9e034b](https://github.com/opicaud/pact-reference/commit/b9e034b2f3a04e4aabcd623c2dbfdccbfe98a1eb))
* add cross config to build arm64 binaries ([34f4f6c](https://github.com/opicaud/pact-reference/commit/34f4f6cd567a2f8f78c2c1ba44c188614e45b388))
* add custom-header to the old FFI args for implementations that have not moved to handles ([2e5823a](https://github.com/opicaud/pact-reference/commit/2e5823a015e077fd1701bb5baa8e457efa47371c))
* add date-time matcher to consumer DSL ([be604cc](https://github.com/opicaud/pact-reference/commit/be604cce3c14af3802e979bff594ff641507e7b9))
* add docs on the matching rule IDs ([cfc565e](https://github.com/opicaud/pact-reference/commit/cfc565e3a10e5142ba0fc45bbcaab476111665a6)…
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Indicates an unexpected problem or unintended behavior
Projects
None yet
Development

No branches or pull requests

4 participants