2023-03-01 09:39:41 -06:00
|
|
|
/**
|
|
|
|
|
* Copyright (c) HashiCorp, Inc.
|
|
|
|
|
* SPDX-License-Identifier: MPL-2.0
|
|
|
|
|
*/
|
|
|
|
|
|
2021-07-01 14:28:53 -04:00
|
|
|
import factory from '../generated/factories/credential-store';
|
2022-08-01 11:25:07 -07:00
|
|
|
import { faker } from '@faker-js/faker';
|
2023-01-09 08:48:49 -08:00
|
|
|
import { trait } from 'miragejs';
|
2021-08-23 15:55:20 -07:00
|
|
|
import permissions from '../helpers/permissions';
|
2022-06-01 14:02:18 -04:00
|
|
|
import generateId from '../helpers/id';
|
2021-07-01 14:28:53 -04:00
|
|
|
|
2022-06-18 10:56:25 -04:00
|
|
|
const types = ['vault', 'static'];
|
2021-07-01 14:28:53 -04:00
|
|
|
|
|
|
|
|
export default factory.extend({
|
2021-08-23 15:55:20 -07:00
|
|
|
authorized_actions: () =>
|
|
|
|
|
permissions.authorizedActionsFor('credential-store') || [
|
|
|
|
|
'no-op',
|
|
|
|
|
'read',
|
|
|
|
|
'update',
|
|
|
|
|
'delete',
|
|
|
|
|
],
|
2022-07-21 13:48:16 -07:00
|
|
|
authorized_collection_actions() {
|
|
|
|
|
switch (this.type) {
|
|
|
|
|
case 'vault':
|
|
|
|
|
return {
|
|
|
|
|
'credential-libraries': ['create', 'list'],
|
|
|
|
|
};
|
|
|
|
|
case 'static':
|
|
|
|
|
default:
|
|
|
|
|
return {
|
2022-07-28 17:49:51 -07:00
|
|
|
credentials: ['create', 'list'],
|
2022-07-21 13:48:16 -07:00
|
|
|
};
|
|
|
|
|
}
|
2021-09-01 19:38:48 -07:00
|
|
|
},
|
2022-06-01 14:02:18 -04:00
|
|
|
id: () => generateId('cs_'),
|
2021-07-01 14:28:53 -04:00
|
|
|
type: (i) => types[i % types.length],
|
|
|
|
|
|
|
|
|
|
attributes() {
|
|
|
|
|
switch (this.type) {
|
|
|
|
|
case 'vault':
|
|
|
|
|
return {
|
2022-08-01 11:25:07 -07:00
|
|
|
address: faker.internet.ip(),
|
|
|
|
|
namespace: faker.random.word(),
|
2021-07-01 14:28:53 -04:00
|
|
|
ca_cert: 'ca-cert-123',
|
2022-08-01 11:25:07 -07:00
|
|
|
tls_server_name: faker.internet.domainName(),
|
|
|
|
|
tls_skip_verify: faker.datatype.boolean(),
|
2021-07-01 14:28:53 -04:00
|
|
|
token_hmac: 'token-hmac-abcde0987654321',
|
|
|
|
|
client_certificate: 'client-cert-123',
|
|
|
|
|
client_certificate_key_hmac: 'client-cert-key-hmac-abcde0987654321',
|
2022-09-13 15:23:28 -05:00
|
|
|
worker_filter: faker.random.words(),
|
2021-07-01 14:28:53 -04:00
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
},
|
2021-07-12 16:03:06 -04:00
|
|
|
|
|
|
|
|
withAssociations: trait({
|
|
|
|
|
afterCreate(credentialStore, server) {
|
2022-07-21 13:48:16 -07:00
|
|
|
const { scope, type } = credentialStore;
|
|
|
|
|
switch (type) {
|
|
|
|
|
case 'vault':
|
|
|
|
|
server.createList('credential-library', 2, {
|
|
|
|
|
scope,
|
|
|
|
|
credentialStore,
|
|
|
|
|
});
|
|
|
|
|
break;
|
|
|
|
|
case 'static':
|
|
|
|
|
default:
|
2022-09-20 17:31:16 -07:00
|
|
|
server.createList('credential', 3, {
|
2022-07-21 13:48:16 -07:00
|
|
|
scope,
|
|
|
|
|
credentialStore,
|
|
|
|
|
});
|
|
|
|
|
}
|
2021-07-12 16:03:06 -04:00
|
|
|
},
|
|
|
|
|
}),
|
2021-07-01 14:28:53 -04:00
|
|
|
});
|