Fake Server
Serve static responses, proxy responses and generate random responses from swagger specs.
npm install --global @ftes/fake-server
(oryarn global add @ftes/fake-server
)- Copy the config directory into your application directory.
- Adapt the
configuration.js
in the copiedconfig
directory to your needs. fake-server --configDir=<config-dir-from-step-2>
The main idea is to store the fake server configuration alongside your app. You can then run the global
fake-server
installation with this app-specific config to generate responses.The exported function in
<configDir>/configuration.js
is called with the express app
instance, the available middleware
and all command line options.Config Directory
Use./config
as a template. Copy it to your app's repository. It must contain a configuration.js
and data
folder. The structure of the data
folder is explained below.Data directory
Responses can be manually added as files. Also, proxied responses and swagger-generated ones are stored to this directory.Mapping requests to files
The file matching a request is expected to be present atconfig/data/<req.path>/<req.method>[.<req.statusCode>].json
.
If a segment of req.path
does not have a matching directory the *
directory at that level is used as fallback (if present).If several matching files are present (multiple status codes) then a random one of these is selected.
The order in which path segments are replaced with a
*
is shown in url-path-to-file.test.js
.The responses can be manually added. Also, proxied responses and swagger-generated ones are stored to this directory, if the
recordData: true
is passed to the middleware.Examples
| Request | Response | | ------------------------- | ----------------------------------- | |GET books
| /data/books/get.json
|
| GET books
| /data/books/get.404.json
|
| GET books/123
| /data/books/*/get.json
|
| POST books
| /data/books/post.json
|
| GET books/123/chapters
| /data/books/123/chapters/get.json
|Middleware
You can use the provided middleware in yourconfiguration.js
. This includes:Optionally, you can add a
pre-configuration.js
to your configuration directory.
This is invoked before any other middleware is registered on the express instance.
A potential use-case is sanitizing the request for the body-parser
middleware (see this bug).Docker
docker run -v <your-config-dir>:/usr/src/app/config -p 1337:1337 @ftes/fake-server