open-vault/ui/tests/integration/components/features-selection-test.js

59 lines
2.0 KiB
JavaScript

/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import { module, test } from 'qunit';
import { setupRenderingTest } from 'ember-qunit';
import { render } from '@ember/test-helpers';
import { create } from 'ember-cli-page-object';
import featuresSelection from 'vault/tests/pages/components/wizard/features-selection';
import hbs from 'htmlbars-inline-precompile';
import Service from '@ember/service';
const component = create(featuresSelection);
const permissionsService = Service.extend({
hasPermission(path) {
// This enables the Secrets and Authentication wizard items and disables the others.
const allowedPaths = ['sys/mounts/example', 'sys/auth', 'sys/auth/foo', 'sys/wrapping/wrap'];
if (allowedPaths.includes(path)) {
return true;
}
return false;
},
});
module('Integration | Component | features-selection', function (hooks) {
setupRenderingTest(hooks);
hooks.beforeEach(function () {
this.owner.register('service:permissions', permissionsService);
});
test('it disables and enables wizard items according to user permissions', async function (assert) {
assert.expect(4);
const enabled = { Secrets: true, Authentication: true, Policies: false, Tools: false };
await render(hbs`<Wizard::FeaturesSelection/>`);
component.wizardItems.forEach((i) => {
assert.strictEqual(
i.hasDisabledTooltip,
!enabled[i.text],
'shows a tooltip only when the wizard item is not enabled'
);
});
});
test('it disables the start button if no wizard items are checked', async function (assert) {
await render(hbs`<Wizard::FeaturesSelection/>`);
assert.true(component.hasDisabledStartButton);
});
test('it enables the start button when user has permission and wizard items are checked', async function (assert) {
await render(hbs`<Wizard::FeaturesSelection/>`);
await component.selectSecrets();
assert.false(component.hasDisabledStartButton);
});
});