feat: 🎸 Add fields to host-catalog model
Add new fields to host-catalog model for plugin type host-catalog. Fields are corresponding to Azure and Aws plugins.
This commit is contained in:
1 parent
fdc69b8a25
commit
cd96313857
4 files changed
+210
No files matched your search
@@ -54,4 +54,64 @@ export default class GeneratedHostCatalogModel extends BaseModel {
|
||||
readOnly: true,
|
||||
})
|
||||
plugin;
|
||||
|
||||
@attr('boolean', {
|
||||
isNestedAttribute: true,
|
||||
description: '',
|
||||
})
|
||||
disable_credential_rotation;
|
||||
|
||||
// Azure specific
|
||||
@attr('string', {
|
||||
isNestedAttribute: true,
|
||||
description: '',
|
||||
})
|
||||
region;
|
||||
|
||||
@attr('string', {
|
||||
isNestedAttribute: true,
|
||||
readOnly: true,
|
||||
description: '',
|
||||
})
|
||||
access_key_id;
|
||||
|
||||
@attr('string', {
|
||||
isNestedAttribute: true,
|
||||
readOnly: true,
|
||||
description: '',
|
||||
})
|
||||
secret_access_key;
|
||||
|
||||
// AWS specific
|
||||
@attr('string', {
|
||||
isNestedAttribute: true,
|
||||
description: '',
|
||||
})
|
||||
tenant_id;
|
||||
|
||||
@attr('string', {
|
||||
isNestedAttribute: true,
|
||||
description: '',
|
||||
})
|
||||
client_id;
|
||||
|
||||
@attr('string', {
|
||||
isNestedAttribute: true,
|
||||
description: '',
|
||||
})
|
||||
subscription_id;
|
||||
|
||||
@attr('string', {
|
||||
isNestedAttribute: true,
|
||||
readOnly: true,
|
||||
description: '',
|
||||
})
|
||||
secret_id;
|
||||
|
||||
@attr('string', {
|
||||
isNestedAttribute: true,
|
||||
readOnly: true,
|
||||
description: '',
|
||||
})
|
||||
secret_value;
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
import ApplicationSerializer from './application';
|
||||
|
||||
export default class HostCatalogSerializer extends ApplicationSerializer {
|
||||
// =methods
|
||||
serialize(snapshot) {
|
||||
const serialized = super.serialize(...arguments);
|
||||
switch (snapshot.record.type) {
|
||||
case 'static':
|
||||
return this.serializeStatic(...arguments);
|
||||
case 'plugin':
|
||||
return this.serializeDynamic(...arguments);
|
||||
default:
|
||||
return serialized;
|
||||
}
|
||||
}
|
||||
|
||||
serializeStatic() {
|
||||
const serialized = super.serialize(...arguments);
|
||||
// Delete unnecessary fields for static host-catalog
|
||||
delete serialized.attributes;
|
||||
return serialized;
|
||||
}
|
||||
|
||||
serializeDynamic(snapshot) {
|
||||
const { isAWS, isAzure } = snapshot.record;
|
||||
const serialized = super.serialize(...arguments);
|
||||
|
||||
// Is a Aws plugin, delete all the Azure attributes
|
||||
if (isAWS) {
|
||||
delete serialized.attributes.region;
|
||||
}
|
||||
|
||||
// Is an Azure plugin, delete all the Aws attributes
|
||||
if (isAzure) {
|
||||
delete serialized.attributes.tenant_id;
|
||||
delete serialized.attributes.client_id;
|
||||
delete serialized.attributes.subscription_id;
|
||||
}
|
||||
return serialized;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
export { default } from 'api/serializers/host-catalog';
|
||||
@@ -0,0 +1,108 @@
|
||||
import { module, test } from 'qunit';
|
||||
import { setupTest } from 'ember-qunit';
|
||||
|
||||
module('Unit | Serializer | host catalog', function (hooks) {
|
||||
setupTest(hooks);
|
||||
|
||||
// Replace this with your real tests.
|
||||
test('it exists', function (assert) {
|
||||
let store = this.owner.lookup('service:store');
|
||||
let serializer = store.serializerFor('host-catalog');
|
||||
|
||||
assert.ok(serializer);
|
||||
});
|
||||
|
||||
test('it serializes records', function (assert) {
|
||||
let store = this.owner.lookup('service:store');
|
||||
let record = store.createRecord('host-catalog', {});
|
||||
|
||||
let serializedRecord = record.serialize();
|
||||
|
||||
assert.ok(serializedRecord);
|
||||
});
|
||||
|
||||
test('it serializes a static host-catalog as expected', async function (assert) {
|
||||
assert.expect(1);
|
||||
const store = this.owner.lookup('service:store');
|
||||
const serializer = store.serializerFor('host-catalog');
|
||||
const record = store.createRecord('host-catalog', {
|
||||
name: 'static',
|
||||
description: 'this is a static host-catalog',
|
||||
type: 'static',
|
||||
attributes: {
|
||||
disable_credential_rotation: true,
|
||||
tenant_id: 'a1b2c3',
|
||||
},
|
||||
});
|
||||
const snapshot = record._createSnapshot();
|
||||
const serializedRecord = serializer.serialize(snapshot);
|
||||
const expectedResult = {
|
||||
name: 'static',
|
||||
description: 'this is a static host-catalog',
|
||||
type: 'static',
|
||||
};
|
||||
assert.deepEqual(serializedRecord, expectedResult);
|
||||
});
|
||||
|
||||
test('it serializes an AWS plugin as expected, ignoring read-only and azure fields', async function (assert) {
|
||||
assert.expect(1);
|
||||
const store = this.owner.lookup('service:store');
|
||||
const serializer = store.serializerFor('host-catalog');
|
||||
const record = store.createRecord('host-catalog', {
|
||||
name: 'Aws',
|
||||
description: 'this is a Aws plugin host-catalog',
|
||||
type: 'plugin',
|
||||
plugin: { name: 'aws' }, // Read-only field
|
||||
disable_credential_rotation: true,
|
||||
tenant_id: 'a1b2c3',
|
||||
fake_field: 'testing fake field',
|
||||
client_id: 'a1b2c3',
|
||||
subscription_id: 'a1b2c3',
|
||||
region: 'spain',
|
||||
secret_id: 'a1b2c3', // Read-only field
|
||||
access_key_id: '1a2b3c', // Azure specific field
|
||||
});
|
||||
const snapshot = record._createSnapshot();
|
||||
const serializedRecord = serializer.serialize(snapshot);
|
||||
const expectedResult = {
|
||||
name: 'Aws',
|
||||
description: 'this is a Aws plugin host-catalog',
|
||||
type: 'plugin',
|
||||
attributes: {
|
||||
disable_credential_rotation: true,
|
||||
tenant_id: 'a1b2c3',
|
||||
client_id: 'a1b2c3',
|
||||
subscription_id: 'a1b2c3',
|
||||
},
|
||||
};
|
||||
assert.deepEqual(serializedRecord, expectedResult);
|
||||
});
|
||||
|
||||
test('it serializes an Azure plugin as expected, ignoring read-only and Aws fields', async function (assert) {
|
||||
assert.expect(1);
|
||||
const store = this.owner.lookup('service:store');
|
||||
const serializer = store.serializerFor('host-catalog');
|
||||
const record = store.createRecord('host-catalog', {
|
||||
name: 'Azure',
|
||||
description: 'this is a Azure plugin host-catalog',
|
||||
type: 'plugin',
|
||||
plugin: { name: 'azure' }, // Read-only field
|
||||
disable_credential_rotation: true,
|
||||
region: 'spain',
|
||||
access_key_id: 'a1b2c3', // Read-only field
|
||||
fake_field: 'testing fake field',
|
||||
});
|
||||
const snapshot = record._createSnapshot();
|
||||
const serializedRecord = serializer.serialize(snapshot);
|
||||
const expectedResult = {
|
||||
name: 'Azure',
|
||||
description: 'this is a Azure plugin host-catalog',
|
||||
type: 'plugin',
|
||||
attributes: {
|
||||
disable_credential_rotation: true,
|
||||
region: 'spain',
|
||||
},
|
||||
};
|
||||
assert.deepEqual(serializedRecord, expectedResult);
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user