KATT player is a mock HTTP server that replies with HTTP responses based on KATT blueprints.
CoffeeScript
Switch branches/tags
Nothing to show
Latest commit 0aabe73 Sep 12, 2013 @uliedberg uliedberg Merge pull request #4 from isakb/basic-engine
Add a basic engine
Permalink
Failed to load latest commit information.
.coffee.mk @ d9c80f9
bin
lib
src
test
.coffeelint.json
.gitignore
.gitmodules
.npmignore
.travis.yml
AUTHORS
LICENSE
Makefile
NOTICE
NOTICE2
README.md
custom.mk
index.coffee
package.json
testem.yml

README.md

KATT player Build Status

KATT player is a mock HTTP server that replies with HTTP responses based on KATT blueprints.

KATT blueprints describe a scenario as a sequence of HTTP requests and responses (the pair is called an HTTP transaction).

KATT player instantiates an HTTP server that loads these scenarios and, given a reference to one of them, it can respond to a HTTP request with the HTTP response prescribed by the referenced scenario.

The HTTP response is decided by a KATT player engine. Two engines are built-in: one that validates the incoming requests against the blueprint (linear-check), and one that doesn't and just blindly replies with the consecutive response (linear). The former is the default.

Built-in engines

The basic engine

  • the basic engine is a minimal engine with some basic functionality for loading scenarios / blueprints. It is supposed to be extended by other engines.

The linear-check and linear engines

These two engines will look at

  • the request's cookie katt_scenario to decide which scenario to focus on (e.g. basename of the scenario)
  • the request's cookie katt_transaction to decide the request to match against and which response is suitable (defaults to 0)

Both engines will automatically set a response header Set-Cookie in order to advance the transaction count.

The linear-check engine can have the validation turned off temporarily via a request header X-KATT-Dont-Validate.

You can see an example here.

Custom engines

Custom engines may be implemented in order to add support for dealing with KATT recall structures, for example.

There are no restrictions or requirements at all.

Install

# NPM distribution
npm install katt-player

# GIT source
git clone --recurse-submodules [THIS_REPO_URL]
npm install

Usage

katt-player [--engine=linear] [--port=1337] FOLDER      # default engine is linear, port is 1337
katt-player [--engine=linear] [--port=1337] FILE1 FILE2 # accepts blueprints as well
katt-player --engine=path/to/engine.js FOLDER           # use a custom engine
NODE_ENV=development katt-player FOLDER                 # enable logging to console, instead of console.log
kattPlayer = require 'katt-player'
app = kattPlayer kattPlayer.engines.linear
app.load 'FOLDER', 'FILE1', 'FILE2'
app.listen 1337

License

Apache 2.0