Main to session recording (#178)

* fix: 🐛 add model hook to host route for dynamic host catalogs (#1659)

* fix: 🐛 add model hook to host route for dynamic host catalogs

✅ Closes: ICU-8594

* refactor: 💡 remove page formatting for host route

* [COMPLIANCE] Add Copyright and License Headers (#1660)

Co-authored-by: hashicorp-copywrite[bot] <110428419+hashicorp-copywrite[bot]@users.noreply.github.com>
Co-authored-by: Carlos Alcaide Corvo <ccorvo@hashicorp.com>

* chore(deps-dev): bump webpack from 5.59.1 to 5.76.0 (#1654)

Bumps [webpack](https://github.com/webpack/webpack) from 5.59.1 to 5.76.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.59.1...v5.76.0)

---
updated-dependencies:
- dependency-name: webpack
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Randall Morey <randall@randallmorey.com>
Co-authored-by: Carlos Alcaide Corvo <ccorvo@hashicorp.com>

* Feature metadata (#1661)

* feat: 🎸 load edition from controller-metadata.json

* refactor: 💡 rename edition and add licensed features support

* chore: 🤖 support dev toggling of licensed features

* chore: 🤖 rename ent edition

* Update ui/admin/app/services/feature-edition.js

* Update ui/admin/app/instance-initializers/feature-edition.js

Co-authored-by: Zhihe Li <zhihe.li@hashicorp.com>

* chore: 🤖 cleanup

* chore: 🤖 feature edition disabled in tests / fix test cases

* test: 💍 remove feature disable calls in tests

* test: 💍 fix broken tests

* fix: 🐛 fix config bug

* fix: 🐛 fix broken test due to feature flags

---------

Co-authored-by: Zhihe Li <zhihe.li@hashicorp.com>

* chore: 🤖 yarn.lock update

* fix: 🐛 fix test features

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: lisbet-alvarez <107949262+lisbet-alvarez@users.noreply.github.com>
Co-authored-by: hashicorp-copywrite[bot] <110428419+hashicorp-copywrite[bot]@users.noreply.github.com>
Co-authored-by: Carlos Alcaide Corvo <ccorvo@hashicorp.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Zhihe Li <zhihe.li@hashicorp.com>
Co-authored-by: github-team-secure-boundary <hc-github-team-secure-boundary@hashicorp.com>
Co-authored-by: hc-github-team-secure-boundary <82989682+hc-github-team-secure-boundary@users.noreply.github.com>
This commit is contained in:
40 files changed
+351 -335

No files matched your search

@@ -17,11 +17,11 @@ module('Unit | Abilities | credential-library', function (hooks) {
hooks.beforeEach(function () {
features = this.owner.lookup('service:features');
features.enable('ssh-target');
});
test('can read credential library type when authorized and feature is enabled', function (assert) {
assert.expect(2);
features.enable('ssh-target');
const canService = this.owner.lookup('service:can');
const store = this.owner.lookup('service:store');
const credentialLibrary = store.createRecord('credential-library', {
@@ -35,6 +35,7 @@ module('Unit | Abilities | credential-library', function (hooks) {
test('cannot read credential library type when unauthorized and feature is enabled', function (assert) {
assert.expect(2);
features.enable('ssh-target');
const canService = this.owner.lookup('service:can');
const store = this.owner.lookup('service:store');
const credentialLibrary = store.createRecord('credential-library', {
@@ -47,30 +48,30 @@ module('Unit | Abilities | credential-library', function (hooks) {
});
test('cannot read credential library type when unauthorized and feature is disabled', function (assert) {
assert.expect(2);
assert.expect(3);
const canService = this.owner.lookup('service:can');
const store = this.owner.lookup('service:store');
const featuresService = this.owner.lookup('service:features');
featuresService.disable('ssh-target');
const credentialLibrary = store.createRecord('credential-library', {
authorized_actions: [],
type: TYPE_CREDENTIAL_LIBRARY_VAULT_SSH_CERTIFICATE,
});
assert.false(featuresService.isEnabled('ssh-target'));
assert.false(canService.can('read credential-library', credentialLibrary));
credentialLibrary.type = TYPE_CREDENTIAL_LIBRARY_VAULT_GENERIC;
assert.false(canService.can('read credential-library', credentialLibrary));
});
test('can read vault-generic but not vault-ssh-certificate when authorized and feature is disabled', function (assert) {
assert.expect(2);
assert.expect(3);
const canService = this.owner.lookup('service:can');
const store = this.owner.lookup('service:store');
const featuresService = this.owner.lookup('service:features');
featuresService.disable('ssh-target');
const credentialLibrary = store.createRecord('credential-library', {
authorized_actions: ['read'],
type: TYPE_CREDENTIAL_LIBRARY_VAULT_SSH_CERTIFICATE,
});
assert.false(featuresService.isEnabled('ssh-target'));
assert.false(canService.can('read credential-library', credentialLibrary));
credentialLibrary.type = TYPE_CREDENTIAL_LIBRARY_VAULT_GENERIC;
assert.true(canService.can('read credential-library', credentialLibrary));
@@ -9,16 +9,16 @@ import { setupTest } from 'ember-qunit';
module('Unit | Abilities | credential', function (hooks) {
setupTest(hooks);
let features;
let featuresService;
hooks.beforeEach(function () {
// Enable json-credentials feature by default
features = this.owner.lookup('service:features');
features.enable('json-credentials');
featuresService = this.owner.lookup('service:features');
});
test('can read credentials, including JSON credentials, when authorized and json-credentials feature is enabled', function (assert) {
assert.expect(3);
featuresService.enable('json-credentials');
const service = this.owner.lookup('service:can');
const store = this.owner.lookup('service:store');
const credential = store.createRecord('credential', {
@@ -34,6 +34,7 @@ module('Unit | Abilities | credential', function (hooks) {
test('cannot read credentials, including JSON credentials, when unauthorized and json-credentials feature is enabled', function (assert) {
assert.expect(3);
featuresService.enable('json-credentials');
const service = this.owner.lookup('service:can');
const store = this.owner.lookup('service:store');
const credential = store.createRecord('credential', {
@@ -48,15 +49,14 @@ module('Unit | Abilities | credential', function (hooks) {
});
test('cannot read credentials, including JSON credentials, when unauthorized and json-credentials feature is disabled', function (assert) {
assert.expect(3);
assert.expect(4);
const service = this.owner.lookup('service:can');
const featuresService = this.owner.lookup('service:features');
featuresService.disable('json-credentials');
const store = this.owner.lookup('service:store');
const credential = store.createRecord('credential', {
authorized_actions: [],
type: 'json',
});
assert.false(featuresService.isEnabled('json-credentials'));
assert.false(service.can('read credential', credential));
credential.type = 'username_password';
assert.false(service.can('read credential', credential));
@@ -65,14 +65,14 @@ module('Unit | Abilities | credential', function (hooks) {
});
test('can read credentials, excepting JSON credentials, when authorized and json-credentials feature is disabled', function (assert) {
assert.expect(3);
features.disable('json-credentials');
assert.expect(4);
const service = this.owner.lookup('service:can');
const store = this.owner.lookup('service:store');
const credential = store.createRecord('credential', {
authorized_actions: ['read'],
type: 'json',
});
assert.false(featuresService.isEnabled('json-credentials'));
assert.false(service.can('read credential', credential));
credential.type = 'username_password';
assert.true(service.can('read credential', credential));
@@ -1,3 +1,8 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import Application from '@ember/application';
import config from 'admin/config/environment';
@@ -1,3 +1,8 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import { module, test } from 'qunit';
import { setupTest } from 'admin/tests/helpers';