hapi-mock
Hapi plugin for mocking endpoints.
Install
npm install hapi-mock
Purpose
This plugin provides a simple way to mock your HAPI endpoints.
It is experimental at this point of time.
Usage
Register the plugin with Hapi server like this:
const Hapi = require('@hapi/hapi');
const hapiMock = require('hapi-mock');
const server = new Hapi.Server({
port: 3000,
});
const mock = {
plugin: hapiMock,
options: {
baseDir: Path.join(__dirname, 'mocks'),
},
};
const provision = async () => {
await server.register([mock]);
await server.start();
};
provision();
Your route configuration may look like this:
server.route({
method: 'GET',
path: '/example/{id}',
options: {
plugins: {
'hapi-mock': {
file: './cases',
},
},
},
handler: async (request, h) => {
}
});
The file
option refers to a JS module (e.g., cases.js
) containing your mock cases, e.g.,
module.exports = [{
condition: 'params.id == "4711"',
code: 418,
}, {
condition: 'query.id == "foo"',
type: 'application/json',
body: {
bar: true,
},
}, {
condition: 'headers["x-mock-case"] == 13',
code: 200,
type: 'text/plain',
body: 'case 13',
}];
condition
may refer to HAPI's route parameters headers
, params
, query
, payload
, method
(lowercase), and path
.
The result parameters of a mock case can be code
, type
, and body
.
And finally, you need to set the HTTP header x-hapi-mock: true
to a request to have a route use mocking rather than its real handler implementation.
You don't want to use this plug-in in production, of course.
Have fun.