swagger-test: Testing of Swagger APIs

[ bsd3, library, program, testing ] [ Propose Tags ] [ Report a vulnerability ]

This package provides a library and executable tool that supports testing APIs specified with Swagger. It allows one to generate arbitrary Swagger requests for any given specification.


[Skip to Readme]

Modules

[Index]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 0.1.0, 0.2.1, 0.2.2, 0.2.3, 0.2.4, 0.2.5, 0.2.6, 0.2.7
Dependencies aeson, async, attoparsec, base (>=4.7 && <5), binary, blaze-html, bytestring, case-insensitive, containers, directory, filepath, http-client, http-client-tls, http-media, http-types, insert-ordered-containers, lens, optparse-applicative, QuickCheck (>=2.10 && <2.11), random, scientific, swagger-test, swagger2 (>=2.1.5 && <3), syb, text, time, unordered-containers, vector [details]
License BSD-3-Clause
Copyright 2017 Rodrigo Setti. All rights reserved
Author Rodrigo Setti
Maintainer rodrigosetti@gmail.com
Category Testing
Home page https://github.com/rodrigosetti/swagger-test
Bug tracker https://github.com/rodrigosetti/swagger-test/issues
Source repo head: git clone https://github.com/rodrigosetti/swagger-test
Uploaded by rodrigosetti at 2017-09-13T00:02:02Z
Distributions
Executables swagger-test
Downloads 4661 total (20 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2017-09-13 [all 1 reports]

Readme for swagger-test-0.2.7

[back to package description]

swagger-test

This is a tool for Property Based Testing of swagger APIs.

It basically allow you to approximate the computation of the following proposition:

Which translates to:

For all valid requests that can be derived from my Swagger schema, the API response obtained from executing that request is valid according to the same Swagger schema.

The tool exposes several ways to configure get value from parts of it, for example, you may be interested in getting just a random valid request from the schema (use the generate command), or validating if a given response (from a particular operation) is valid (use the validate command), or, run one sample instance of the full proposition, which picks a random request and validate it's resulting response (use the request command).

The generator random request values are reproducible by re-using the same seed value, or one can focus on a particular operation by specifying the operation id.

The tool also simplifies integration with other systems by allowing to configure output formats as standard HTTP message, JSON, or curl. Additionally, there are Haskell modules exposed as a library if one wants to build on top of it.

Command Line Interface

swagger-test supports three commands:

  • generate - generates a new random valid request from Swagger schema.
  • validate - validate a response to a given operation id, according to the schema.
  • request - generate and make the request, then validates the response (combines generate and validate).
  • report - high-level command that run several requests concurrently, and write HTML reports for multiple Swagger schemas. Useful for testing systems with many Swagger services in a CI server.
swagger-test --help
Property-based testing tool for Swagger APIs

Usage: swagger-test COMMAND
  Execute one of the commands available depending on your needs

Available options:
  -h,--help                Show this help text

Available commands:
  generate                 Generate a random request according to Schema
  validate                 Validate a response against Schema
  request                  Generate, make the request, and validate response
  report                   Run several tests and generate reports

Run `COMMAND --help` to get command specific options help

Sub-commands

Generate

swagger-test generate --help
Usage: swagger-test generate [-s|--schema FILENAME] [--seed N]
                             [-o|--operation ID]
                             [--request-format http|curl|none|json]
                             [-i|--info] [--size N]
  Generate a random request according to Schema

Available options:
  -s,--schema FILENAME     swagger JSON schema file to read
                           from (default: "swagger.json")
  --seed N                 specify the seed for the random generator
  -o,--operation ID        specify a operation id to test (default pick
                           randomly)
  --request-format http|curl|none|json
                           output format of the HTTP request (default: http)
  -i,--info                render information about seed and operation id
  --size N                 control the size of the generated
                           request (default: 30)
  -h,--help                Show this help text

Validate

swagger-test validate --help
Usage: swagger-test validate [-s|--schema FILENAME] [FILENAME]
                             (-o|--operation ID)
  Validate a response against Schema

Available options:
  -s,--schema FILENAME     swagger JSON schema file to read
                           from (default: "swagger.json")
  FILENAME                 http response file to read from (default=stdin)
  -o,--operation ID        specify a operation id to test (default pick
                           randomly)
  -h,--help                Show this help text

Request

swagger-test request --help
Usage: swagger-test request [-s|--schema FILENAME] [--seed N]
                            [-o|--operation ID]
                            [--request-format http|curl|none|json]
                            [--response-format http|json|none] [-i|--info]
                            [--size N]
  Generate, make the request, and validate response

Available options:
  -s,--schema FILENAME     swagger JSON schema file to read
                           from (default: "swagger.json")
  --seed N                 specify the seed for the random generator
  -o,--operation ID        specify a operation id to test (default pick
                           randomly)
  --request-format http|curl|none|json
                           output format of the HTTP request (default: none)
  --response-format http|json|none
                           output format of the HTTP request (default: none)
  -i,--info                render information about seed and operation id
  --size N                 control the size of the generated
                           request (default: 30)
  -h,--help                Show this help text

Report

swagger-test report --help
Usage: swagger-test report [--schemas PATH] [--reports PATH] [--tests N]
                           [--size N]
  Run several tests and generate reports

Available options:
  --schemas PATH           path to folder with swagger
                           schemas (default: "schemas")
  --reports PATH           path to folder to write the HTML
                           reports (default: "reports")
  --tests N                number of tests to run (default: 100)
  --size N                 control the size of the generated
                           request (default: 30)
  -h,--help                Show this help text