diff --git a/addons/api/mirage/config.js b/addons/api/mirage/config.js index 213f71d33..a7523ad69 100644 --- a/addons/api/mirage/config.js +++ b/addons/api/mirage/config.js @@ -514,6 +514,14 @@ export default function () { this.del('/credential-libraries/:id'); this.patch('/credential-libraries/:id'); + // managed-groups + this.get( + '/managed-groups', + ({ managedGroups }, { queryParams: { auth_method_id: authMethodId } }) => { + return managedGroups.where({ authMethodId }); + } + ); + /* Uncomment the following line and the Response import above * Then change the response code to simulate error responses. * this.get('/scopes', () => new Response(505)); diff --git a/addons/api/mirage/factories/managed-groups.js b/addons/api/mirage/factories/managed-groups.js new file mode 100644 index 000000000..c146537ab --- /dev/null +++ b/addons/api/mirage/factories/managed-groups.js @@ -0,0 +1,17 @@ +import factory from '../generated/factories/managed-groups'; +import permissions from '../helpers/permissions'; + +const types = ['password', 'OIDC']; + +export default factory.extend({ + id: (i) => `managed-groups-id-${i}`, + type: (i) => types[i % types.length], + + authorized_actions: () => + permissions.authorizedActionsFor('managed-groups') || [ + 'no-op', + 'read', + 'update', + 'delete', + ], +}); diff --git a/addons/api/mirage/generated/factories/managed-groups.js b/addons/api/mirage/generated/factories/managed-groups.js new file mode 100644 index 000000000..9650e8175 --- /dev/null +++ b/addons/api/mirage/generated/factories/managed-groups.js @@ -0,0 +1,17 @@ +import { Factory } from 'ember-cli-mirage'; +import { random, date, datatype } from 'faker'; + +/** + * GeneratedManagedGroupsFactory + * A managed group is a resource that represents a collection of accounts. + */ +export default Factory.extend({ + name: () => random.words(), + description: () => random.words(), + created_time: () => date.recent(), + updated_time: () => date.recent(), + version: () => datatype.number(), + type: Math.random() < 0.5 ? 'password' : 'OIDC', + auth_method_id: () => datatype.number(), + member_ids: () => datatype.array(), +}); diff --git a/addons/api/mirage/models/managed-groups.js b/addons/api/mirage/models/managed-groups.js new file mode 100644 index 000000000..7faa2b5a2 --- /dev/null +++ b/addons/api/mirage/models/managed-groups.js @@ -0,0 +1,5 @@ +import { Model, belongsTo } from 'ember-cli-mirage'; + +export default Model.extend({ + scope: belongsTo(), +}); diff --git a/addons/api/mirage/scenarios/default.js b/addons/api/mirage/scenarios/default.js index d0ad354c6..21d68908f 100644 --- a/addons/api/mirage/scenarios/default.js +++ b/addons/api/mirage/scenarios/default.js @@ -44,6 +44,13 @@ export default function (server) { server.createList('role', 1, { scope: globalScope }, 'withPrincipals'); server.createList('role', 5, { scope: orgScope }, 'withPrincipals'); + server.createList( + 'managed-group', + 2, + { scope: globalScope }, + 'withAccountsAndUsers' + ); + // Other resources server.schema.scopes.where({ type: 'project' }).models.forEach((scope) => { server.createList('host-catalog', 2, { scope }, 'withChildren'); diff --git a/addons/api/mirage/serializers/managed-groups.js b/addons/api/mirage/serializers/managed-groups.js new file mode 100644 index 000000000..bb9f94eb2 --- /dev/null +++ b/addons/api/mirage/serializers/managed-groups.js @@ -0,0 +1,13 @@ +import ApplicationSerializer from './application'; + +export default ApplicationSerializer.extend({ + modelName: 'managed-groups', + + _hashForModel() { + const json = ApplicationSerializer.prototype._hashForModel.apply( + this, + arguments + ); + return json; + }, +});