restify-mock

0.1.0-alpha.8 • Public • Published

restify-mock

A mock server for Restful API powered by restify (add OPTIONS method to all routes automatically to support Cross-origin resource sharing)

Get start

cd /path/to/project
npm init -y
npm i restify-mock

Usage

  • serve
const {MockServer} = require('restify-mock');
// or verbose mode, pass true to the first argument
const server = new MockServer();
 
// #loadAndServe(), load a json file
server.loadAndServe('/path/to/routes.json');
// or #serve(), load from js object
server.serve(routes);
  • config
const {MockServer, LoggingLevel} = require('restify-mock');
// not change #loggingLevel or #bodyFormatter after invoking the constructor
const server = new MockServer(LoggingLevel.HEADERS,
        (statusCode, message, requestStruct, data) => {
    if (statusCode >= 200 && statusCode < 300){
        return {
            success: true,
            message: message,
            data: data,
        };
    } else {
        return {
            success: false,
            message: message,
        };
    }
});   
server.baseUrl = '/api/v1';
// just a example, use addHttpBasicInterceptor(username, password) instead of
server.addRoutedInterceptor((requestStruct, responseAction) => {
    let token = Buffer.from(`Basic ${username}:${password}`).toString('base64');
    let authorization = requestStruct.headers['authorization'];
    if (!authorization) authorization = requestStruct.headers['Authorization'];
    let authorized = authorization === token;
    if (authorized) return;
    responseAction.header('WWW-Authenticate', 'Basic realm="Restricted"');
    return {
        code: 401,
        message: "HTTP Basic Authorization Required",
        data: undefined,
    };
});

routes.json

[
  {
    "path": "/mock",
    "method": "put",
    "params": {
      "s1": "params, query or request",
      "n1": 0,
      "b1": false
    },
    "response": {
      "ps1": "this is a description",
      "pn1": "0; field type is number"
    }
  },
  {
    "path": "/",
    "method": "post",
    "query": {
      "s1": "",
      "n1": 0,
      "b1": false
    },
    "request": {
      "qs1": "",
      "qn1": "0;number type"
    },
    "response": {
      "ps1": "response string",
      "pn1": "0;this is a description",
      "po1": {
        "po1s1": "mock server",
        "po1n1": "1;node",
        "po1n2": -1
      },
      "pa1": [
        {
          "pa11o1": {},
          "pa11n1": 2,
          "pa11n2": "2",
          "pa11b1": false
        },
        {
          "pa12n1": 1024
        },
        "1024;"
      ]
    }
  }
]

Readme

Keywords

Package Sidebar

Install

npm i restify-mock

Weekly Downloads

2

Version

0.1.0-alpha.8

License

MIT

Unpacked Size

56.2 kB

Total Files

22

Last publish

Collaborators

  • tuke