mirror of
https://github.com/fleetdm/fleet
synced 2026-05-19 06:58:30 +00:00
* removed global api routes; using 'latest' instead of v1 for api routes * lint fixes * updated docs and tests * lint fixes * route fix * fixed routes breaking packs queries * revert test change |
||
|---|---|---|
| .. | ||
| account_mocks.js | ||
| config_mocks.js | ||
| create_request_mock.js | ||
| global_scheduled_query_mocks.js | ||
| host_mocks.js | ||
| index.js | ||
| invite_mocks.js | ||
| label_mocks.js | ||
| pack_mocks.js | ||
| query_mocks.js | ||
| README.md | ||
| scheduled_query_mocks.js | ||
| session_mocks.js | ||
| status_label_mocks.js | ||
| target_mocks.js | ||
| team_scheduled_query_mocks.js | ||
| user_mocks.js | ||
Fleet 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/latest/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, anddelete.
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
endpointoption.
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
- The mocked request is saved as a variable in order to assert that the request is made
- 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.