/** * 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, }; }; }