From 52b5739cdc675270321edbde996a3df99c51a262 Mon Sep 17 00:00:00 2001 From: Carlos Alcaide Corvo Date: Fri, 29 Oct 2021 13:23:41 -0700 Subject: [PATCH] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20API=20managed=20groups?= =?UTF-8?q?=20mock=20mirage?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add API managed groups mock in mirage --- addons/api/mirage/config.js | 8 ++++++++ addons/api/mirage/factories/managed-groups.js | 17 +++++++++++++++++ .../generated/factories/managed-groups.js | 17 +++++++++++++++++ addons/api/mirage/models/managed-groups.js | 5 +++++ addons/api/mirage/scenarios/default.js | 7 +++++++ addons/api/mirage/serializers/managed-groups.js | 13 +++++++++++++ 6 files changed, 67 insertions(+) create mode 100644 addons/api/mirage/factories/managed-groups.js create mode 100644 addons/api/mirage/generated/factories/managed-groups.js create mode 100644 addons/api/mirage/models/managed-groups.js create mode 100644 addons/api/mirage/serializers/managed-groups.js 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; + }, +});