moxai
v1.1.2
Published
Moxai (mɒks-eɪ) - Express Middleware for API mocks using Open API Initiative (OAI)
Downloads
17
Maintainers
Readme
moxai
Moxai (mɒks-eɪ) - Express Middleware for API mocks using Open API Initiative (OAI)
Installation
This is a Node.js module available through the npm registry. Installation is done using the npm install
command.
npm install moxai --save
Usage
Setup as standard third-party middleware which requires Express and mounting on a route, such as '/mocks'.
var express = require('express');
var moxai = require('moxai');
var app = express();
app.use('/mocks', moxai());
app.listen(8000, function () {
console.log('Express web server with Moxai listening on port 8000');
})
Options
Options are passed as an object to moxai and all arguments are optional.
var opts = {
'dir': 'mocks',
'file': 'api',
'random': false
};
app.use('/mocks', moxai(opts));
| Option | Type | Default | Argument | Description | | ---- | ---- | ---- | ---- | ---- | | dir | string | mocks | optional | The directory location of OAI files relative to parent directory. | | file | string | api | optional | The name of OAI JSON file. Must be located within directory location. | | random | boolean | false | optional | Use random output for regex values in OAI JSON file. |
dir
The directory where the files are stored. This is relative to the parent directory and the default is mocks. In most applications, simply add a mocks directory in the root of the application.
/
├── mocks/
├── app.js|index.js
└── package.json
file
The file of the OAI (formerly Swagger) JSON file to use. This is compatible with OAI version 2.0. This must have a .json extension and the default is api, therefore the default file is api.json. The file must be in the designated directory, which defaults to mocks.
/
├── mocks/
└── api.json
├── app.js|index.js
└── package.json
Mock output should be in the response examples section of the OAI JSON. This should be the exact JSON output expected by the mock API request.
{
"swagger": "2.0",
"paths": {
"/api/": {
"get": {
"responses": {
"200": {
"examples": {
"application/json": {
"key": "value"
}
}
}
}
}
}
}
}
random
Randomizes the output from the OAI JSON using regular expressions. Only randomizes values that are valid regex and are enclosed in forward slashes (/). Back slashes (\) must be escaped by using double backslash (\\). Ignores any flags such as /i (ignore case) and /g (global). If error with regex, then will output original string.
{
"swagger": "2.0",
"paths": {
"/api/": {
"get": {
"responses": {
"200": {
"examples": {
"application/json": {
"alphanumeric": "/^[a-z0-9]{2,10}$/",
"titlecase": "/^[A-Z][a-z]{4,16}$/",
"phonenumber": "/^[1-9]\\d{2}-\\d{3}-\\d{4}/",
"integer": "/[0-9]{1,7}/",
"boolean": "/true|false/",
"ignore": "/[[[ignore/"
}
}
}
}
}
}
}
}
Testing
Scripts
npm test
to run Mocha unit tests.npm run coverage
for Istanbul code coverage. Results in/coverage
folder.npm run lint
for ESLint static code analysis. Results in/lint
folder.npm run docs
to run JSDoc code documentation. Results in/docs
folder
Test Data
- Files: Test JSON files are stored in test/mocks directory
Dependencies
Modules
Application
Package
Dependency Trackers
Contact
Point of Contact
You can report issues and submit questions by opening a new Issue in GitHub.
Notifications
You can Watch this repo to receive notifications from GitHub when a new issue is posted, when an existing issue’s status is updated, and when a pull request is created.
Contributing
See CONTRIBUTING for additional information.
Acknowledgements
This open source project was developed for the U.S. Forest Service ePermit API project under the General Services Administration (GSA) Technology Transformation Service (TTS) 18F Agile Delivery Services Blanket Purchase Agreement (Agile BPA). Moxai is a testing dependency for the ePermit API which used this package as a temporary, placeholder mock API. Moxai is published as an independent npm package that can be used with any Express application.
License
This project is in the worldwide public domain. As stated in CONTRIBUTING:
This project is in the public domain within the United States, and copyright and related rights in the work worldwide are waived through the CC0 1.0 Universal public domain dedication.
All contributions to this project will be released under the CC0 dedication. By submitting a pull request, you are agreeing to comply with this waiver of copyright interest.