mirror of
https://github.com/hashicorp/vault.git
synced 2025-08-24 08:01:07 +02:00
75 lines
2.9 KiB
JavaScript
75 lines
2.9 KiB
JavaScript
/**
|
|
* Copyright (c) HashiCorp, Inc.
|
|
* SPDX-License-Identifier: BUSL-1.1
|
|
*/
|
|
|
|
import { Response } from 'miragejs';
|
|
|
|
export default function (server) {
|
|
const query = (req) => {
|
|
const { name, backend } = req.params;
|
|
return name ? { name } : { backend };
|
|
};
|
|
const getRecord = (schema, req, dbKey) => {
|
|
const record = schema.db[dbKey].findBy(query(req));
|
|
if (record) {
|
|
delete record.id;
|
|
delete record.name;
|
|
delete record.backend;
|
|
delete record.type;
|
|
return { data: record };
|
|
}
|
|
return new Response(404, {}, { errors: [] });
|
|
};
|
|
const createOrUpdateRecord = (schema, req, dbKey) => {
|
|
const data = JSON.parse(req.requestBody);
|
|
const dbCollection = schema.db[dbKey];
|
|
dbCollection.firstOrCreate(query(req), data);
|
|
dbCollection.update(query(req), data);
|
|
return new Response(204);
|
|
};
|
|
const listRecords = (schema, dbKey, query = {}) => {
|
|
const records = schema.db[dbKey].where(query);
|
|
return {
|
|
data: { keys: records.map((record) => record.name) },
|
|
};
|
|
};
|
|
|
|
// mount
|
|
server.post('/sys/mounts/:path', () => new Response(204));
|
|
server.get('/sys/internal/ui/mounts/:path', () => ({
|
|
data: {
|
|
accessor: 'ldap_ade94329',
|
|
type: 'ldap',
|
|
path: 'ldap-test/',
|
|
uuid: '35e9119d-5708-4b6b-58d2-f913e27f242d',
|
|
config: {},
|
|
},
|
|
}));
|
|
// config
|
|
server.post('/:backend/config', (schema, req) => createOrUpdateRecord(schema, req, 'ldapConfigs'));
|
|
server.get('/:backend/config', (schema, req) => getRecord(schema, req, 'ldapConfigs'));
|
|
// roles
|
|
server.post('/:backend/static-role/:name', (schema, req) => createOrUpdateRecord(schema, req, 'ldapRoles'));
|
|
server.post('/:backend/role/:name', (schema, req) => createOrUpdateRecord(schema, req, 'ldapRoles'));
|
|
server.get('/:backend/static-role/:name', (schema, req) => getRecord(schema, req, 'ldapRoles', 'static'));
|
|
server.get('/:backend/role/:name', (schema, req) => getRecord(schema, req, 'ldapRoles', 'dynamic'));
|
|
server.get('/:backend/static-role', (schema) => listRecords(schema, 'ldapRoles', { type: 'static' }));
|
|
server.get('/:backend/role', (schema) => listRecords(schema, 'ldapRoles', { type: 'dynamic' }));
|
|
// role credentials
|
|
server.get('/:backend/static-cred/:name', (schema) => ({
|
|
data: schema.db.ldapCredentials.firstOrCreate({ type: 'static' }),
|
|
}));
|
|
server.get('/:backend/creds/:name', (schema) => ({
|
|
data: schema.db.ldapCredentials.firstOrCreate({ type: 'dynamic' }),
|
|
}));
|
|
// libraries
|
|
server.post('/:backend/library/:name', (schema, req) => createOrUpdateRecord(schema, req, 'ldapLibraries'));
|
|
server.get('/:backend/library/:name', (schema, req) => getRecord(schema, req, 'ldapLibraries'));
|
|
server.get('/:backend/library', (schema) => listRecords(schema, 'ldapLibraries'));
|
|
server.get('/:backend/library/:name/status', () => ({
|
|
'bob.johnson': { available: false, borrower_client_token: '8b80c305eb3a7dbd161ef98f10ea60a116ce0910' },
|
|
'mary.smith': { available: true },
|
|
}));
|
|
}
|