Skip to content

valerio-iachini/pact_consumer_ex

Repository files navigation

pact_consumer_ex

pact_consumer_ex is an Elixir library that provides Native Implemented Function (NIF) bindings to the pact_consumer Rust library. It leverages Rustler to expose the Rust functions while maintaining the same look and feel as the original library.

Installation

Add to your mix.exs dependencies:

def deps do
  [
    {:pact_consumer_ex, "~> 0.2.0", only: [:test]}
  ]
end

Then run:

mix deps.get

Usage

For example usage of the library, refer to the test/pact_builder_test.exs file, which contains practical examples demonstrating how to utilize the exposed NIF functions.

Configuration

This library uses the same environment variables as the Rust pact_consumer library (Pact test DSL for writing consumer pact tests in Rust - Pact Docs):

  • Changing the output directory:
    By default, the pact files will be written to target/pacts. To change this, set the environment variable PACT_OUTPUT_DIR.

  • Forcing pact files to be overwritten:
    Pacts are merged with existing pact files when written. To change this behaviour so that the files are always overwritten, set the environment variable PACT_OVERWRITE to true.

Current Status

Currently, pact_consumer_ex supports:

  • Synchronous HTTP interactions.
  • Asynchronous message interactions.

Planned future enhancements include:

  • Support for synchronous message interactions.
  • Integration with Pact plugins.

Contributing

Contributions are welcome! Please open issues or submit pull requests for any enhancements or bug fixes.

License

This project is licensed under the MIT License. See the LICENSE file for details.

About

Elixir NIF bindings for the Rust-based pact_consumer library, enabling contract testing via Rustler.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •