Skip to content

zeucxb/dymock

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

54 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Dymock 👽 💥

NPM version

A CLI to simplify the way you create mocks, dynamic REST APIs mocks. 💥

Dymock allows you to build a mock server in a simple way, without programing, focusing on configuration files.

It gives you the power to dynamically define witch response send back, based on params match.

Proposal

Create a tool that help us to unblock the mobile or frontend, API integration process. Making possible work in teams without API dependences at the development time.

So, Dymock should be a way to organize and define APIs contracts together (front/mobile | backend) and enable a simulation of the real API.

Summary

Basically, we allows you to build and run a server, just with config files, that can send back different responses based on the params received in the request.

Installation

We recommend install dymock globally using npm:

npm install -g dymock

Usage

By default dymock will try to find a .config file in a dir based on the request url.

e.g.

GET /user/login
DIR ./url/user/login/(.config.js OR .config.json)

The config file need to be named as .config and is responsible to define two things:

  • options: a list (array) of:

    • params: the params that we can match in. You don't need to set all the request, just params that you wanna match.
    • response: the object we'll return if match the params.
  • default: a default response if nothing match.

This config file can be a json or a js file, we recommend js to simplify the organization using require to import the response file.

e.g.

// JSON File

{
  "options": [
    {
      "params": {
        "cpf": 12345
      },
      "response": {
        "message": "client"
      }
    },
    {
      "params": {
        "cpf": 43210
      },
      "response": {
        "message": "not client"
      }
    },
    {
      "params": {}, // GET
      "response": {
        "message": "Login page"
      }
    }
  ],
  "default": {
    "error": {
      "message": "Invalid params"
    }
  }
}
// JS File

module.exports = {
  options: [
    {
      params: {
        cpf: 12345
      },
      response: require('./client.json'),
    },
    {
      params: {
        cpf: 43210
      },
      response: require('./not-client.json'),
    },
    {
      params: {}, // GET
      response: {
        message: 'Login page'
      }
    }
  ],
  default: {
    error: {
      message: 'Invalid params'
    }
  }
};

To run the server defining the port you can do:

The default port is: 3000

dymock -p 5000

You can get help running:

dymock -h

and the version:

dymock -v

Configuration

If you want to change the dir structure, you can define were each path will look for the config file.

To do that you need to create a .url-config.json file in your project root.

e.g.

[
  {
    "url": "user/login/password/forget",
    "path": "./remember-password"
  },
  {
    "url": "post/create/new",
    "path": "./post"
  }
]

Remember: If you create this config file, the default mechanism will be disabled.