Giter VIP home page Giter VIP logo

dymock's Introduction

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.

dymock's People

Contributors

vnni avatar zeucxb avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

vnni

dymock's Issues

Refac the code

  • Refac core ([SOLVED] #17)
  • Upgrade code structure and organization ([SOLVED] #18)
  • Add tests ([ISSUE] #11)

Use a log system

  • Log messages with timestamp, method and URL.
  • Log request body and response with verbose mode;
  • Make logs easier to read using color libs like chalk.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.