Skip to content
This repository was archived by the owner on Aug 21, 2025. It is now read-only.
This repository was archived by the owner on Aug 21, 2025. It is now read-only.

sbt pactVerify fails with incomprehensive error #164

Description

@atsviatkou

I have very simple pact file with health check endpoints

{
  "provider" : {
    "name" : "service-api"
  },
  "interactions" : [
    {
      "request" : {
        "method" : "GET",
        "path" : "/readiness"
      },
      "description" : "Fetching readiness response",
      "response" : {
        "status" : 200,
        "body" : {
          "result" : {
            "data" : [
              {
                "status" : "UP"
              }
            ],
            "total_count" : 1
          },
          "status" : 200
        }
      },
      "providerState" : "readiness"
    },
    {
      "request" : {
        "method" : "GET",
        "path" : "/liveness"
      },
      "description" : "Fetching liveness response",
      "response" : {
        "status" : 200,
        "body" : {
          "result" : {
            "data" : [
              {
                "status" : "UP"
              }
            ],
            "total_count" : 1
          },
          "status" : 200
        }
      },
      "providerState" : "liveness"
    }
  ],
  "consumer" : {
    "name" : "HealthCheckConsumer"
  },
  "metadata" : {
    "pactSpecification" : {
      "version" : "2.0.0"
    },
    "scala-pact" : {
      "version" : "2.3.17"
    }
  }
}

When I run command

sbt "pactVerify --host localhost --protocol http --port 9000 --source target/pacts"

I got error:

Verifying against 'localhost' on port '9000' with a timeout of second(s). -------------------- Attempting to run provider state: liveness Provider state run failed -------------------- Error executing unknown provider state function with key: liveness [error] com.itv.scalapactcore.verifier.ProviderStateFailure [error] at com.itv.scalapactcore.verifier.Verifier$.$anonfun$doRequest$1(Verifier.scala:183) [error] at scala.Function1.$anonfun$andThen$1(Function1.scala:57) [error] at com.itv.scalapactcore.verifier.Verifier$.$anonfun$verify$14(Verifier.scala:84) [error] at scala.collection.immutable.List.map(List.scala:286) [error] at com.itv.scalapactcore.verifier.Verifier$.$anonfun$verify$13(Verifier.scala:77) [error] at scala.collection.immutable.List.map(List.scala:286) [error] at com.itv.scalapactcore.verifier.Verifier$.$anonfun$verify$1(Verifier.scala:74) [error] at com.itv.scalapactcore.verifier.Verifier$.$anonfun$verify$1$adapted(Verifier.scala:24) [error] at com.itv.scalapact.plugin.shared.ScalaPactVerifyCommand$.doPactVerify(ScalaPactVerifyCommand.scala:46) [error] at com.itv.scalapact.plugin.ScalaPactPlugin$.$anonfun$pactCheckTask$3(ScalaPactPlugin.scala:180) [error] at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23) [error] at sbt.std.Transform$$anon$3.$anonfun$apply$2(Transform.scala:46) [error] at sbt.std.Transform$$anon$4.work(Transform.scala:67) [error] at sbt.Execute.$anonfun$submit$2(Execute.scala:281) [error] at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:19) [error] at sbt.Execute.work(Execute.scala:290) [error] at sbt.Execute.$anonfun$submit$1(Execute.scala:281) [error] at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:178) [error] at sbt.CompletionService$$anon$2.call(CompletionService.scala:37) [error] at java.util.concurrent.FutureTask.run(FutureTask.java:266) [error] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [error] at java.util.concurrent.FutureTask.run(FutureTask.java:266) [error] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [error] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [error] at java.lang.Thread.run(Thread.java:748) [error] (pactVerify) com.itv.scalapactcore.verifier.ProviderStateFailure [error] Total time: 0 s, completed Aug 18, 2020 6:07:24 PM

I get this error even if I start pactStubber

sbt "pactStubber --host localhost --port 9000 --source target/pacts"

and run verification against subbed services by command

sbt "pactVerify --host localhost --protocol http --port 9000 --source target/pacts"

The Pact files are the same for pactVerify and pactStubber

Environment

Java=Oracle jdk 8
Scala=2.12.7
sbt=1.3.10

build.sbt:
...
lazy val scalaPactVersion = "2.3.17"
// scalapact
"com.itv" %% "scalapact-circe-0-13" % scalaPactVersion % Test withSources (),
"com.itv" %% "scalapact-http4s-0-18" % scalaPactVersion % Test withSources (),
"com.itv" %% "scalapact-scalatest" % scalaPactVersion % Test withSources ()

plugins.sbt:
...
addSbtPlugin("com.itv" % "sbt-scalapact" % "2.3.17")

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions