blob: ece48eddf9ed885e2a89e496eb96f47e305e8eb2 [file] [log] [blame] [edit]
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
export function capabilitiesStub(requestPath, capabilitiesArray) {
// sample of capabilitiesArray: ['read', 'update']
return {
[requestPath]: capabilitiesArray,
capabilities: capabilitiesArray,
request_id: '40f7e44d-af5c-9b60-bd20-df72eb17e294',
lease_id: '',
renewable: false,
lease_duration: 0,
data: {
[requestPath]: capabilitiesArray,
capabilities: capabilitiesArray,
},
wrap_info: null,
warnings: null,
auth: null,
};
}
export const noopStub = (response) => {
return function () {
return [response, { 'Content-Type': 'application/json' }, JSON.stringify({})];
};
};
/**
* allowAllCapabilitiesStub mocks the response from capabilities-self
* that allows the user to do any action (root user)
* Example usage assuming setupMirage(hooks) was called:
* this.server.post('/sys/capabilities-self', allowAllCapabilitiesStub(['read']));
*/
export function allowAllCapabilitiesStub(capabilitiesList = ['root']) {
return function (_, { requestBody }) {
const { paths } = JSON.parse(requestBody);
const specificCapabilities = paths.reduce((obj, path) => {
return {
...obj,
[path]: capabilitiesList,
};
}, {});
return {
...specificCapabilities,
capabilities: capabilitiesList,
request_id: 'mirage-795dc9e1-0321-9ac6-71fc',
lease_id: '',
renewable: false,
lease_duration: 0,
data: { ...specificCapabilities, capabilities: capabilitiesList },
wrap_info: null,
warnings: null,
auth: null,
};
};
}