dorante

stub an API from a JSON schema

Usage no npm install needed!

<script type="module">
  import dorante from 'https://cdn.skypack.dev/dorante';
</script>

README

dorante Build Status

Dorante accepts a JSON schema and provides a stub API server based on it.

Install

npm install dorante --save

Usage

Server

Dorante will start a stub API server when you give it a JSON schema. You can then make requests to that server, and Dorante will do its best to act like a real version of the API that the schema represents.

var Dorante = require('dorante');
var get     = require('request').get;
var dorante;

get('https://api.example.com/schema', function(err, response, body) {
  var schema = JSON.parse(body);
  dorante = new Dorante(schema);

  dorante.startServer(3000).then(function() {
    var port = dorante.server.address().port;
    console.log('dorante is listening on port ' + port);
  });
});

Certain endpoints for the API can also be stubbed:

var appResponse = dorante.factory('app', { name: 'foo-bar'});
dorante.stub('GET', '/apps', [appResponse], 200);

And unstubbed:

dorante.unstub('GET', '/apps');

// or...

dorante.unstubAll();

Factories

Dorante can build factories from your JSON schema:

dorante.factory('account');

// {
//   created_at: '2012-01-01T12:00:00Z',
//   name      : 'example-user'
// }

dorante.factory('account', { name: 'custom-app-name' });

// {
//   created_at: '2012-01-01T12:00:00Z',
//   name      : 'custom-user-name'
// }

It'll also extend nested properties:

dorante.factory('app');

// {
//   created_at: '2012-01-01T12:00:00Z',
//   name      : 'example-app',
//   owner     : {
//     created_at: '2012-01-01T12:00:00Z',
//     name      : 'example-user'
//   }
// }

dorante.factory('app', { name: 'custom-app', { user: name: 'custom-user' } });

// {
//   created_at: '2012-01-01T12:00:00Z',
//   name      : 'custom-app',
//   owner     : {
//     created_at: '2012-01-01T12:00:00Z',
//     name      : 'custom-user'
//   }
// }