text: // features/support/world.js
  import { setWorldConstructor } from 'cucumber'
  import request from 'request'
  const debug = require('debug')('ea:test:world')
  
  class CustomWorld {
    constructor () {
      // webFinger.feature
      this.lastResponses = []
      this.lastContentType = null
      this.lastInboxUrl = null
      this.lastActivity = null
      // object-article.feature
      this.statusCode = null
    }
    get (pathname) {
      return new Promise((resolve, reject) => {
        request(`http://localhost:4123/${this.replaceSlashes(pathname)}`, {
          headers: {
            'Accept': 'application/activity+json'
          }}, function (error, response, body) {
          if (!error) {
            debug(`get content-type = ${response.headers['content-type']}`)
            debug(`get body = ${JSON.stringify(typeof body === 'string' ? JSON.parse(body) : body, null, 2)}`)
            resolve({ lastResponse: body, lastContentType: response.headers['content-type'], statusCode: response.statusCode })
          } else {
            reject(error)
          }
        })
      })
    }
  
    replaceSlashes (pathname) {
      return pathname.replace(/^\/+/, '')
    }
  
    post (pathname, activity) {
      return new Promise((resolve, reject) => {
        request({
          url: `http://localhost:4123/${this.replaceSlashes(pathname)}`,
          method: 'POST',
          headers: {
            'Content-Type': 'application/activity+json'
          },
          body: activity
        }, function (error, response, body) {
          if (!error) {
            debug(`post response = ${response.headers['content-type']}`)
            resolve({ lastResponse: body, lastContentType: response.headers['content-type'], statusCode: response.statusCode })
          } else {
            reject(error)
          }
        })
      })
    }
  }
  
  setWorldConstructor(CustomWorld)
  