Skip to content

Latest commit

 

History

History
276 lines (188 loc) · 6.16 KB

File metadata and controls

276 lines (188 loc) · 6.16 KB
permalink /helpers/REST
editLink false
sidebar auto
title REST

REST

Extends Helper

REST helper allows to send additional requests to the REST API during acceptance tests. Axios library is used to perform requests.

Configuration

Type: object

Properties

  • endpoint string? API base URL
  • prettyPrintJson boolean? pretty print json for response/request on console logs.
  • printCurl boolean? print cURL request on console logs. False by default.
  • timeout number? timeout for requests in milliseconds. 10000ms by default.
  • defaultHeaders object? a list of default headers.
  • httpAgent object? create an agent with SSL certificate
  • onRequest function? an async function which can update request object.
  • onResponse function? an async function which can update response object.
  • maxUploadFileSize number? set the max content file size in MB when performing api calls.

Example

{
  helpers: {
    REST: {
      endpoint: 'http://site.com/api',
      prettyPrintJson: true,
      onRequest: (request) => {
        request.headers.auth = '123';
      }
    }
  }
}

With httpAgent

{
  helpers: {
    REST: {
      endpoint: 'http://site.com/api',
      prettyPrintJson: true,
      httpAgent: {
         key: fs.readFileSync(__dirname + '/path/to/keyfile.key'),
         cert: fs.readFileSync(__dirname + '/path/to/certfile.cert'),
         rejectUnauthorized: false,
         keepAlive: true
      }
    }
  }
}
{
  helpers: {
    REST: {
      endpoint: 'http://site.com/api',
      prettyPrintJson: true,
      httpAgent: {
         ca: fs.readFileSync(__dirname + '/path/to/ca.pem'),
         rejectUnauthorized: false,
         keepAlive: true
      }
    }
  }
}

Access From Helpers

Send REST requests by accessing _executeRequest method:

this.helpers['REST']._executeRequest({
  url,
  data,
})

Methods

Parameters

  • config

_executeRequest

Executes axios request

Parameters

  • request any

Returns Promise response

_url

Generates url based on format sent (takes endpoint + url if latter lacks 'http')

Parameters

  • url any

amBearerAuthenticated

Adds a header for Bearer authentication

// we use secret function to hide token from logs
I.amBearerAuthenticated(secret('heregoestoken'))

Parameters

  • accessToken (string | CodeceptJS.Secret) Bearer access token

haveRequestHeaders

Sets request headers for all requests of this test

Parameters

sendDeleteRequest

Sends DELETE request to API.

I.sendDeleteRequest('/api/users/1')

Parameters

  • url any
  • headers object the headers object to be sent. By default, it is sent as an empty object

Returns Promise response

sendDeleteRequestWithPayload

Sends DELETE request to API with payload.

I.sendDeleteRequestWithPayload('/api/users/1', { author: 'john' })

Parameters

  • url any
  • payload any the payload to be sent. By default it is sent as an empty object
  • headers object the headers object to be sent. By default, it is sent as an empty object

Returns Promise response

sendGetRequest

Send GET request to REST API

I.sendGetRequest('/api/users.json')

Parameters

  • url any
  • headers object the headers object to be sent. By default, it is sent as an empty object

Returns Promise response

sendHeadRequest

Send HEAD request to REST API

I.sendHeadRequest('/api/users.json')

Parameters

  • url any
  • headers object the headers object to be sent. By default, it is sent as an empty object

Returns Promise response

sendPatchRequest

Sends PATCH request to API.

I.sendPatchRequest('/api/users.json', { email: 'user@user.com' })

// To mask the payload in logs
I.sendPatchRequest('/api/users.json', secret({ email: 'user@user.com' }))

Parameters

  • url string
  • payload any the payload to be sent. By default it is sent as an empty object
  • headers object the headers object to be sent. By default it is sent as an empty object

Returns Promise response

sendPostRequest

Sends POST request to API.

I.sendPostRequest('/api/users.json', { email: 'user@user.com' })

// To mask the payload in logs
I.sendPostRequest('/api/users.json', secret({ email: 'user@user.com' }))

Parameters

  • url any
  • payload any the payload to be sent. By default, it is sent as an empty object
  • headers object the headers object to be sent. By default, it is sent as an empty object

Returns Promise response

sendPutRequest

Sends PUT request to API.

I.sendPutRequest('/api/users.json', { email: 'user@user.com' })

// To mask the payload in logs
I.sendPutRequest('/api/users.json', secret({ email: 'user@user.com' }))

Parameters

  • url string
  • payload any the payload to be sent. By default it is sent as an empty object
  • headers object the headers object to be sent. By default it is sent as an empty object

Returns Promise response

setRequestTimeout

Set timeout for the request

I.setRequestTimeout(10000) // In milliseconds

Parameters

  • newTimeout number timeout in milliseconds