fleet/frontend/test/mocks
Tomas Touceda 5653f1e868
Update URLs from team to teams, add tests for policy auth (#2228)
* Update URLs from team to teams, add tests for policy auth

* Fix test

* Address review comments
2021-09-27 14:02:11 -03:00
..
account_mocks.js Rename main frontend directory (#977) 2021-06-06 17:30:54 -07:00
config_mocks.js add prettier and have it format all fleet application code (#625) 2021-04-12 14:32:25 +01:00
create_request_mock.js add prettier and have it format all fleet application code (#625) 2021-04-12 14:32:25 +01:00
global_scheduled_query_mocks.js Schedule Page - New Feature! (#1333) 2021-07-26 14:41:36 -04:00
host_mocks.js FleetUI: Update column sort options (#1680) 2021-08-16 16:02:00 -05:00
index.js Team Schedules - New Feature! (#1550) 2021-08-05 10:48:00 -04:00
invite_mocks.js Merge master into teams 2021-04-14 17:52:15 +01:00
label_mocks.js add prettier and have it format all fleet application code (#625) 2021-04-12 14:32:25 +01:00
pack_mocks.js add prettier and have it format all fleet application code (#625) 2021-04-12 14:32:25 +01:00
query_mocks.js add prettier and have it format all fleet application code (#625) 2021-04-12 14:32:25 +01:00
README.md Rename main frontend directory (#977) 2021-06-06 17:30:54 -07:00
scheduled_query_mocks.js add prettier and have it format all fleet application code (#625) 2021-04-12 14:32:25 +01:00
session_mocks.js add prettier and have it format all fleet application code (#625) 2021-04-12 14:32:25 +01:00
status_label_mocks.js add prettier and have it format all fleet application code (#625) 2021-04-12 14:32:25 +01:00
target_mocks.js Query Edit/Run: Conditional select targets dropdown (#923) 2021-06-04 15:13:59 -04:00
team_scheduled_query_mocks.js Update URLs from team to teams, add tests for policy auth (#2228) 2021-09-27 14:02:11 -03:00
user_mocks.js Merge master into teams 2021-04-14 17:52:15 +01:00

Kolide Request Mocks

Request mocks are used to intercept API requests when running tests. Requests are mocked to simulate valid and invalid requests. The naming convention is similar to the API client entity CRUD methods.

Using Mocks

// import the mocks you want in the test file
import queryMocks from 'test/mocks/query_mocks';

// mock the API request before making the API call
queryMocks.load.valid(bearerToken, queryID); // valid request
queryMocks.load.invalid(bearerToken, queryID); // invalid request

Each entity with mocked requests has a dedicated file in this directory containing the mocks for the entity, such as queryMocks in the example above. If requests need to be mocked for multiple entities, consider importing all mocks:

import mocks from 'test/mocks';

mocks.queries.load.valid(bearerToken, queryID);
mocks.packs.create.valid(bearerToken, params);

Creating Mocks

Mocks are created using the createRequestMock function.

The createRequestMock function returns a mocked request using the nock npm package.

Example:

// in /frontend/test/mocks/query_mocks.js
import createRequestMock from 'test/mocks/create_request_mock';
import { queryStub } from 'test/stubs';

const queryMocks = {
  load: {
    valid: (bearerToken, queryID) => {
      return createRequestMock({
        bearerToken,
        endpoint: `/api/v1/fleet/queries/${queryID}`,
        method: 'get',
        response: { query: { ...queryStub, id: queryID } },
        responseStatus: 200,
      });
    },
  },
}

export default queryMocks;

createRequestMock takes an options hash with the following options:

bearerToken

  • Type: String
  • Required?: False
  • Default: None
  • Purpose: Specifying the bearer token sets the Authorization header of the request and is often used when mocking authorized requests to the API.

endpoint

  • Type: String
  • Required?: True
  • Default: None
  • Purpose: The required endpoint option is the relative pathname of the request.

method

  • Type: String (get | post | patch | delete)
  • Required?: True
  • Default: None
  • Purpose: This string is the lower-cased request method. Options are get, post, patch, and delete.

params

  • Type: Object
  • Required?: False
  • Default: None
  • Purpose: This JS Object is for the parameters sent with a request. If the parameters are URL parameters, such as in a GET request, add the parameters to the endpoint option.

response

  • Type: Object
  • Required?: True
  • Default: None
  • Purpose: This JS Object represents the response from the API

responseStatus

  • Type: Number
  • Required?: False
  • Default: 200
  • Purpose: This value is used for the response status of the API call.

Examples

API Request

  • The mocked request is saved as a variable in order to assert that the request is made

Component Test

  • The request is not saved but we want to prevent attempting to make an API request.
  • There is no API to hit in tests so attempting to make an API call with result in warnings in the test output.