Skip to content

PseudoRAM/Mocker-JS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Mocker

Mocker is a node app that allows APIs to be stood up and exposed in minutes to allow UI to be developed without the need of a functioning back end.

Usage

Install

npm install

Import in code

import Mocker from './bin/Mocker';
// Or commonjs
const Mocker = require("./bin/Mocker");

Start mocker server

npm start

Start server with hot reloading

npm run dev

Mocker Configuration

Create and start basic API

const mocker = new Mocker(); // Mocker Instance
mocker.get("/healthcheck", () => ({status: "success"})); // Get Request + Response
mocker.start(); // Start Mocker Server

Get Requests

mocker.get(url, callback(responseBody, allResponseData));

Post Requests

mocker.post(url, callback(responseBody, allResponseData));

Create mocker configuration from Swagger file

async function main() {
  await mocker.fromSwagger(swaggerFilePath);
  mocker.start();
}
main();

Mocker from swagger with custom end points

async function main() {
  await mocker.fromSwagger(swaggerFilePath);
  mocker.get("/healthcheck", () => ({status: "success"}));
  mocker.start();
}
main();

Start server on a custom port

const mocker = new Mocker();
mocker.init(portNumber);
mocker.start();

Bind data object to mocker instance

const mocker = new Mocker();
mocker.init(portNumber, dataObject);
mocker.start();

Accessing mocker data

const mocker = new Mocker();
mocker.init(4000, {
  users: {
    123: {
      account: ["Ben", "student"]
    }
  }
})

mocker.get("/name", (body, res) => ({ profile: mocker.data.users[res.query.uid].account}));
mocker.start();

Manipulating mocker data

const mocker = new Mocker();
mocker.init(4000, {
  users: {
    123: {
      account: ["Ben", "student"]
    }
  }
})

mocker.post("/change-name/:id", (body, res) => {
  mocker.data.users[res.params.id].account[0] = body.name
  return { status: "success", name: mocker.data.users[res.params.id].account[0]}
});

mocker.get("/name", (body, res) => ({ profile: mocker.data.users[res.query.uid].account}));

mocker.start();
Body for "/change-name/:id":
{
	"name":"jerry"
}
Response for "/change-name/:id":
{
  "status": "success",
  "name": "jerry"
}
Response for "/name?uid=123":
{
  "profile": [
    "jerry",
    "student"
  ]
}

Parameter and request variables

const mocker = new Mocker();
mocker.get("/user/:id/:name", (body, res) => ({id: res.params.id, name:`${res.params.name} (${res.query.nickname})`}));
mocker.start();
Result for "/user/123/ben?nickname=bob":
{
    id:"123", 
    name:"ben (bob)"
}

Error Handling

Set global error message
const mocker = new Mocker();
mocker.error = {error: "An issue occured"};
Result:
{
    error:"An issue occured"
}
Request specific errror
const mocker = new Mocker();
mocker.error = {error: "An issue occured"};
mocker.get("/healthcheck", () => ({status: "success"}), {status: "failure"});
Result when recieving an error on "/healthcheck":
{
    status:"failure"
}

About

Mock APIs using swagger files

Resources

Stars

Watchers

Forks