/restfuzz

REST API test utility

Primary LanguagePythonApache License 2.0Apache-2.0

RestFuzz - an API tester
========================

Features
--------
* Support REST json based API
* Requires a description of methods inputs/outputs
* Randomly generate inputs
* Outputs/inputs of type resources are collected and reused
* Health monitoring extract traceback from logs

Usage example
-------------

This unit test output shows example of randomly generated api call. A fake API is used, no actual request is performed::

  $ python restfuzz/tests/test_fuzzer.py

A demo server and description is also included::

  $ python demo/demo_server.py
  $ restfuzz --api demo/demo.yaml

A typical fuzzing session goes like this:

  $ ./tools/packstack_prep.sh
  $ restfuzz --api ./api/network.yaml --health ./tools/health_localhost.py --db ./neutron_$(date '+%s')
  ... ^C
  $ ./tools/read_dump.py --stats ./neutron_*
  # Based on the method that always failed, or weird return code
  $ ./tools/read_dump.py --name faulty_method ./samples/neutron_*
  # Returns all the call from this method

  # Looks for inconsistent cloud behavior using another account and then
  $ ./tools/read_dump.py ./samples/* | grep "bad_uuid"


Todo
----
* includes https://github.com/minimaxir/big-list-of-naughty-strings


Bugs reported
-------------

* https://bugs.launchpad.net/neutron/+bug/1471957
* https://bugs.launchpad.net/neutron/+bug/1471959
* https://bugs.launchpad.net/neutron/+bug/1471966
* https://bugs.launchpad.net/neutron/+bug/1472242
* https://bugs.launchpad.net/neutron/+bug/1472243

* https://bugs.launchpad.net/designate/+bug/1473210
* https://bugs.launchpad.net/designate/+bug/1473212
* https://bugs.launchpad.net/designate/+bug/1473518

* https://bugs.launchpad.net/neutron/+bug/1486565