From f5b477d9c275e16216baaae9b2a932f4b146468f Mon Sep 17 00:00:00 2001 From: Randall Morey Date: Mon, 23 Nov 2020 14:26:01 -0500 Subject: [PATCH] =?UTF-8?q?refactor:=20=F0=9F=92=A1=20use=20shared=20mocks?= =?UTF-8?q?=20in=20desktop?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ui/desktop/config/environment.js | 4 + ui/desktop/mirage/config.js | 149 ------------------ ui/desktop/mirage/factories/account.js | 3 - ui/desktop/mirage/factories/auth-method.js | 20 --- ui/desktop/mirage/factories/host-catalog.js | 14 -- ui/desktop/mirage/factories/host-set.js | 5 - ui/desktop/mirage/factories/host.js | 5 - ui/desktop/mirage/factories/scope.js | 35 ---- ui/desktop/mirage/factories/session.js | 46 ------ ui/desktop/mirage/factories/target.js | 46 ------ ui/desktop/mirage/factories/user.js | 5 - .../mirage/generated/factories/account.js | 17 -- .../mirage/generated/factories/auth-method.js | 16 -- .../generated/factories/host-catalog.js | 16 -- .../mirage/generated/factories/host-set.js | 17 -- ui/desktop/mirage/generated/factories/host.js | 17 -- ui/desktop/mirage/generated/factories/org.js | 15 -- .../mirage/generated/factories/project.js | 16 -- .../mirage/generated/factories/scope.js | 15 -- .../mirage/generated/factories/session.js | 14 -- .../mirage/generated/factories/target.js | 19 --- ui/desktop/mirage/generated/factories/user.js | 16 -- ui/desktop/mirage/models/account.js | 8 - ui/desktop/mirage/models/auth-method.js | 7 - ui/desktop/mirage/models/host-catalog.js | 8 - ui/desktop/mirage/models/host-set.js | 10 -- ui/desktop/mirage/models/host.js | 8 - ui/desktop/mirage/models/session.js | 11 -- ui/desktop/mirage/models/target.js | 8 - ui/desktop/mirage/models/user.js | 8 - ui/desktop/mirage/route-handlers/auth.js | 53 ------- ui/desktop/mirage/scenarios/default.js | 23 --- ui/desktop/mirage/serializers/account.js | 12 -- ui/desktop/mirage/serializers/application.js | 84 ---------- ui/desktop/mirage/serializers/auth-method.js | 5 - ui/desktop/mirage/serializers/host-catalog.js | 5 - ui/desktop/mirage/serializers/host-set.js | 22 --- ui/desktop/mirage/serializers/host.js | 5 - ui/desktop/mirage/serializers/scope.js | 5 - ui/desktop/mirage/serializers/session.js | 22 --- ui/desktop/mirage/serializers/target.js | 26 --- ui/desktop/mirage/serializers/user.js | 18 --- 42 files changed, 4 insertions(+), 854 deletions(-) delete mode 100644 ui/desktop/mirage/config.js delete mode 100644 ui/desktop/mirage/factories/account.js delete mode 100644 ui/desktop/mirage/factories/auth-method.js delete mode 100644 ui/desktop/mirage/factories/host-catalog.js delete mode 100644 ui/desktop/mirage/factories/host-set.js delete mode 100644 ui/desktop/mirage/factories/host.js delete mode 100644 ui/desktop/mirage/factories/scope.js delete mode 100644 ui/desktop/mirage/factories/session.js delete mode 100644 ui/desktop/mirage/factories/target.js delete mode 100644 ui/desktop/mirage/factories/user.js delete mode 100644 ui/desktop/mirage/generated/factories/account.js delete mode 100644 ui/desktop/mirage/generated/factories/auth-method.js delete mode 100644 ui/desktop/mirage/generated/factories/host-catalog.js delete mode 100644 ui/desktop/mirage/generated/factories/host-set.js delete mode 100644 ui/desktop/mirage/generated/factories/host.js delete mode 100644 ui/desktop/mirage/generated/factories/org.js delete mode 100644 ui/desktop/mirage/generated/factories/project.js delete mode 100644 ui/desktop/mirage/generated/factories/scope.js delete mode 100644 ui/desktop/mirage/generated/factories/session.js delete mode 100644 ui/desktop/mirage/generated/factories/target.js delete mode 100644 ui/desktop/mirage/generated/factories/user.js delete mode 100644 ui/desktop/mirage/models/account.js delete mode 100644 ui/desktop/mirage/models/auth-method.js delete mode 100644 ui/desktop/mirage/models/host-catalog.js delete mode 100644 ui/desktop/mirage/models/host-set.js delete mode 100644 ui/desktop/mirage/models/host.js delete mode 100644 ui/desktop/mirage/models/session.js delete mode 100644 ui/desktop/mirage/models/target.js delete mode 100644 ui/desktop/mirage/models/user.js delete mode 100644 ui/desktop/mirage/route-handlers/auth.js delete mode 100644 ui/desktop/mirage/scenarios/default.js delete mode 100644 ui/desktop/mirage/serializers/account.js delete mode 100644 ui/desktop/mirage/serializers/application.js delete mode 100644 ui/desktop/mirage/serializers/auth-method.js delete mode 100644 ui/desktop/mirage/serializers/host-catalog.js delete mode 100644 ui/desktop/mirage/serializers/host-set.js delete mode 100644 ui/desktop/mirage/serializers/host.js delete mode 100644 ui/desktop/mirage/serializers/scope.js delete mode 100644 ui/desktop/mirage/serializers/session.js delete mode 100644 ui/desktop/mirage/serializers/target.js delete mode 100644 ui/desktop/mirage/serializers/user.js diff --git a/ui/desktop/config/environment.js b/ui/desktop/config/environment.js index 57a61e665..9a03eddb2 100644 --- a/ui/desktop/config/environment.js +++ b/ui/desktop/config/environment.js @@ -28,6 +28,10 @@ module.exports = function (environment) { isElectron: Boolean(process.env.EMBER_CLI_ELECTRON), + 'ember-cli-mirage': { + directory: '../../addons/api/mirage' + }, + api: { host: API_HOST, namespace: 'v1', diff --git a/ui/desktop/mirage/config.js b/ui/desktop/mirage/config.js deleted file mode 100644 index 475ff24eb..000000000 --- a/ui/desktop/mirage/config.js +++ /dev/null @@ -1,149 +0,0 @@ -import Ember from 'ember'; -import config from '../config/environment'; -import { authHandler, deauthHandler } from './route-handlers/auth'; -import { pickRandomStatusString } from './factories/session'; -import { Response } from 'miragejs'; - -export default function() { - - // make this `http://localhost:8080`, for example, if your API is on a different server - // this.urlPrefix = ''; - // make this `/api`, for example, if your API is namespaced - this.namespace = config.api.namespace; - - // Allow any configured API host to passthrough, which is useful in - // development for testing against a locally running backend. - if (config.api.host) this.passthrough(`${config.api.host}/**`); - this.passthrough(); - - // Scope resources - - this.get('/scopes', ({ scopes }, { queryParams: { scope_id } }) => { - // Default parent scope is global - if (!scope_id) scope_id = 'global'; - const results = scopes.where(scope => { - return scope.scope ? scope.scope.id === scope_id : false - }); - return results; - }); - this.get('/scopes/:id'); - - // Auth & IAM resources - - this.get('/auth-methods', ({ authMethods }, { queryParams: { scope_id: scopeId } }) => { - return authMethods.where({ scopeId }); - }); - this.get('/auth-methods/:id'); - - // Auth Method Accounts - this.get('/accounts', ({ accounts }, { queryParams: { auth_method_id: authMethodId } }) => { - return accounts.where({ authMethodId }); - }); - this.get('/accounts/:id'); - this.post('/accounts/:idMethod', function ({ accounts }, { params: { idMethod } }) { - const attrs = this.normalizedRequestAttrs(); - const id = idMethod.split(':')[0]; - const method = idMethod.split(':')[1]; - const account = accounts.find(id); - const updatedAttrs = { - version: attrs.version, - attributes: account.attributes - }; - // Set new password - if (method === 'change-password') { - updatedAttrs.attributes.password = attrs.new_password; - } - return account.update(updatedAttrs); - }); - - // Authenticate/deauthenticate routes - this.post('/auth-methods/:id_method', authHandler); - this.post('/scopes/:id_method', deauthHandler); - - // Other resources - // host-catalog - - this.get('/host-catalogs', ({ hostCatalogs }, { queryParams: { scope_id: scopeId } }) => { - return hostCatalogs.where({ scopeId }); - }); - this.get('/host-catalogs/:id'); - - // host - - this.get('/hosts', function ({ hosts }, { queryParams: { host_catalog_id: hostCatalogId } }) { - return hosts.where({ hostCatalogId }); - }); - this.get('/hosts/:id'); - - // host-set - - this.get('/host-sets', function ({ hostSets }, { queryParams: { host_catalog_id: hostCatalogId } }) { - return hostSets.where({ hostCatalogId }); - }); - this.get('/host-sets/:id'); - - // target - - this.get('/targets', function ({ targets }, { queryParams: { scope_id } }) { - return targets.where(target => target.scopeId === scope_id); - }); - this.get('/targets/:id'); - - // session - - this.get('/sessions', function ({ sessions }, { queryParams: { scope_id } }) { - // To simulate changes to `session.status` that may occur in the backend, - // we quietly randomize the value of the field on GET. - // But only if not in testing mode. - // In tests, we need deterministic statuses. - if (!Ember.testing) { - sessions.where(session => session.scopeId === scope_id) - .models - .forEach(session => session.update({ - status: pickRandomStatusString() - })); - } - return sessions.where(session => session.scopeId === scope_id) - }); - this.get('/sessions/:id', function ({ sessions }, { params: { id } }) { - const session = sessions.find(id); - return session.update({ - status: pickRandomStatusString() - }); - }); - this.post('/sessions/:idMethod', function ({ sessions }, { params: { idMethod } }) { - const attrs = this.normalizedRequestAttrs(); - const id = idMethod.split(':')[0]; - const method = idMethod.split(':')[1]; - const session = sessions.find(id); - const updatedAttrs = { - version: attrs.version - }; - if (method === 'cancel') { - updatedAttrs.status = 'canceling'; - } - return session.update(updatedAttrs); - }); - - // auth-tokens - - this.get('/auth-tokens/:id', function () { - // Set to 401 or 404 to simulate token invalidation, which will - // cause the session to fail restoration and logout the user. - return new Response(200); - }); - - /* Uncomment the following line and the Response import above - * Then change the response code to simulate error responses. - * this.get('/scopes', () => new Response(505)); - * - * Update error payload to simulate specific error responses. - */ - // this.get('/host-catalogs', () => new Response(404)); - // this.get('/scopes/:id', () => new Response(505, {}, { - // errors: [{ - // status: 505, - // message: 'HTTP version not supported.', - // }] - // })); -} diff --git a/ui/desktop/mirage/factories/account.js b/ui/desktop/mirage/factories/account.js deleted file mode 100644 index 5908d0a21..000000000 --- a/ui/desktop/mirage/factories/account.js +++ /dev/null @@ -1,3 +0,0 @@ -import factory from '../generated/factories/account'; - -export default factory.extend(); diff --git a/ui/desktop/mirage/factories/auth-method.js b/ui/desktop/mirage/factories/auth-method.js deleted file mode 100644 index 61d29726b..000000000 --- a/ui/desktop/mirage/factories/auth-method.js +++ /dev/null @@ -1,20 +0,0 @@ -import factory from '../generated/factories/auth-method'; -import { trait } from 'ember-cli-mirage'; - -export default factory.extend({ - id: (i) => `auth-method-id-${i}`, - - /** - * Adds accounts (with associated users) to auth method. - */ - withAccountsAndUsers: trait({ - afterCreate(authMethod, server) { - const { scope } = authMethod; - server.createList('user', 5, { scope }).map(user => { - const { id } = server.create('account', { scope, authMethod }); - user.update({ accountIds: [id] }); - }); - } - }) - -}); diff --git a/ui/desktop/mirage/factories/host-catalog.js b/ui/desktop/mirage/factories/host-catalog.js deleted file mode 100644 index 1eaed0433..000000000 --- a/ui/desktop/mirage/factories/host-catalog.js +++ /dev/null @@ -1,14 +0,0 @@ -import factory from '../generated/factories/host-catalog'; -import { trait } from 'ember-cli-mirage'; - -export default factory.extend({ - - withChildren: trait({ - afterCreate(hostCatalog, server) { - const { scope } = hostCatalog; - const hosts = server.createList('host', 10, { scope, hostCatalog }); - server.createList('host-set', 3, { scope, hostCatalog, hosts }); - } - }) - -}); diff --git a/ui/desktop/mirage/factories/host-set.js b/ui/desktop/mirage/factories/host-set.js deleted file mode 100644 index ad9ae1fa1..000000000 --- a/ui/desktop/mirage/factories/host-set.js +++ /dev/null @@ -1,5 +0,0 @@ -import factory from '../generated/factories/host-set'; - -export default factory.extend({ - id: (i) => `host-set-id-${i}` -}); diff --git a/ui/desktop/mirage/factories/host.js b/ui/desktop/mirage/factories/host.js deleted file mode 100644 index f322cb4d4..000000000 --- a/ui/desktop/mirage/factories/host.js +++ /dev/null @@ -1,5 +0,0 @@ -import factory from '../generated/factories/host'; - -export default factory.extend({ - id: (i) => `host-id-${i}` -}); diff --git a/ui/desktop/mirage/factories/scope.js b/ui/desktop/mirage/factories/scope.js deleted file mode 100644 index a14dbc719..000000000 --- a/ui/desktop/mirage/factories/scope.js +++ /dev/null @@ -1,35 +0,0 @@ -import factory from '../generated/factories/scope'; -import { trait } from 'ember-cli-mirage'; - -export default factory.extend({ - - type: 'global', - - /** - * Generates realistic-ish IDs while still being deterministic. - */ - id(i) { - let id = 'tv6fv3yz8p'; - if (i % 3) id = 'xk1i4dk50v'; - if (i % 2) id = 's9n819zgko'; - return `s_${id}${i}`; - }, - - withChildren: trait({ - afterCreate(record, server) { - if (record.type === 'global') { - server.createList('scope', 1, { - type: 'org', - scope: { id: record.id, type: record.type } - }, 'withChildren'); - } - if (record.type === 'org') { - server.createList('scope', 3, { - type: 'project', - scope: { id: record.id, type: record.type } - }); - } - } - }) - -}); diff --git a/ui/desktop/mirage/factories/session.js b/ui/desktop/mirage/factories/session.js deleted file mode 100644 index 0100a4b75..000000000 --- a/ui/desktop/mirage/factories/session.js +++ /dev/null @@ -1,46 +0,0 @@ -import factory from '../generated/factories/target'; -import { trait } from 'ember-cli-mirage'; -import { random } from 'faker'; - -const statusStrings = [ - 'pending', - 'active', - 'canceling', - 'terminated' -]; - -export const pickRandomStatusString = () => random.arrayElement(statusStrings); - -export default factory.extend({ - - id: (i) => `session-id-${i}`, - status: pickRandomStatusString, - - /** - * Sessions generated with this trait will automatically form - * associations to user, target, host set, and host (if available) within - * the current scope. - */ - withAssociations: trait({ - afterCreate(record, server) { - const scopeId = record.scopeId; - if (record.scope.type === 'project') { - const orgScopeId = record.scope?.scope.id; - const user = - server.schema.users.where({ scopeId: orgScopeId }).models[0]; - if (user) record.update({ user }); - } - const target = server.schema.targets.where({ scopeId }).models[0]; - if (target) { - record.update({ target }); - const hostSet = target.hostSets.models[0]; - if (hostSet) { - record.update({ hostSet }); - const host = hostSet.hosts.models[0]; - if (host) record.update({ host }); - } - } - } - }) - -}); diff --git a/ui/desktop/mirage/factories/target.js b/ui/desktop/mirage/factories/target.js deleted file mode 100644 index 4f34cc459..000000000 --- a/ui/desktop/mirage/factories/target.js +++ /dev/null @@ -1,46 +0,0 @@ -import factory from '../generated/factories/target'; -import { trait } from 'ember-cli-mirage'; -import { random } from 'faker'; - -const randomBoolean = (chance = 0.5) => Math.random() < chance; -const hostSetChance = 0.3; - -export default factory.extend({ - - /** - * -1 means "unlimited" and we want to generate these on occassion. - */ - session_connection_limit: () => random.arrayElement([-1, random.number()]), - - /** - * Generates attributes fields by type. - */ - afterCreate(target) { - if (target.type === 'tcp') { - target.update({ - attributes: { - default_port: random.number() - } - }); - } - }, - - /** - * Randomly selects existing host sets to assign to target. - */ - withRandomHostSets: trait({ - afterCreate(target, server) { - let randomlySelectedHostSets; - randomlySelectedHostSets = server.schema.hostSets - // BLERG: fun fact, for no reason at all, the element passed - // into a where function is not a full model instance, as you might - // expect at this level of abstraction, but appears to be a serialized - // representation of the model instance. It's very confusing since - // the result set of `where` _is a collection of model instances_. - .where(hostSet => hostSet.scopeId === target.scope.id).models - .filter(() => randomBoolean(hostSetChance)); - target.update({hostSets: randomlySelectedHostSets}); - } - }) - -}); diff --git a/ui/desktop/mirage/factories/user.js b/ui/desktop/mirage/factories/user.js deleted file mode 100644 index 42bccd33d..000000000 --- a/ui/desktop/mirage/factories/user.js +++ /dev/null @@ -1,5 +0,0 @@ -import factory from '../generated/factories/user'; - -export default factory.extend({ - id: (i) => `user-${i}` -}); diff --git a/ui/desktop/mirage/generated/factories/account.js b/ui/desktop/mirage/generated/factories/account.js deleted file mode 100644 index a66184e1f..000000000 --- a/ui/desktop/mirage/generated/factories/account.js +++ /dev/null @@ -1,17 +0,0 @@ -import { Factory } from 'ember-cli-mirage'; -import { random, date } from 'faker'; - -/** - * GeneratedAccountFactory - */ -export default Factory.extend({ - - type: 'password', - name: () => random.words(), - description: () => random.words(), - created_time: () => date.recent(), - updated_time: () => date.recent(), - version: () => random.number(), - attributes: () => ({ login_name: random.words() }), - -}); diff --git a/ui/desktop/mirage/generated/factories/auth-method.js b/ui/desktop/mirage/generated/factories/auth-method.js deleted file mode 100644 index d76245946..000000000 --- a/ui/desktop/mirage/generated/factories/auth-method.js +++ /dev/null @@ -1,16 +0,0 @@ -import { Factory } from 'ember-cli-mirage'; -import { random, date } from 'faker'; - -/** - * GeneratedAuthMethodModelFactory - */ -export default Factory.extend({ - - type: 'password', - name: () => random.words(), - description: () => random.words(), - created_time: () => date.recent(), - updated_time: () => date.recent(), - disabled: () => random.boolean(), - -}); diff --git a/ui/desktop/mirage/generated/factories/host-catalog.js b/ui/desktop/mirage/generated/factories/host-catalog.js deleted file mode 100644 index daf2d356f..000000000 --- a/ui/desktop/mirage/generated/factories/host-catalog.js +++ /dev/null @@ -1,16 +0,0 @@ -import { Factory } from 'ember-cli-mirage'; -import { random, date } from 'faker'; - -/** - * GeneratedHostCatalogModelFactory - */ -export default Factory.extend({ - - type: 'static', - name: () => random.words(), - description: () => random.words(), - created_time: () => date.recent(), - updated_time: () => date.recent(), - disabled: () => random.boolean(), - -}); diff --git a/ui/desktop/mirage/generated/factories/host-set.js b/ui/desktop/mirage/generated/factories/host-set.js deleted file mode 100644 index 95636bda0..000000000 --- a/ui/desktop/mirage/generated/factories/host-set.js +++ /dev/null @@ -1,17 +0,0 @@ -import { Factory } from 'ember-cli-mirage'; -import { random, date } from 'faker'; - -/** - * GeneratedHostSetModelFactory - */ -export default Factory.extend({ - - type: 'static', - name: () => random.words(), - description: () => random.words(), - created_time: () => date.recent(), - updated_time: () => date.recent(), - version: () => random.number(), - size: () => random.number(), - -}); diff --git a/ui/desktop/mirage/generated/factories/host.js b/ui/desktop/mirage/generated/factories/host.js deleted file mode 100644 index e6fccf602..000000000 --- a/ui/desktop/mirage/generated/factories/host.js +++ /dev/null @@ -1,17 +0,0 @@ -import { Factory } from 'ember-cli-mirage'; -import { random, date, internet } from 'faker'; - -/** - * GeneratedHostModelFactory - */ -export default Factory.extend({ - - type: 'static', - name: () => random.words(), - description: () => random.words(), - created_time: () => date.recent(), - updated_time: () => date.recent(), - version: () => random.number(), - attributes: () => { return { address: internet.ipv6() } }, - -}); diff --git a/ui/desktop/mirage/generated/factories/org.js b/ui/desktop/mirage/generated/factories/org.js deleted file mode 100644 index 81ee23629..000000000 --- a/ui/desktop/mirage/generated/factories/org.js +++ /dev/null @@ -1,15 +0,0 @@ -import { Factory } from 'ember-cli-mirage'; -import { random, date } from 'faker'; - -/** - * GeneratedOrgModelFactory - * - */ -export default Factory.extend({ - - name: () => random.words(), - description: () => random.words(), - created_time: () => date.recent(), - updated_time: () => date.recent(), - -}); diff --git a/ui/desktop/mirage/generated/factories/project.js b/ui/desktop/mirage/generated/factories/project.js deleted file mode 100644 index 69054217d..000000000 --- a/ui/desktop/mirage/generated/factories/project.js +++ /dev/null @@ -1,16 +0,0 @@ -import { Factory } from 'ember-cli-mirage'; -import { random, date } from 'faker'; - -/** - * GeneratedProjectModelFactory - * Project contains all fields related to a Project resource - */ -export default Factory.extend({ - - name: () => random.words(), - description: () => random.words(), - created_time: () => date.recent(), - updated_time: () => date.recent(), - disabled: () => random.boolean(), - -}); diff --git a/ui/desktop/mirage/generated/factories/scope.js b/ui/desktop/mirage/generated/factories/scope.js deleted file mode 100644 index cc574d3cd..000000000 --- a/ui/desktop/mirage/generated/factories/scope.js +++ /dev/null @@ -1,15 +0,0 @@ -import { Factory } from 'ember-cli-mirage'; -import { random, date } from 'faker'; - -/** - * GeneratedScopeModelFactory - */ -export default Factory.extend({ - - name: () => random.words(), - description: () => random.words(), - created_time: () => date.recent(), - updated_time: () => date.recent(), - disabled: () => random.boolean(), - -}); diff --git a/ui/desktop/mirage/generated/factories/session.js b/ui/desktop/mirage/generated/factories/session.js deleted file mode 100644 index 25aca3759..000000000 --- a/ui/desktop/mirage/generated/factories/session.js +++ /dev/null @@ -1,14 +0,0 @@ -import { Factory } from 'ember-cli-mirage'; -import { random, date } from 'faker'; - -/** - * GeneratedSessionModelFactory - */ -export default Factory.extend({ - - type: 'tcp', - created_time: () => date.recent(), - updated_time: () => date.recent(), - version: () => random.number(), - -}); diff --git a/ui/desktop/mirage/generated/factories/target.js b/ui/desktop/mirage/generated/factories/target.js deleted file mode 100644 index 5ce21adeb..000000000 --- a/ui/desktop/mirage/generated/factories/target.js +++ /dev/null @@ -1,19 +0,0 @@ -import { Factory } from 'ember-cli-mirage'; -import { random, date } from 'faker'; - -/** - * GeneratedTargetModelFactory - */ -export default Factory.extend({ - - type: 'tcp', - name: () => random.words(), - session_max_seconds: () => random.number(), - session_connection_limit: () => random.number(), - description: () => random.words(), - created_time: () => date.recent(), - updated_time: () => date.recent(), - disabled: () => random.boolean(), - version: () => random.number(), - -}); diff --git a/ui/desktop/mirage/generated/factories/user.js b/ui/desktop/mirage/generated/factories/user.js deleted file mode 100644 index 3934bc7e9..000000000 --- a/ui/desktop/mirage/generated/factories/user.js +++ /dev/null @@ -1,16 +0,0 @@ -import { Factory } from 'ember-cli-mirage'; -import { random, date } from 'faker'; - -/** - * GeneratedUserModelFactory - * User contains all fields related to a User resource - */ -export default Factory.extend({ - - name: () => random.words(), - description: () => random.words(), - created_time: () => date.recent(), - updated_time: () => date.recent(), - disabled: () => random.boolean(), - -}); diff --git a/ui/desktop/mirage/models/account.js b/ui/desktop/mirage/models/account.js deleted file mode 100644 index e6d3e303c..000000000 --- a/ui/desktop/mirage/models/account.js +++ /dev/null @@ -1,8 +0,0 @@ -import { Model, belongsTo } from 'ember-cli-mirage'; - -export default Model.extend({ - - scope: belongsTo(), - authMethod: belongsTo() - -}); diff --git a/ui/desktop/mirage/models/auth-method.js b/ui/desktop/mirage/models/auth-method.js deleted file mode 100644 index 08b1f5ad3..000000000 --- a/ui/desktop/mirage/models/auth-method.js +++ /dev/null @@ -1,7 +0,0 @@ -import { Model, belongsTo } from 'ember-cli-mirage'; - -export default Model.extend({ - - scope: belongsTo() - -}); diff --git a/ui/desktop/mirage/models/host-catalog.js b/ui/desktop/mirage/models/host-catalog.js deleted file mode 100644 index 8c2757e71..000000000 --- a/ui/desktop/mirage/models/host-catalog.js +++ /dev/null @@ -1,8 +0,0 @@ -import { Model, belongsTo, hasMany } from 'ember-cli-mirage'; - -export default Model.extend({ - - scope: belongsTo(), - hostSets: hasMany() - -}); diff --git a/ui/desktop/mirage/models/host-set.js b/ui/desktop/mirage/models/host-set.js deleted file mode 100644 index 5a579e119..000000000 --- a/ui/desktop/mirage/models/host-set.js +++ /dev/null @@ -1,10 +0,0 @@ -import { Model, belongsTo, hasMany } from 'ember-cli-mirage'; - -export default Model.extend({ - - scope: belongsTo(), - target: belongsTo(), - hostCatalog: belongsTo(), - hosts: hasMany() - -}); diff --git a/ui/desktop/mirage/models/host.js b/ui/desktop/mirage/models/host.js deleted file mode 100644 index b9a941a4f..000000000 --- a/ui/desktop/mirage/models/host.js +++ /dev/null @@ -1,8 +0,0 @@ -import { Model, belongsTo } from 'ember-cli-mirage'; - -export default Model.extend({ - - scope: belongsTo(), - hostCatalog: belongsTo() - -}); diff --git a/ui/desktop/mirage/models/session.js b/ui/desktop/mirage/models/session.js deleted file mode 100644 index 91a4da594..000000000 --- a/ui/desktop/mirage/models/session.js +++ /dev/null @@ -1,11 +0,0 @@ -import { Model, belongsTo } from 'ember-cli-mirage'; - -export default Model.extend({ - - scope: belongsTo(), - user: belongsTo(), - target: belongsTo(), - host: belongsTo(), - hostSet: belongsTo(), - -}); diff --git a/ui/desktop/mirage/models/target.js b/ui/desktop/mirage/models/target.js deleted file mode 100644 index 8c2757e71..000000000 --- a/ui/desktop/mirage/models/target.js +++ /dev/null @@ -1,8 +0,0 @@ -import { Model, belongsTo, hasMany } from 'ember-cli-mirage'; - -export default Model.extend({ - - scope: belongsTo(), - hostSets: hasMany() - -}); diff --git a/ui/desktop/mirage/models/user.js b/ui/desktop/mirage/models/user.js deleted file mode 100644 index 45cf14952..000000000 --- a/ui/desktop/mirage/models/user.js +++ /dev/null @@ -1,8 +0,0 @@ -import { Model, belongsTo, hasMany } from 'ember-cli-mirage'; - -export default Model.extend({ - - scope: belongsTo(), - accounts: hasMany('account') - -}); diff --git a/ui/desktop/mirage/route-handlers/auth.js b/ui/desktop/mirage/route-handlers/auth.js deleted file mode 100644 index 96813a7d5..000000000 --- a/ui/desktop/mirage/route-handlers/auth.js +++ /dev/null @@ -1,53 +0,0 @@ -// import config from '../../config/environment'; -// import { v1 } from 'ember-uuid'; -import { Response } from 'miragejs'; - -// /** -// * Simulates a cookie-based response to authentication requests. Any user/pass -// * values are allowed *except* when `username` equals `error`, in which case a -// * simulated error response is returned. -// * @param {object} schema -// * @param {object} request -// * @return {Response} -// */ -// export default function authenticateHandler(schema, request) { -// const payload = JSON.parse(request.requestBody); -// if (payload.credentials.login_name === 'error') { -// return new Response(400); -// } else { -// const cookieName = config.auth.passwordCookieName; -// const cookieValue = v1(); -// const cookiePath = config.rootURL; -// document.cookie = `${cookieName}=${cookieValue};path=${cookiePath}`; -// return new Response(200); -// } -// } - -export function authHandler({ scopes, authMethods }, request) { - const payload = JSON.parse(request.requestBody); - if (payload.credentials.login_name === 'error') { - return new Response(400); - } else { - const id = request.params.id_method.split(':')[0]; - const authMethod = authMethods.find(id); - const scope = scopes.find(authMethod.scopeId); - const scopeAttrs = - this.serialize(scopes.find(scope.id)); - return new Response(200, {}, { - scope: scopeAttrs, - id: 'token123', - token: 'thetokenstring', - account_id: '1', - user_id: 'user123', - auth_method_id: 'authmethod123', - created_time: '', - updated_time: '', - last_used_time: '', - expiration_time: '' - }); - } -} - -export function deauthHandler() { - return new Response(200); -} diff --git a/ui/desktop/mirage/scenarios/default.js b/ui/desktop/mirage/scenarios/default.js deleted file mode 100644 index 0d837f64f..000000000 --- a/ui/desktop/mirage/scenarios/default.js +++ /dev/null @@ -1,23 +0,0 @@ -export default function(server) { - // Scopes - const globalScope = server.create('scope', { - id: 'global', - type: 'global', - name: 'Global' - }); - const orgScope = server.createList('scope', 3, { - type: 'org', - scope: { id: globalScope.id, type: globalScope.type } - }, 'withChildren')[0]; - - // Auth - server.createList('auth-method', 1, { scope: globalScope }, 'withAccountsAndUsers'); - server.createList('auth-method', 3, { scope: orgScope }, 'withAccountsAndUsers'); - - // Other resources - server.schema.scopes.where({type: 'project'}).models.forEach(scope => { - server.createList('host-catalog', 2, { scope }, 'withChildren'); - server.createList('target', 2, { scope }, 'withRandomHostSets'); - server.createList('session', 4, { scope }, 'withAssociations'); - }); -} diff --git a/ui/desktop/mirage/serializers/account.js b/ui/desktop/mirage/serializers/account.js deleted file mode 100644 index 85d38851b..000000000 --- a/ui/desktop/mirage/serializers/account.js +++ /dev/null @@ -1,12 +0,0 @@ -import ApplicationSerializer from './application'; - -export default ApplicationSerializer.extend({ - modelName: 'account', - - _hashForModel(model) { - const json = ApplicationSerializer.prototype._hashForModel.apply(this, arguments); - json.auth_method_id = model.authMethodId; - delete json.attributes?.password; - return json; - } -}); diff --git a/ui/desktop/mirage/serializers/application.js b/ui/desktop/mirage/serializers/application.js deleted file mode 100644 index 7bfbc7cd7..000000000 --- a/ui/desktop/mirage/serializers/application.js +++ /dev/null @@ -1,84 +0,0 @@ -import { RestSerializer } from 'ember-cli-mirage'; -import { underscore } from '@ember/string'; -import { isArray } from '@ember/array'; - -/** - * Manages serialization/normalization of data into and out of the mock API. - */ -export default RestSerializer.extend({ - - // =attributes - - /** - * False to disable automatically rooting payloads under a key. - * This is handled by the `serialize()` method, see below. - * @type {boolean} - */ - root: false, - - /** - * @type {boolean} - */ - embed: true, - - // =methods - - /** - * Generates an underscored key for the attribute. - * @param {string} attr - * @return {string} - */ - keyForAttribute(attr) { - return underscore(attr); - }, - - keyForRelationshipId(relationshipName) { - return `${this._container.inflector.singularize( - underscore(relationshipName) - )}_id`; - }, - - /** - * Serialize items into a root key `items`. - * @return {object} - */ - serialize() { - let json = RestSerializer.prototype.serialize.apply(this, arguments); - // If array, root it under a standard `items` key - if (isArray(json)) json = {items: json}; - return json; - }, - - /** - * Serialize scope into the payload, if set. - * @param {object} model - * @return {object} - */ - _hashForModel(model) { - const json = RestSerializer.prototype._hashForModel.apply(this, arguments); - if (model.scope) { - json.scope = { - id: model.scope.id, - type: model.scope.type - }; - } - return json; - }, - - /** - * Adds a root to the payload, since `root: false` doesn't appear to affect - * the normalize method. - * @param {object} json - * @return {object} - */ - normalize(json) { - let newJSON = json; - if (this.modelName) { - newJSON = {}; - newJSON[this.modelName] = json; - } - const value = RestSerializer.prototype.normalize.apply(this, [newJSON]); - return value; - } - -}); diff --git a/ui/desktop/mirage/serializers/auth-method.js b/ui/desktop/mirage/serializers/auth-method.js deleted file mode 100644 index cabe9ee7b..000000000 --- a/ui/desktop/mirage/serializers/auth-method.js +++ /dev/null @@ -1,5 +0,0 @@ -import ApplicationSerializer from './application'; - -export default ApplicationSerializer.extend({ - modelName: 'auth-method' -}); diff --git a/ui/desktop/mirage/serializers/host-catalog.js b/ui/desktop/mirage/serializers/host-catalog.js deleted file mode 100644 index bab3f7aa0..000000000 --- a/ui/desktop/mirage/serializers/host-catalog.js +++ /dev/null @@ -1,5 +0,0 @@ -import ApplicationSerializer from './application'; - -export default ApplicationSerializer.extend({ - modelName: 'host-catalog', -}); diff --git a/ui/desktop/mirage/serializers/host-set.js b/ui/desktop/mirage/serializers/host-set.js deleted file mode 100644 index 7acf251b3..000000000 --- a/ui/desktop/mirage/serializers/host-set.js +++ /dev/null @@ -1,22 +0,0 @@ -import ApplicationSerializer from './application'; -import { underscore } from '@ember/string'; - -export default ApplicationSerializer.extend({ - modelName: 'host-set', - - keyForRelationshipIds(relationshipName) { - return `${this._container.inflector.singularize( - underscore(relationshipName) - )}_ids`; - }, - - _hashForModel(model) { - const json = ApplicationSerializer.prototype._hashForModel.apply(this, arguments); - json.host_catalog_id = model.hostCatalogId; - if (model.hostIds?.length) { - json.host_ids = model.hostIds; - } - return json; - } - -}); diff --git a/ui/desktop/mirage/serializers/host.js b/ui/desktop/mirage/serializers/host.js deleted file mode 100644 index ccd3994ca..000000000 --- a/ui/desktop/mirage/serializers/host.js +++ /dev/null @@ -1,5 +0,0 @@ -import ApplicationSerializer from './application'; - -export default ApplicationSerializer.extend({ - modelName: 'host' -}); diff --git a/ui/desktop/mirage/serializers/scope.js b/ui/desktop/mirage/serializers/scope.js deleted file mode 100644 index bfb33f398..000000000 --- a/ui/desktop/mirage/serializers/scope.js +++ /dev/null @@ -1,5 +0,0 @@ -import ApplicationSerializer from './application'; - -export default ApplicationSerializer.extend({ - modelName: 'scope' -}); diff --git a/ui/desktop/mirage/serializers/session.js b/ui/desktop/mirage/serializers/session.js deleted file mode 100644 index 3e14a23e6..000000000 --- a/ui/desktop/mirage/serializers/session.js +++ /dev/null @@ -1,22 +0,0 @@ -import ApplicationSerializer from './application'; -import { underscore } from '@ember/string'; - -export default ApplicationSerializer.extend({ - modelName: 'session', - - keyForRelationshipId(relationshipName) { - return `${this._container.inflector.singularize( - underscore(relationshipName) - )}_id`; - }, - - _hashForModel(model) { - const json = ApplicationSerializer.prototype._hashForModel.apply(this, arguments); - json.user_id = model.userId; - json.target_id = model.targetId; - json.host_set_id = model.hostSetId; - json.host_id = model.hostId; - return json; - } - -}); diff --git a/ui/desktop/mirage/serializers/target.js b/ui/desktop/mirage/serializers/target.js deleted file mode 100644 index 2d2a0d974..000000000 --- a/ui/desktop/mirage/serializers/target.js +++ /dev/null @@ -1,26 +0,0 @@ -import ApplicationSerializer from './application'; -import { underscore } from '@ember/string'; - -export default ApplicationSerializer.extend({ - modelName: 'target', - - keyForRelationshipIds(relationshipName) { - return `${this._container.inflector.singularize( - underscore(relationshipName) - )}_ids`; - }, - - _hashForModel(model) { - const json = ApplicationSerializer.prototype._hashForModel.apply(this, arguments); - const { hostSets } = this.schema; - if (model.hostSetIds?.length) { - json.host_sets = model.hostSetIds.map(host_set_id => { - const hostSet = hostSets.find(host_set_id); - const host_catalog_id = hostSet?.hostCatalog?.id; - return { id: host_set_id, host_catalog_id }; - }); - } - return json; - } - -}); diff --git a/ui/desktop/mirage/serializers/user.js b/ui/desktop/mirage/serializers/user.js deleted file mode 100644 index 0ef9298f5..000000000 --- a/ui/desktop/mirage/serializers/user.js +++ /dev/null @@ -1,18 +0,0 @@ -import ApplicationSerializer from './application'; -import { underscore } from '@ember/string'; - -export default ApplicationSerializer.extend({ - modelName: 'user', - - keyForRelationshipIds(relationshipName) { - return `${this._container.inflector.singularize( - underscore(relationshipName) - )}_ids`; - }, - - _hashForModel(model) { - const json = ApplicationSerializer.prototype._hashForModel.apply(this, arguments); - if (model.accountIds.length) json.account_ids = model.accountIds; - return json; - } -});