UNPKG

869 BJavaScriptView Raw
1'use strict'
2
3const { check } = require('./configuration')
4const dispatcher = require('./dispatcher')
5const EventEmitter = require('events')
6const Request = require('./mock/Request')
7const Response = require('./mock/Response')
8
9module.exports = (jsonConfiguration, mockedHandlers = {}) => {
10 const eventEmitter = new EventEmitter()
11 return check(jsonConfiguration)
12 .then(configuration => {
13 Object.assign(configuration.handlers, mockedHandlers)
14 const dispatch = dispatcher.bind(eventEmitter, configuration)
15 eventEmitter.request = (method, url, headers = {}, body = '') => {
16 const request = new Request(method, url, headers, body)
17 const response = new Response()
18 const finished = response.waitForFinish()
19 return dispatch(request, response)
20 .then(() => finished)
21 }
22 return eventEmitter
23 })
24}