GithubHelp home page GithubHelp logo

bfx-svc-test-helper's Introduction

bfx-svc-test-helper

Test helper to help with common day to day testing tasks.

Do you see yourself copy/pasting or doing the same setup code again?

Maybe it's time for a pull request or an issue! bfx-svc-test-helper is open for improvements and suggestions that make our day to day life as a team easier!

Usage in tests

The API supports Promise and callback based APIs. For a common example, see example.js.

You can also stub/mock Grenache services. See example-fauxgrenache.js for an example.

API

createGrapes([opts]) => Grapes

Creates an instance to manage Grapes for testing.

Arguments

  • opts is an object of additional options, there is able to pass:

    • ports is an array of object, for example:
    [{
      dht_port: 20002,
      dht_bootstrap: ['127.0.0.1:20001'],
      api_port: 40001
    }, {
      dht_port: 20001,
      dht_bootstrap: ['127.0.0.1:20002'],
      api_port: 30001
    }]

grapes.start([cb]) => Promise

Creates two "default Grapes" and calls the callback when the found each other.

grapes.onAnnounce([servicename], [cb]) => Promise

Calls the callback as soon as the service is announced on the network. Leave blank to match any announce.

grapes.stop([cb]) => Promise

Stops the Grapes.

createWorker(worker, [grapes]) => Worker

Creates an svc-js worker instance.

worker.start([cb]) => Promise

Starts the worker. If grapes were passed via createWorker, resolves as soon as the service name is announced on the network.

worker.stop([cb]) => Promise

Stops the worker.

createClient(worker) => Client

Sets up a typical PeerClient needed for most use cases. worker can be the name of the worker e.g. rest:util:net, or can be a <Worker> instance from createWorker

client.request(args, [opts], [cb]) => Promise

Makes a request to the configured worker.

client.stop([cb]) => Promise

Stops the client.

createFxGrenache(mocks, grapes|url, [opts]) => FauxGrenacheServer

Spins up Grenache service mocks.

opts.port - the port the server will listen to, defaults to 1557 opts.link - custom / own link, can be used for customised setups

Second parameter is either a Grapes instance or a http url pointing to the Grenache Grape HTTP Server.

fxgrenache.start([cb]) => Promise

Makes a request to the configured mockserver.

fxgrenache.stop([cb]) => Promise

Stops the server.

createServer(mocks, opts) => Server

Sets up a HTTP stub/mock server.

opts.port - the port the server will listen to. opts.debug - print the data sent from the client via post

opts.debug is useful when you are creating new mock definitions, especially if you use an external client library to send the request.

mocks can be a mock definition or an array of mock definitions.

The server can basically match, test and return anything on request/response, sent payloads etc. For convenience, there are shorthands that should suffice in most cases: example-server-simple.js.

For advanced route matching and testing of incoming requests, see example-server-advanced.js

server.start([cb]) => Promise

Makes a request to the configured mockserver.

server.stop([cb]) => Promise

Stops the server.

utils.getApi(worker) => Api

Returns the loc.api instance of the worker

utils.getGrapeApiPort(grapesWorker) => port

Gets the HTTP port of one of the Grape workers

Example:

const createGrapes = require('bfx-svc-test-helper/grapes')
const utils = require('bfx-svc-test-helper/utils')

const grapes = createGrapes()

;(async () => {
  await grapes.start()
  const port = utils.getGrapeApiPort(grapes)
  console.log(port) // 30001
})()

bfx-svc-test-helper's People

Contributors

prdn avatar robertkowalski avatar ezewer avatar face avatar zimkaru avatar grantfayvor avatar rbndg avatar vigan-abd avatar

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.