Skip to content

Latest commit

 

History

History
239 lines (154 loc) · 5.29 KB

REST.md

File metadata and controls

239 lines (154 loc) · 5.29 KB
permalink editLink sidebar title
/helpers/REST
false
auto
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
      }
    }
  }
}

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<any> 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<any> 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<any> response

sendPatchRequest

Sends PATCH request to API.

I.sendPatchRequest('/api/users.json', { "email": "[email protected]" });

// To mask the payload in logs
I.sendPatchRequest('/api/users.json', secret({ "email": "[email protected]" }));

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<any> response

sendPostRequest

Sends POST request to API.

I.sendPostRequest('/api/users.json', { "email": "[email protected]" });

// To mask the payload in logs
I.sendPostRequest('/api/users.json', secret({ "email": "[email protected]" }));

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<any> response

sendPutRequest

Sends PUT request to API.

I.sendPutRequest('/api/users.json', { "email": "[email protected]" });

// To mask the payload in logs
I.sendPutRequest('/api/users.json', secret({ "email": "[email protected]" }));

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<any> response

setRequestTimeout

Set timeout for the request

I.setRequestTimeout(10000); // In milliseconds

Parameters

  • newTimeout number timeout in milliseconds