http-diff

Crates.iohttp-diff
lib.rshttp-diff
version0.0.5
sourcesrc
created_at2024-03-10 08:56:05.764651
updated_at2024-05-23 12:39:15.545555
descriptionhttp-diff - CLI tool to verify consistency across web server versions. Ideal for large-scale refactors, sanity tests and maintaining data integrity across versions.
homepagehttps://github.com/syte-ai/http-diff
repositoryhttps://github.com/syte-ai/http-diff
max_upload_size
id1168583
size6,727,187
Yoni Samoded (w00fmeow)

documentation

https://github.com/syte-ai/http-diff

README

http-diff

CLI tool to verify consistency across web server versions. Ideal for large-scale refactors, sanity tests and maintaining data integrity across versions.

Archives of precompiled binaries for http-diff are available for macOS and Linux on every release.

Tests Crates.io

Dual-licensed under MIT or the UNLICENSE.

UI demo

The tool works by looking at the configuration file that can be specified by --configuration argument.

http-diff --configuration=./configuration.json

  • ./configuration.json - is the default value for this argument so it can be omitted.

Config example:

{
  "domains": ["http://domain-a.com", "http://stage.domain-a.com"],
  "endpoints": [
    {
      "endpoint": "/health"
    },
    {
      "endpoint": "/api/v1/users/<userId>"
    }
  ],
  "variables": {
    "userId": [123, 444]
  }
}

this config will be translated to following:

  • GET request will be issued to http://domain-a.com/health and response be compared to response of GET http://stage.domain-a.com/health.

  • Next endpoint /api/v1/users/<userId> has variable defined in it - <userId>. Anything within the brackets considered a variable name. In this case - userId. Variable then is looked up in the global variables property. In this case userId has two values: 123 and 444. This will be mapped to following requests:

    • GET http://domain-a.com/users/123 and compared with response from GET http://stage.domain-a.com/users/123.
    • GET http://domain-a.com/users/444 and compared with GET http://stage.domain-a.com/users/444.

All configuration options can be found here.

Installation

Archives are available on every release as well as .deb files for Linux.

Autocomplete for arguments and man pages are included.

(brew tap) Apple & Linux

Tap the repository by running this command:

brew tap syte-ai/http-diff https://github.com/syte-ai/http-diff

and install the package:

brew install http-diff

.deb file for Linux

Download .deb file from latest release and install it using one of the commands:

sudo apt install ./path/to/http-diff.deb

or

sudo dpkg -i ./path/to/http-diff.deb

Developing

  • cargo run - for development
  • cargo test - to run tests
  • cargo build -r - to build in release mode
Commit count: 29

cargo fmt