| /** |
| * 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); |
| }); |
| }); |