You're Invited:Meet the Socket Team at BlackHat and DEF CON in Las Vegas, Aug 7-8.RSVP
Socket
Socket
Sign inDemoInstall

mock-cmdr

Package Overview
Dependencies
1
Maintainers
1
Versions
4
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

mock-cmdr

Wiremock Client


Version published
Maintainers
1
Created

Changelog

Source

1.1.0 - 2023-12-03

Removed

  • axios is now a peer dependency

Readme

Source

Mock Commander

Wiremock client for Node JS which promotes separation of dynamic mocking commands from test code logic.

Installation

npm install mock-cmdr

Documentation

https://mock-cmdr.js.org/

Usage

Mock Commander can be simply used as a Wiremock rest API client:

const mockCmdr = require('mock-cmdr');
mockCmdr.init({ baseUrl: 'http://wiremock' });
mockCmdr.createMapping({
  request: {
    method: 'GET',
    urlPath: '/user/1',
  },
  response: {
    jsonBody: {
      id: 1
    }
  },
});

However, Mock Commander's real utility comes from defining templated Wiremock commands. If the mapping definintion above is moved into ${__dirname}/mock/stub/get-user-by-id.js then the same create mapping call can be made by:

const user = { id: 1 };
await mockCmdr.stub.getUserById(user);

Commands are loaded by providing the cmdDir option to mockCmdr.init():

const path = require('path');
const mockCmdr = require('mock-cmdr');
mockCmdr.init({
  baseUrl: wiremockBaseUrl,
  cmdDir: path.resolve(__dirname, 'mock'),
});

See the Mock Commander Cucumber Test Suite for a full example demonstrating how to define and use templated Wiremock commands with Cucumber.

Command Dir Layout

The following example demonstrates the layout of a command dir:

[cmdDir]
  |- stub
  |  |- user
  |     |- create.js
  |     |- get-by-id.js
  |
  |- find
     |- user
        |- create-by-email.js

The resulting commands after calling mockCmdr.init({ cmdDir }) will be:

mockCmdr.stub.user.create()
mockCmdr.stub.user.getById()
mockCmdr.find.user.createByEmail()

Example Stub Command

/**
 * @returns {WiremockStubMapping}
 */
module.exports = function(user) {
  return {
    request: {
      method: 'GET',
      urlPath: `/user/${user.id}`,
    },
    response: {
      jsonBody: user.toApiModel(),
    },
  };
};

Example Find Command

/**
 * @returns {WiremockRequestCriteria}
 */
module.exports = function(user) {
  return {
    method: 'GET',
    urlPath: `/user/${user.id}`,
  };
};

API Summary

mock-cmdr module

.init(options)

Initialize the Mock Commander session. If cmdDir is specified then loadCmds() will also be called.

options:

  • baseUrl (string) - the mock server base URL, eg: http://wiremock:8080.
  • cmdDir (string) - the dir to load commands from.
.defineCmd(command)

Define a templated mocking command that will be available via mockCmdr.{type}.{path} or mockCmdr.{type}.{name}. When the command is invoked then createMapping() or findRequests() will be called with the output of the command's template function.

command:

  • type (string) - "stub" or "find".
  • path (string[]) - the path the command will be available at within mockCmdr.stub or mockCmdr.find.
  • name (string) - shorthand for { path: [ name ] }
  • template (function) - A function that returns either a "find requests" criteria or a "stub mapping" definition.
.loadCmds(dir)

Load all "find" and "stub" mocking commands by searching recursively within baseDir.

The discovered commands will be passed to defineCmd() using the camel cased file names as the command path. Modules found within a "find" directory are treated as "find" commands and modules found within a "stub" directory are treated as "stub" commands. Modules not within a "find" or "stub" directory are ignored.

Any intermediate directories other than "find" and "stub" will be treated as namespaces. Namespaces can be arbitrarily deep and are also camel cased. The "find" and "stub" dirs are excluded from the namespace and need not appear at the top level allowing related commands to be grouped appropriately.

.createMapping(mapping)

async

Call the Wiremock Stub Mapping API.

.findRequests(criteria)

async

Call the Wiremock Find Requests API.

.stub

Access to "stub" commands registered via mockCmdr.defineCmd().

.find

Access to "find" commands registered via mockCmdr.defineCmd().

.cleanUp()

async

Remove stub mappings from the Wiremock server that have been created by the current session.

Copyright 2020 Nathan Jones. Licensed under the Apache License, Version 2.0.

FAQs

Package last updated on 03 Dec 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc