REST

# REST

Extends Helper

REST helper allows to send additional requests to the REST API during acceptance tests. Axios (opens new window) library is used to perform requests.

# Configuration

Type: object (opens new window)

# Properties

# 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 (opens new window) 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

# haveRequestHeaders

Sets request headers for all requests of this test

# Parameters

# sendDeleteRequest

Sends DELETE request to API.

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

# Parameters

Returns Promise (opens new window) 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 (opens new window) the headers object to be sent. By default, it is sent as an empty object

Returns Promise (opens new window) response

# sendGetRequest

Send GET request to REST API

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

# Parameters

Returns Promise (opens new window) 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

Returns Promise (opens new window) 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 (opens new window) the headers object to be sent. By default, it is sent as an empty object

Returns Promise (opens new window) 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

Returns Promise (opens new window) response

# setRequestTimeout

Set timeout for the request

I.setRequestTimeout(10000); // In milliseconds

# Parameters

Last Updated: 12/10/2024, 1:51:39 PM