open-vault/ui/tests/integration/helpers/has-feature-test.js

47 lines
1.6 KiB
JavaScript

/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import Service from '@ember/service';
import { module, test } from 'qunit';
import { setupRenderingTest } from 'ember-qunit';
import { render } from '@ember/test-helpers';
import hbs from 'htmlbars-inline-precompile';
import waitForError from 'vault/tests/helpers/wait-for-error';
const versionStub = Service.extend({
features: null,
});
module('helper:has-feature', function (hooks) {
setupRenderingTest(hooks);
hooks.beforeEach(function () {
this.owner.register('service:version', versionStub);
this.versionService = this.owner.lookup('service:version');
});
test('it asserts on unknown features', async function (assert) {
const promise = waitForError();
render(hbs`{{has-feature 'New Feature'}}`);
const err = await promise;
assert.ok(
err.message.includes('New Feature is not one of the available values for Vault Enterprise features.'),
'asserts when an unknown feature is passed as an arg'
);
});
test('it is true with existing features', async function (assert) {
this.set('versionService.features', ['HSM']);
await render(hbs`{{if (has-feature 'HSM') 'It works' null}}`);
assert.dom(this.element).hasText('It works', 'present features evaluate to true');
});
test('it is false with missing features', async function (assert) {
this.set('versionService.features', ['MFA']);
await render(hbs`{{if (has-feature 'HSM') 'It works' null}}`);
assert.dom(this.element).hasText('', 'missing features evaluate to false');
});
});