#diff #response #http #compare #api-response #api #data-integrity

app http-diff

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

3 releases

0.0.3 Mar 29, 2024
0.0.2 Mar 24, 2024
0.0.1 Mar 10, 2024

#3 in #data-integrity

Download history 133/week @ 2024-03-04 51/week @ 2024-03-11 99/week @ 2024-03-18 154/week @ 2024-03-25 76/week @ 2024-04-01

513 downloads per month

Unlicense OR MIT

6.5MB
4.5K SLoC

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.

Requirements

  • Latest rust installed when building from source

Installation

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

Autocomplete for arguments and man pages are included.

Developing

  • cargo run - for development
  • cargo test - to run tests
  • cargo build -r - to build in release mode

Dependencies

~19–38MB
~616K SLoC