Skip to content

Pact V4 Tracking Issue #319

@YOU54F

Description

@YOU54F

We would like to implement Pact V3 Specification support for Pact Ruby

Current status

  • ⚠️ Unimplemented

Required V4 Features

  • Generators
  • Matchers
  • Multiple interaction types
    • Synchronous/HTTP
    • Synchronous/Message (not currently available in pact-message-ruby)
    • Asynchronous/Message
  • Pact Plugin support

Implementation notes

  • Strong consideration should be made for incorporating pact_ffi functionality (see Pact FFI Tracking Issue #317) rather than re-implementing in ruby

Validation

V4 Related Issues

Will be tagging and closing related v3/v4 issues, and linking to this meta issue

V4 Matchers

matcher Spec Version example configuration description
ArrayContains V4 { "match": "arrayContains", "variants": [...] } Checks if all the variants are present in an array.
StatusCode V4 { "match": "statusCode", "status": "success" } Matches the response status code.
NotEmpty V4 { "match": "notEmpty" } Value must be present and not empty (not null or the empty string)
Semver V4 { "match": "semver" } Value must be valid based on the semver specification
EachKey V4 { "match": "eachKey", "rules": [{"match": "regex", "regex": "\\$(\\.\\w+)+"}], "value": "$.test.one" } Allows defining matching rules to apply to the keys in a map
EachValue V4 { "match": "eachValue", "rules": [{"match": "regex", "regex": "\\$(\\.\\w+)+"}], "value": "$.test.one" } Allows defining matching rules to apply to the values in a collection. For maps, delgates to the Values matcher.

V4 Generators

matcher Spec Version example configuration description
ProviderState V4 {"expression": "/api/user/${id}", type": "ProviderState"} Generates a value that is looked up from the provider state context using the given expression
MockServerURL V4 {"regex": ".*\\/(orders\\/\\d+)$", "example": "http://localhost:1234/orders/5678", type": "MockServerURL"} Generates a URL with the mock server as the base URL.

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