https://pact.io logo
Join Slack
Powered by
# pact-net
  • a

    Akke Luukkonen

    07/12/2022, 9:18 AM
    Is there a reason you're trying to mount the volume in general to
    /var/lib
    ? I have a simpler version where I just mount it directly to root as
    /pacts
    . For comparison, I'm publishing contracts using Docker in ADO with:
    Copy code
    steps:
    - task: DownloadPipelineArtifact@2
      displayName: Download artifact containing pacts
      inputs:
        artifactName: ${{ parameters.pactsArtifactName }}
        targetPath: $(Agent.TempDirectory)/pacts
    
    - script: >
        docker run
        -e PACT_BROKER_TOKEN
        -v $(Agent.TempDirectory)/pacts:/pacts
        pactfoundation/pact-cli@sha256:ddefe0e43c3706884635a2642f2be366274679d7055f300ed92c4e384639ba0a
        broker publish
        /pacts
        --consumer-app-version ${{ parameters.version }}
        --branch ${{ parameters.branch }}
        --broker-base-url https://<company>.<http://pactflow.io|pactflow.io>
      displayName: Publish to Pactflow
      env:
        PACT_BROKER_TOKEN: $(SecretPactBrokerToken)
    m
    • 2
    • 10
  • g

    Gerard van Engelen

    07/14/2022, 4:22 AM
    Hi team, Could you point me to more documentation on publishing verification results? I've been it this way but I can't seem to get it to work. For most because I'm not sure what this options part is doing. I'm on PactNet v.4.0.0.
    Copy code
    string version = Environment.GetEnvironmentVariable("VERSION");
            string branch = Environment.GetEnvironmentVariable("BRANCH");
            string buildUri = Environment.GetEnvironmentVariable("BUILD_URL");
            
            verifier.ServiceProvider("My Provider", _fixture.ServerUri)
                .WithPactBrokerSource(new Uri("<https://broker.example.org>"), options =>
                {
                    options.ConsumerVersionSelectors(new ConsumerVersionSelector { MainBranch = true, Latest = true })
                        .PublishResults(version, results =>
                        {
                            results.ProviderBranch(branch)
                                .BuildUri(new Uri(buildUri));
                        });
                        .PublishResults(version, results => { results.ProviderBranch(branch);});
                })
                .Verify();
    This was my latest error:
    Copy code
    Failures:
    
    1) Failed to load pact - Could not load pacts from the pact broker '<https://broker.pact.engineering.crxt.io/>' - ContentError("Request to pact broker URL '<https://broker.pact.engineering.crxt.io/pacts/provider/Vehicle%20Financing/for-verification>' failed - HTTP status server error (500 Internal Server Error) for url (<https://broker.pact.engineering.crxt.io/pacts/provider/Vehicle%20Financing/for-verification>)")
    
    
    There were 1 pact failures
    
    [91m[<http://xUnit.net|xUnit.net> 00:00:02.82]     Financing.Api.ContractTests.FinanceOptionsContractTests.EnsureSomethingApiHonoursPactWithConsumer [FAIL][0m[91m
    [0m  Failed Financing.Api.ContractTests.FinanceOptionsContractTests.EnsureSomethingApiHonoursPactWithConsumer [1 s]
      Error Message:
       PactNet.Exceptions.PactFailureException : Pact verification failed
      Stack Trace:
         at PactNet.Verifier.InteropVerifierProvider.Execute()
       at PactNet.Verifier.PactVerifierSource.Verify()
       at Financing.Api.ContractTests.FinanceOptionsContractTests.EnsureSomethingApiHonoursPactWithConsumer() in /src/test/Financing.Api.ContractTests/FinanceContractTests.cs:line 43
      Standard Output Messages:
     Starting verification...
     Pact verification failed
    t
    g
    c
    • 4
    • 17
  • g

    Ganesh

    07/18/2022, 11:22 AM
    hi all, I am getting HTTP 500 error for a Post request with a body in my consumer test Here is my request object in C#
    Copy code
    var exposureRequest = new ExposuresRequest
                {
                    PortfolioId = "10000000-0000-0000-0000-000000000000",
                    PortfolioNamespace = "MaceConsumerTests/GBP Holdings portfolio",
                    PortfolioClassificationNamespace = "namespace_PortfolioA",
                    EffectDate = new DateTime(2021, 05, 05),
                    Currency = "USD",
                    PortfolioDataDates = new Dictionary<string, DateTime> { { "10000000-0000-0000-0000-000000000000", new DateTime(2021, 05, 06) } },
                    UseStorage = true,
                    ClassificationHierarchy = new string[][] { new string[]  { "industry" } },
                    OutputType = ExposuresOutputType.GroupLevel,
                    Path = null
              
      };
    and here is my Pact consumer request:
    Copy code
    pact.UponReceiving("A valid request")
                    .Given("A valid request for get exposures")
                    .WithRequest(<http://HttpMethod.Post|HttpMethod.Post>, "/api/exposures")
                    .WithHeader("content-type", "application/json; charset=utf-8")
                    .WithJsonBody(exposureRequest,new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() })
                    .WillRespond()
                    .WithStatus(HttpStatusCode.OK)
                    .WithHeader("content-type", "application/json")
                    .WithJsonBody(new TypeMatcher(new ExposuresResponse()));
    
                await pact.VerifyAsync(async ctx =>
                {
                    var response = await ApiClient.GetExposures(exposureRequest);
                    Assert.NotNull(response);
                });
    and this the ApiClient that is actually making http request
    Copy code
    public async Task<ExposuresResponse> GetExposures(ExposuresRequest request)
            {
                var requestContent = new StringContent(JsonConvert.SerializeObject(request), Encoding.UTF8, "application/json");
                var httpResponse = await httpClient.PostAsync("api/exposures", requestContent);
    
                var exposuresResponse = await TryGetResponse<ExposuresResponse>(httpResponse);
                return exposuresResponse;
            }
    I am getting HTTP Status code 500, Internal server error because the actual request does not meet expected request. Here is the Log output
    Copy code
    Standard Output Messages:
     Mock server logs:
    
     [DEBUG][pact_mock_server::hyper_server] Creating pact request from hyper request
    [DEBUG][pact_mock_server::hyper_server] Extracting query from uri /api/exposures
    [INFO][pact_mock_server::hyper_server] Received request Request ( method: POST, path: /api/exposures, query: None, headers: Some({"host": ["localhost:8197"], "content-type": ["application/json; charset=utf-8"], "content-length": ["501"]}), body: Present(501 bytes, application/json;charset=utf-8) )
    [DEBUG][pact_mock_server::hyper_server]      body: '{"ClassificationHierarchy":[["industry"]],"UseStorage":true,"OutputType":1,"Path":null,"EffectDate":"2021-05-05T00:00:00","PortfolioDataDates":{"10000000-0000-0000-0000-000000000000":"2021-05-06T00:00:00"},"Currency":"USD","PortfolioId":"10000000-0000-0000-0000-000000000000","PortfolioNamespace":"MaceConsumerTests/GBP Holdings portfolio","PortfolioClassificationNamespace":"namespace_PortfolioA","BenchmarkPortfolioId":null,"BenchmarkPortfolioNamespace":null,"BenchmarkClassificationNamespace":null}'
    [INFO][pact_matching] comparing to expected Request ( method: POST, path: /api/exposures, query: None, headers: Some({"content-type": ["application/json; charset=utf-8"]}), body: Present(501 bytes) )
    [DEBUG][pact_matching]      body: '{"benchmarkClassificationNamespace":null,"benchmarkPortfolioId":null,"benchmarkPortfolioNamespace":null,"classificationHierarchy":[["industry"]],"currency":"USD","effectDate":"2021-05-05T00:00:00","outputType":1,"path":null,"portfolioClassificationNamespace":"namespace_PortfolioA","portfolioDataDates":{"10000000-0000-0000-0000-000000000000":"2021-05-06T00:00:00"},"portfolioId":"10000000-0000-0000-0000-000000000000","portfolioNamespace":"MaceConsumerTests/GBP Holdings portfolio","useStorage":true}'
    [DEBUG][pact_matching]      matching_rules: MatchingRules { rules: {HEADER: MatchingRuleCategory { name: HEADER, rules: {} }, PATH: MatchingRuleCategory { name: PATH, rules: {} }, BODY: MatchingRuleCategory { name: BODY, rules: {} }} }
    [DEBUG][pact_matching]      generators: Generators { categories: {} }
    [DEBUG][pact_matching::matchers] String -> String: comparing '/api/exposures' to '/api/exposures' using Equality
    [DEBUG][pact_matching] expected content type = 'application/json;charset=utf-8', actual content type = 'application/json;charset=utf-8'
    [DEBUG][pact_matching] content type header matcher = 'None'
    [DEBUG][pact_matching] Using body matcher for content type 'application/json;charset=utf-8'
    [DEBUG][pact_matching::json] compare: Comparing path $
    [DEBUG][pact_matching::json] compare_maps: Comparing maps at $: {"benchmarkClassificationNamespace": Null, "benchmarkPortfolioId": Null, "benchmarkPortfolioNamespace": Null, "classificationHierarchy": Array([Array([String("industry")])]), "currency": String("USD"), "effectDate": String("2021-05-05T00:00:00"), "outputType": Number(1), "path": Null, "portfolioClassificationNamespace": String("namespace_PortfolioA"), "portfolioDataDates": Object({"10000000-0000-0000-0000-000000000000": String("2021-05-06T00:00:00")}), "portfolioId": String("10000000-0000-0000-0000-000000000000"), "portfolioNamespace": String("MaceConsumerTests/GBP Holdings portfolio"), "useStorage": Bool(true)} -> {"BenchmarkClassificationNamespace": Null, "BenchmarkPortfolioId": Null, "BenchmarkPortfolioNamespace": Null, "ClassificationHierarchy": Array([Array([String("industry")])]), "Currency": String("USD"), "EffectDate": String("2021-05-05T00:00:00"), "OutputType": Number(1), "Path": Null, "PortfolioClassificationNamespace": String("namespace_PortfolioA"), "PortfolioDataDates": Object({"10000000-0000-0000-0000-000000000000": String("2021-05-06T00:00:00")}), "PortfolioId": String("10000000-0000-0000-0000-000000000000"), "PortfolioNamespace": String("MaceConsumerTests/GBP Holdings portfolio"), "UseStorage": Bool(true)}
    [DEBUG][pact_matching] --> Mismatches: [BodyMismatch { path: "$", expected: Some(b"{\"benchmarkClassificationNamespace\":\"null\",\"benchmarkPortfolioId\":\"null\",\"benchmarkPortfolioNamespace\":\"null\",\"classificationHierarchy\":\"[[\\\"industry\\\"]]\",\"currency\":\"\\\"USD\\\"\",\"effectDate\":\"\\\"2021-05-05T00:00:00\\\"\",\"outputType\":\"1\",\"path\":\"null\",\"portfolioClassificationNamespace\":\"\\\"namespace_PortfolioA\\\"\",\"portfolioDataDates\":\"{\\\"10000000-0000-0000-0000-000000000000\\\":\\\"2021-05-06T00:00:00\\\"}\",\"portfolioId\":\"\\\"10000000-0000-0000-0000-000000000000\\\"\",\"portfolioNamespace\":\"\\\"MaceConsumerTests/GBP Holdings portfolio\\\"\",\"useStorage\":\"true\"}"), actual: Some(b"{\"BenchmarkClassificationNamespace\":\"null\",\"BenchmarkPortfolioId\":\"null\",\"BenchmarkPortfolioNamespace\":\"null\",\"ClassificationHierarchy\":\"[[\\\"industry\\\"]]\",\"Currency\":\"\\\"USD\\\"\",\"EffectDate\":\"\\\"2021-05-05T00:00:00\\\"\",\"OutputType\":\"1\",\"Path\":\"null\",\"PortfolioClassificationNamespace\":\"\\\"namespace_PortfolioA\\\"\",\"PortfolioDataDates\":\"{\\\"10000000-0000-0000-0000-000000000000\\\":\\\"2021-05-06T00:00:00\\\"}\",\"PortfolioId\":\"\\\"10000000-0000-0000-0000-000000000000\\\"\",\"PortfolioNamespace\":\"\\\"MaceConsumerTests/GBP Holdings portfolio\\\"\",\"UseStorage\":\"true\"}"), mismatch: "Expected a Map with keys benchmarkClassificationNamespace, benchmarkPortfolioId, benchmarkPortfolioNamespace, classificationHierarchy, currency, effectDate, outputType, path, portfolioClassificationNamespace, portfolioDataDates, portfolioId, portfolioNamespace, useStorage but received one with keys BenchmarkClassificationNamespace, BenchmarkPortfolioId, BenchmarkPortfolioNamespace, ClassificationHierarchy, Currency, EffectDate, OutputType, Path, PortfolioClassificationNamespace, PortfolioDataDates, PortfolioId, PortfolioNamespace, UseStorage" }]
    [DEBUG][pact_mock_server::hyper_server] Request did not match: Request did not match - Request ( method: POST, path: /api/exposures, query: None, headers: Some({"content-type": ["application/json; charset=utf-8"]}), body: Present(501 bytes) )    0) $ -> Expected a Map with keys benchmarkClassificationNamespace, benchmarkPortfolioId, benchmarkPortfolioNamespace, classificationHierarchy, currency, effectDate, outputType, path, portfolioClassificationNamespace, portfolioDataDates, portfolioId, portfolioNamespace, useStorage but received one with keys BenchmarkClassificationNamespace, BenchmarkPortfolioId, BenchmarkPortfolioNamespace, ClassificationHierarchy, Currency, EffectDate, OutputType, Path, PortfolioClassificationNamespace, PortfolioDataDates, PortfolioId, PortfolioNamespace, UseStorage
    I am not able to find out why Pact complains request did not match. Can someone please help here. I have already spent 1 day on this and blocked here. Thank you
  • m

    Matt (pactflow.io / pact-js / pact-go)

    07/18/2022, 12:36 PM
    It looks like came casing: expected: benchmarkClassificationNamespace, benchmarkPortfolioId, benchmarkPortfolioNamespace, classificationHierarchy, currency, effectDate, outputType, path, portfolioClassificationNamespace, portfolioDataDates, portfolioId, portfolioNamespace, useStorage got: BenchmarkClassificationNamespace, BenchmarkPortfolioId, BenchmarkPortfolioNamespace, ClassificationHierarchy, Currency, EffectDate, OutputType, Path, PortfolioClassificationNamespace, PortfolioDataDates, PortfolioId, PortfolioNamespace, UseStorage
  • m

    Matt (pactflow.io / pact-js / pact-go)

    07/18/2022, 12:36 PM
    You’re expecting lowercase, but the request is uppercase
  • g

    Ganesh

    07/18/2022, 1:18 PM
    right, I did also specify to use CamelCase in my pact request:
    Copy code
    .WithJsonBody(product,new JsonSerializerSettings { ContractResolver=new CamelCasePropertyNamesContractResolver()})
    It's still complaining about case mismatch. how do I tell Pact to send the json in Camcelcase
    • 1
    • 2
  • m

    Matt (pactflow.io / pact-js / pact-go)

    07/18/2022, 1:22 PM
    I don't know for sure, is there an option/method on that class to say lower or upper camel case?
  • a

    Alasdair

    07/25/2022, 11:00 AM
    Hello we are attempting to use pact.net for investigation into creating some contract testing of some of our apis, we managed to create a couple tests with out authentication with no real issue. Now we are attempting to create tests with NTLM authentication and we are having some issues. Unfortunately I have been unable to add a custom header with a token to be recognized by the api (tried Negotiate and Authorization headers) - I just get end up getting a 401 error. I am currently using "IPactBuilderV3" from pact.net - is there any other ways to add NTLM authentication to our pact tests which pact supports?
    m
    s
    t
    • 4
    • 16
  • j

    Jay Espiritu

    07/27/2022, 11:50 AM
    Hi all. Contract testing newbie here. Hoping someone can help me with starting pact. My company is using aws resources. Is there an example i can follow or tutorial i can watch to start pact? Most of the tutorials i’ve watched spin up local environment with ports. Whereas with my current situation we deploy directly to aws which we can be accessed by api endpoints. Im mainly interested with sqs, sns and lambda testing (for now at least). Any help would be appreciative. Thanks in advance!
    👋 1
    m
    s
    f
    • 4
    • 11
  • a

    Andre Rodrigues

    08/05/2022, 4:59 PM
    Hi Everyone! Where can I get some simple example of pact implemented in c# using the broker as docker image to publish contracts ? Thanks a lot :)
    m
    s
    • 3
    • 9
  • s

    Sarunas Kavaliauskas

    08/16/2022, 7:33 PM
    Hi, im am implementing contract testing in .net. The documentation strongly suggests separating tests that generate contracts and tests that run against the stubs. So my question is - what is best way to start stub api server from contract files and ask for specific state before each test ? I want test A to run against provider with state “ABC” and test B run against same provider with state “DEF”, etc… I know i can start stub api with docker container with specific state, but to change the state for the next test i would have to restart docker container. Not convenient. I know there is a library seek.automation, that launches stub api from the code and allows to filter state for each test. But it seems it is no longer supported and breaks for .net 6. Is there a better way ? Have i missed something in Pact.NET ? It can’t be that this hasn’t been needed before :)
    t
    • 2
    • 9
  • s

    Sarunas Kavaliauskas

    08/20/2022, 3:40 AM
    Anyone encountered this error ? Running Pact.NET on macOS (Apple Silicon): Unable to load shared library ‘pact_ffi’ or one of its dependencies. In order to help diagnose loading problems, consider... System.DllNotFoundException Unable to load shared library ‘pact_ffi’ or one of its dependencies. In order to help diagnose loading problems, consider setting the DYLD_PRINT_LIBRARIES environment variable: dlopen(libpact_ffi, 0x0001): tried: ‘libpact_ffi’ (no such file), ‘/usr/local/lib/libpact_ffi’ (no such file), ‘/usr/lib/libpact_ffi’ (no such file), ‘/Users/sarunask/Projects/mobile-bff-mirror/Tests.API/bin/Debug/net6.0/libpact_ffi’ (no such file) at PactNet.Interop.NativeInterop.LogToBuffer(LevelFilter levelFilter) at PactNet.PactExtensions.InitialiseLogging(PactLogLevel level) at PactNet.PactExtensions.InitialiseServer(MockServer server, IPact pact, PactSpecification version) at PactNet.PactExtensions.UsingNativeBackend(IPactV3 pact, Nullable`1 port, IPAddress host) at Tests.API.PrivateAccounts.GetAccounts..ctor(WebApplicationFactory`1 factory, ITestOutputHelper output) in /Users/sarunask/Projects/mobile-bff-mirror/Tests.API/PrivateAccounts/GetAccounts.cs:line 56
    m
    • 2
    • 2
  • s

    Siddharth Gupta

    08/29/2022, 9:15 AM
    Hi , I have an array in response . The structure of array elements is different from one another . Not able to write expected body match of consumer test and it is giving error " No best type found for implicitly typed array " : Following is the response
    m
    • 2
    • 3
  • s

    Siddharth Gupta

    08/29/2022, 9:15 AM
    "extension": [ { "url": "http://xyz.com/fhir/v1/StructureDefinition/schedulable", "valueBoolean": true }, { "url": "http://xyz.com/fhir/v1/StructureDefinition/serviceOrganization", "valueReference": { "reference": "Organization/Organization-Dept-1", "display": "myDepartment" } } ]
  • s

    Siddharth Gupta

    08/29/2022, 9:16 AM
    How do i verify an array having different structure of elements
  • s

    Siddharth Gupta

    08/29/2022, 9:57 AM
    i tried using valueBoolean = MinType( true,0) but 0 is not allowed and throwing exception
    m
    s
    t
    • 4
    • 21
  • j

    Jay Li

    08/31/2022, 9:17 AM
    hi, my team is planning to use Kafka event driven, I could not find any useful document about how to use PactNet to do the contract test for this Kafka event driven microservice, anyone can give me some clue?
    m
    • 2
    • 9
  • s

    Siddharth Gupta

    09/02/2022, 6:56 AM
    Hi Folks any idea how to push multiple data values in query parameters while writing a consumer side interaction with mock provider
  • s

    Siddharth Gupta

    09/02/2022, 6:56 AM
    Query = new Dictionary<string, object> { { "actor",String.Format("Device/Device-{0},Device/Device-{1}",Device1,Device2) }, { "_format","json" }, { "_pretty","true" }, { "_lastUpdated",String.Format("ge{0}",LastUpdated) }, { "date","le2022-02-09" }, }
  • s

    Siddharth Gupta

    09/02/2022, 6:56 AM
    Query = new Dictionary<string, object> { { "actor",String.Format("Device/Device-{0},Device/Device-{1}",Device1,Device2) }, { "_format","json" }, { "_pretty","true" }, { "_lastUpdated",String.Format("ge{0}",LastUpdated) }, { "date","le2022-02-09" }, { "date","ge2022-02-09" }, }
  • s

    Siddharth Gupta

    09/02/2022, 6:57 AM
    this gives me error saying date key is already added
  • s

    Siddharth Gupta

    09/02/2022, 6:57 AM
    in the dictonary
  • d

    David Hvilava

    09/02/2022, 7:53 AM
    Hi guys, I use PactNet 4.1.0. When I run a Provider test using a path to particular Pact (WithUriSource method) verification result is not sent to Pact Broker (we use PactFlow) due to an error:
    Publishing of verification results failed with an error: Link/Resource was not found - Request to pact broker path '/pacticipants/Provider1' failed: 404 Not Found. URL: '<https://outsystems-cfl.pactflow.io/pacts/provider/Provider1/consumer/Consumer2/version/1.0.1>'
    Although a pact is available by that url. This problem was described several months ago in this PR. But it didn't get any attention. Back then I just explored a new functionality. But now it becomes critical for our team, since we move forward to can-i-deploy and add webhooks in PactFlow. Maybe someone can help me with that
  • s

    Siddharth Gupta

    09/02/2022, 8:12 AM
    Query = new Dictionary<string, object> { { "actor",String.Format("Device/Device-{0},Device/Device-{1}",Device1,Device2) }, { "_format","json" }, { "_pretty","true" }, { "_lastUpdated",String.Format("ge{0}",LastUpdated) }, { "date",new[]{"le2022-02-09","ge2022-02-07" } } } this worked for me
  • m

    Maksym Liannoi

    09/02/2022, 9:49 AM
    Hello! I have three questions about the global Pact conception. 1. Please, tell me, should I separate pact files demands on provider features? For example, I have an API for the Task Manager application and implemented API by feature architecture on the C# language. Such as TaskCrud (CRUD operations on tasks), TaskFilter (filtering tasks) etc. And SPA React application, where I write contact tests. So my question is, should I have a single pact file (e.g.
    task-api-consumer-task-api-provider.json
    ) for checking responses to all features from the provider side or better split generating pact files depending on provider features (e.g.
    task-api-consumer-task-api-provider-crud.json
    and
    task-api-consumer-task-api-provider-filter.json
    ) and after that writing two verification test methods on the provider side for each coming pact files? 2. Where should I save the pact file path? Is reading from a configuration file (such as launchSettings.json) for a test project better than C# constant? 3. If a consumer has many providers, which algorithm is better to use if I need to publish one pact file to a specific provider? Depend on the pact file prefix, or save the pact file in a particular folder during generation on the consumer side on passing tests? Thanks, Maksym
    ✅ 1
    m
    s
    • 3
    • 4
  • j

    Jay Li

    09/05/2022, 2:44 AM
    Hi team, This is the example of message pact consumer test, my understanding is that it defined the expected message from the MQ, but do we have code to define the message/data that consumer put onto the MQ?
    m
    t
    • 3
    • 29
  • a

    Andre Rodrigues

    09/07/2022, 1:20 PM
    Hi all! Is there any parameter to publish results in pact broker after the provider verification?
    m
    • 2
    • 21
  • а

    Александр Аврамчик

    09/07/2022, 1:44 PM
    Hello! Does .net client supports branches and enviroments? I can't find an info how to filter pacts to verify like it was with tags (PactNet v3)
    m
    • 2
    • 2
  • f

    Fábio Rodrigues

    09/13/2022, 5:10 PM
    Hey there, I'm getting this error when attempting to verify a previously published contract:
    Copy code
    [INFO][pact_verifier::pact_broker] Fetching path '/pacts/provider/publish-service/consumer/alm-app/pact-version/6bc3dee5de1ea718ef23d4dab94fa32536ecf014/metadata/c1tdW2N2XT0xMTI2MiZwPXRydWU' from pact broker
    [DEBUG][hyper::client::pool] reuse idle connection for ("https", <http://outsystems.pactflow.io|outsystems.pactflow.io>)
    [DEBUG][reqwest::async_impl::client] response '200 OK' for <https://outsystems.pactflow.io/pacts/provider/publish-service/consumer/alm-app/pact-version/6bc3dee5de1ea718ef23d4dab94fa32536ecf014/metadata/c1tdW2N2XT0xMTI2MiZwPXRydWU>
    [ERROR][pact_verifier] Failed to load pact - Failed to load pact from '<https://outsystems.pactflow.io/>' - ContentError("Expected a \".\" or \"[\" instead of \"r\" in path expression \"$results[*].deploymentOperations[*].applicationKey\" at index 1")
    [WARN][pact_matching::metrics]
    The part i'm not understanding is why it's failing on parsing the matcher locator:
    Copy code
    "matchingRules": {
              "body": {
                "$results[*].deploymentOperations[*].applicationKey": {
                  "combine": "AND",
                  "matchers": [
                    {
                      "match": "regex",
                      "regex": "^$|[0-9A-Fa-f]{8}(?:-[0-9A-Fa-f]{4}){3}-[0-9A-Fa-f]{12}$"
                    }
                  ]
                },
    d
    m
    +2
    • 5
    • 17
  • a

    Andre Rodrigues

    09/21/2022, 9:04 AM
    Hello everyone! Im trying to publish results in pactbroker after provider verification. Locally it was really possible and its everything ok. However, in my company, we have our broker using https and I'm cant to publish results (tests fails in C#.Net and results arent being published to broker) Anyone can help me to solve it?
    m
    y
    • 3
    • 28
12345...9Latest