Refactor app normalize to deal with nestedAttributes and nestedSecrets as expected, before it was not working as expected. Refactor the host catalog normalize method. Add normalize test on host catalog to validate changes on normalize methods.
322 lines
9.1 KiB
JavaScript
322 lines
9.1 KiB
JavaScript
import { module, test } from 'qunit';
|
|
import { setupTest } from 'ember-qunit';
|
|
|
|
module('Unit | Serializer | host catalog', function (hooks) {
|
|
setupTest(hooks);
|
|
|
|
test('it serializes records', function (assert) {
|
|
const store = this.owner.lookup('service:store');
|
|
const record = store.createRecord('host-catalog', {});
|
|
|
|
assert.ok(record.serialize());
|
|
});
|
|
|
|
test('it serializes a static host-catalog as expected', async function (assert) {
|
|
assert.expect(1);
|
|
const store = this.owner.lookup('service:store');
|
|
const record = store.createRecord('host-catalog', {
|
|
name: 'static',
|
|
description: 'this is a static host-catalog',
|
|
type: 'static',
|
|
});
|
|
const expectedResult = {
|
|
name: 'static',
|
|
description: 'this is a static host-catalog',
|
|
type: 'static',
|
|
};
|
|
assert.deepEqual(record.serialize(), expectedResult);
|
|
});
|
|
|
|
test('it serializes a new aws plugin as expected, ignoring azure fields', async function (assert) {
|
|
assert.expect(1);
|
|
const store = this.owner.lookup('service:store');
|
|
const record = store.createRecord('host-catalog', {
|
|
compositeType: 'aws',
|
|
name: 'AWS',
|
|
description: 'this is a Aws plugin host-catalog',
|
|
disable_credential_rotation: true,
|
|
// these are AWS fields and should be included
|
|
region: 'spain',
|
|
access_key_id: 'foobars',
|
|
secret_access_key: 'testing',
|
|
// these are Azure fields and should be excluded
|
|
tenant_id: 'a1b2c3',
|
|
client_id: 'a1b2c3',
|
|
subscription_id: 'a1b2c3',
|
|
secret_id: 'a1b2c3',
|
|
secret_value: 'a1b2c3',
|
|
});
|
|
const expectedResult = {
|
|
name: 'AWS',
|
|
description: 'this is a Aws plugin host-catalog',
|
|
type: 'plugin',
|
|
attributes: {
|
|
disable_credential_rotation: true,
|
|
region: 'spain',
|
|
},
|
|
secrets: {
|
|
access_key_id: 'foobars',
|
|
secret_access_key: 'testing',
|
|
},
|
|
};
|
|
assert.deepEqual(record.serialize(), expectedResult);
|
|
});
|
|
|
|
test('it serializes a new azure record as expected, ignoring aws fields', async function (assert) {
|
|
assert.expect(1);
|
|
const store = this.owner.lookup('service:store');
|
|
const record = store.createRecord('host-catalog', {
|
|
compositeType: 'azure',
|
|
name: 'Azure',
|
|
description: 'this is a Azure plugin host-catalog',
|
|
disable_credential_rotation: true,
|
|
region: 'spain',
|
|
access_key_id: 'foobars',
|
|
secret_access_key: 'testing',
|
|
// these are Azure fields and should be excluded
|
|
tenant_id: 'a1b2c3',
|
|
client_id: 'a1b2c3',
|
|
subscription_id: 'a1b2c3',
|
|
secret_id: 'a1b2c3',
|
|
secret_value: 'a1b2c3',
|
|
});
|
|
const expectedResult = {
|
|
name: 'Azure',
|
|
description: 'this is a Azure plugin host-catalog',
|
|
type: 'plugin',
|
|
attributes: {
|
|
disable_credential_rotation: true,
|
|
tenant_id: 'a1b2c3',
|
|
client_id: 'a1b2c3',
|
|
subscription_id: 'a1b2c3',
|
|
},
|
|
secrets: {
|
|
secret_id: 'a1b2c3',
|
|
secret_value: 'a1b2c3',
|
|
},
|
|
};
|
|
assert.deepEqual(record.serialize(), expectedResult);
|
|
});
|
|
|
|
test('it serializes an existing aws record correctly', function (assert) {
|
|
assert.expect(1);
|
|
const store = this.owner.lookup('service:store');
|
|
store.push({
|
|
data: {
|
|
id: '1',
|
|
type: 'host-catalog',
|
|
attributes: {
|
|
type: 'plugin',
|
|
name: 'aws',
|
|
description: 'test description',
|
|
plugin: {
|
|
name: 'aws',
|
|
},
|
|
region: 'andorra',
|
|
},
|
|
},
|
|
});
|
|
const record = store.peekRecord('host-catalog', '1');
|
|
const expectedResult = {
|
|
type: 'plugin',
|
|
name: 'aws',
|
|
description: 'test description',
|
|
attributes: {
|
|
disable_credential_rotation: false,
|
|
region: 'andorra',
|
|
},
|
|
};
|
|
assert.deepEqual(record.serialize(), expectedResult);
|
|
});
|
|
|
|
test('it serializes an existing azure record correctly', function (assert) {
|
|
assert.expect(1);
|
|
const store = this.owner.lookup('service:store');
|
|
store.push({
|
|
data: {
|
|
id: '2',
|
|
type: 'host-catalog',
|
|
attributes: {
|
|
type: 'plugin',
|
|
name: 'azure',
|
|
description: 'test description',
|
|
plugin: {
|
|
name: 'azure',
|
|
},
|
|
tenant_id: 'a1b2c3',
|
|
client_id: 'foobars12',
|
|
subscription_id: 'barsfoo21',
|
|
},
|
|
},
|
|
});
|
|
const record = store.peekRecord('host-catalog', '2');
|
|
const expectedResult = {
|
|
type: 'plugin',
|
|
name: 'azure',
|
|
description: 'test description',
|
|
attributes: {
|
|
disable_credential_rotation: false,
|
|
tenant_id: 'a1b2c3',
|
|
client_id: 'foobars12',
|
|
subscription_id: 'barsfoo21',
|
|
},
|
|
};
|
|
assert.deepEqual(record.serialize(), expectedResult);
|
|
});
|
|
|
|
test('it normalizes an static host catalog as expected', function (assert) {
|
|
assert.expect(1);
|
|
const store = this.owner.lookup('service:store');
|
|
const serializer = store.serializerFor('host-catalog');
|
|
const hostCatalog = store.createRecord('host-catalog').constructor;
|
|
const payload = {
|
|
id: '1',
|
|
name: 'Host catalog test',
|
|
description: 'Test description',
|
|
authorized_actions: ['no-op'],
|
|
type: 'static',
|
|
};
|
|
const normalized = serializer.normalizeSingleResponse(
|
|
store,
|
|
hostCatalog,
|
|
payload
|
|
);
|
|
assert.deepEqual(normalized, {
|
|
data: {
|
|
id: '1',
|
|
type: 'host-catalog',
|
|
attributes: {
|
|
name: 'Host catalog test',
|
|
description: 'Test description',
|
|
authorized_actions: ['no-op'],
|
|
type: 'static',
|
|
access_key_id: null,
|
|
secret_access_key: null,
|
|
secret_id: null,
|
|
secret_value: null,
|
|
},
|
|
relationships: {},
|
|
},
|
|
included: [],
|
|
});
|
|
});
|
|
|
|
test('it normalizes an aws plugin type host catalog as expected', function (assert) {
|
|
assert.expect(1);
|
|
const store = this.owner.lookup('service:store');
|
|
const serializer = store.serializerFor('host-catalog');
|
|
const hostCatalog = store.createRecord('host-catalog').constructor;
|
|
const payload = {
|
|
id: '1',
|
|
name: 'Host catalog test',
|
|
description: 'Test description',
|
|
authorized_actions: ['no-op'],
|
|
type: 'plugin',
|
|
plugin: {
|
|
id: 'plugin-id-5',
|
|
name: 'aws',
|
|
description: 'aws host catalog',
|
|
},
|
|
attributes: {
|
|
disable_credential_rotation: false,
|
|
region: 'Illinois',
|
|
},
|
|
secrets: {
|
|
access_key_id: '0xF3B0a6f8',
|
|
secret_access_key: 'zq{2:IVc8@W^',
|
|
},
|
|
};
|
|
const normalized = serializer.normalizeSingleResponse(
|
|
store,
|
|
hostCatalog,
|
|
payload
|
|
);
|
|
assert.deepEqual(normalized, {
|
|
data: {
|
|
id: '1',
|
|
type: 'host-catalog',
|
|
attributes: {
|
|
name: 'Host catalog test',
|
|
type: 'plugin',
|
|
description: 'Test description',
|
|
authorized_actions: ['no-op'],
|
|
plugin: {
|
|
id: 'plugin-id-5',
|
|
name: 'aws',
|
|
description: 'aws host catalog',
|
|
},
|
|
disable_credential_rotation: false,
|
|
region: 'Illinois',
|
|
access_key_id: '0xF3B0a6f8',
|
|
secret_access_key: 'zq{2:IVc8@W^',
|
|
secret_id: null,
|
|
secret_value: null,
|
|
},
|
|
relationships: {},
|
|
},
|
|
included: [],
|
|
});
|
|
});
|
|
|
|
test('it normalizes an azure plugin type host catalog as expected', function (assert) {
|
|
assert.expect(1);
|
|
const store = this.owner.lookup('service:store');
|
|
const serializer = store.serializerFor('host-catalog');
|
|
const hostCatalog = store.createRecord('host-catalog').constructor;
|
|
const payload = {
|
|
id: '1',
|
|
name: 'Host catalog test',
|
|
description: 'Test description',
|
|
authorized_actions: ['no-op', 'read', 'update', 'delete'],
|
|
type: 'plugin',
|
|
plugin: {
|
|
id: 'plugin-id-6',
|
|
name: 'azure',
|
|
description: 'azure host catalog',
|
|
},
|
|
attributes: {
|
|
disable_credential_rotation: true,
|
|
tenant_id: 'tenant',
|
|
client_id: 'client',
|
|
subscription_id: 'subscription',
|
|
},
|
|
secrets: {
|
|
secret_id: '0xF3B0a6f8',
|
|
secret_value: 'zq{2:IVc8@W^',
|
|
},
|
|
};
|
|
const normalized = serializer.normalizeSingleResponse(
|
|
store,
|
|
hostCatalog,
|
|
payload
|
|
);
|
|
assert.deepEqual(normalized, {
|
|
data: {
|
|
id: '1',
|
|
type: 'host-catalog',
|
|
attributes: {
|
|
name: 'Host catalog test',
|
|
type: 'plugin',
|
|
description: 'Test description',
|
|
authorized_actions: ['no-op', 'read', 'update', 'delete'],
|
|
plugin: {
|
|
id: 'plugin-id-6',
|
|
name: 'azure',
|
|
description: 'azure host catalog',
|
|
},
|
|
disable_credential_rotation: true,
|
|
secret_id: '0xF3B0a6f8',
|
|
secret_value: 'zq{2:IVc8@W^',
|
|
client_id: 'client',
|
|
tenant_id: 'tenant',
|
|
subscription_id: 'subscription',
|
|
access_key_id: null,
|
|
secret_access_key: null,
|
|
},
|
|
relationships: {},
|
|
},
|
|
included: [],
|
|
});
|
|
});
|
|
});
|