mirror of
https://github.com/hashicorp/vault.git
synced 2025-08-22 15:11:07 +02:00
65 lines
1.8 KiB
JavaScript
65 lines
1.8 KiB
JavaScript
/**
|
|
* Copyright (c) HashiCorp, Inc.
|
|
* SPDX-License-Identifier: BUSL-1.1
|
|
*/
|
|
|
|
import { module, test } from 'qunit';
|
|
import { setupTest } from 'vault/tests/helpers';
|
|
|
|
module('Unit | Serializer | ldap/role', function (hooks) {
|
|
setupTest(hooks);
|
|
|
|
hooks.beforeEach(function () {
|
|
const store = this.owner.lookup('service:store');
|
|
this.model = store.createRecord('ldap/role', {
|
|
backend: 'ldap',
|
|
name: 'test-role',
|
|
dn: 'cn=hashicorp,ou=Users,dc=hashicorp,dc=com',
|
|
rotation_period: '24h',
|
|
username: 'hashicorp',
|
|
creation_ldif: 'foo',
|
|
deletion_ldif: 'bar',
|
|
rollback_ldif: 'baz',
|
|
username_template: 'default',
|
|
default_ttl: '1h',
|
|
max_ttl: '24h',
|
|
});
|
|
});
|
|
|
|
test('it should serialize attributes based on type', async function (assert) {
|
|
assert.expect(11);
|
|
|
|
const serializeAndAssert = (type) => {
|
|
this.model.type = type;
|
|
const payload = this.model.serialize();
|
|
// intentionally not using fieldsForType from model to detect any drift
|
|
const fieldsForType = {
|
|
static: ['username', 'dn', 'rotation_period'],
|
|
dynamic: [
|
|
'default_ttl',
|
|
'max_ttl',
|
|
'username_template',
|
|
'creation_ldif',
|
|
'deletion_ldif',
|
|
'rollback_ldif',
|
|
],
|
|
}[type];
|
|
|
|
assert.strictEqual(
|
|
Object.keys(payload).length,
|
|
fieldsForType.length,
|
|
`Correct number of keys exist in serialized payload for ${type} role type`
|
|
);
|
|
Object.keys(payload).forEach((key) => {
|
|
assert.true(
|
|
fieldsForType.includes(key),
|
|
`${key} property exists in serialized payload for ${type} role type`
|
|
);
|
|
});
|
|
};
|
|
|
|
serializeAndAssert('static');
|
|
serializeAndAssert('dynamic');
|
|
});
|
|
});
|