mirror of
https://github.com/hashicorp/vault.git
synced 2025-08-18 12:37:02 +02:00
83 lines
2.3 KiB
JavaScript
83 lines
2.3 KiB
JavaScript
/**
|
|
* Copyright (c) HashiCorp, Inc.
|
|
* SPDX-License-Identifier: BUSL-1.1
|
|
*/
|
|
|
|
import { Response } from 'miragejs';
|
|
|
|
export function capabilitiesStub(requestPath, capabilitiesArray) {
|
|
// sample of capabilitiesArray: ['read', 'update']
|
|
return {
|
|
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,
|
|
};
|
|
};
|
|
}
|
|
|
|
/**
|
|
* returns a response with the given httpStatus and data based on status
|
|
* @param {number} httpStatus 403, 404, 204, or 200 (default)
|
|
* @param {object} payload what to return in the response if status is 200
|
|
* @returns {Response}
|
|
*/
|
|
export function overrideResponse(httpStatus = 200, payload = {}) {
|
|
if (httpStatus === 403) {
|
|
return new Response(
|
|
403,
|
|
{ 'Content-Type': 'application/json' },
|
|
JSON.stringify({ errors: ['permission denied'] })
|
|
);
|
|
}
|
|
if (httpStatus === 404) {
|
|
return new Response(404, { 'Content-Type': 'application/json' });
|
|
}
|
|
if (httpStatus === 204) {
|
|
return new Response(204, { 'Content-Type': 'application/json' });
|
|
}
|
|
return new Response(httpStatus, { 'Content-Type': 'application/json' }, payload);
|
|
}
|