Skip to content

zazuko/api-tuner

Repository files navigation

🎛️ API Tun3r 🎛️

API Tests Using n3 Rules

Prerequisites

Follow platform-specific instructions to install locally oor in a docker image.

To run api-tuner in GitHub workflow, you add this action to your jobs:

- uses: fabasoad/setup-prolog-action@v1

Installation

npm i api-tuner

Usage

> api-tuner --help
Usage: api-tuner [options] <path>...

Options:
  --silent           Less output
  --debug            Enable debug output
  --raw              Output raw results from eye
  --base-iri <iri>   Specify the base IRI for parsing the test case files
  --version          Show version information
  --help             Show this help message

Example

Create a test case file test.n3:

# test.n3
PREFIX : <http://example.com/>
PREFIX earl: <http://www.w3.org/ns/earl#>
PREFIX tuner: <https://api-tuner.described.at/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX log: <http://www.w3.org/2000/10/swap/log#>
PREFIX string: <http://www.w3.org/2000/10/swap/string#>

:getExampleDotCom
  a earl:TestCase ;
  rdfs:label "Simple GET test" ;
.

# Configure a request
:req
  a tuner:Request ;
  tuner:url <http://localhost:1080/example.com> ;
  tuner:method "GET" ;
.

{
  # Execute the request and capture its response
  :req tuner:response ?res .

  # Check the response status code and content type
  ?res tuner:http_code 200 ;
    tuner:header ( "content-type" "text/html" ) ;
  .

  # Check the body contains the work "Example"
  ?res!tuner:body string:contains "Example Domain" .
} => {
  # Use te EARL vocabulary to assert the test passed
  :getExampleDotCom earl:outcome earl:passed .
} .

Execute the test case:

api-tuner test.n3

More examples

TBD