60 lines
1.6 KiB
JavaScript
60 lines
1.6 KiB
JavaScript
/**
|
|
* 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,
|
|
};
|
|
};
|
|
}
|