diff --git a/ui/app/components/ui-wizard.js b/ui/app/components/ui-wizard.js deleted file mode 100644 index 1e14b4391713..000000000000 --- a/ui/app/components/ui-wizard.js +++ /dev/null @@ -1,58 +0,0 @@ -/** - * Copyright (c) HashiCorp, Inc. - * SPDX-License-Identifier: BUSL-1.1 - */ - -import { service } from '@ember/service'; -import { alias, or } from '@ember/object/computed'; -import Component from '@ember/component'; -import { matchesState } from 'xstate'; - -export default Component.extend({ - classNames: ['ui-wizard-container'], - wizard: service(), - auth: service(), - router: service(), - - shouldRender: or('auth.currentToken', 'wizard.showWhenUnauthenticated'), - currentState: alias('wizard.currentState'), - featureState: alias('wizard.featureState'), - featureComponent: alias('wizard.featureComponent'), - tutorialComponent: alias('wizard.tutorialComponent'), - componentState: alias('wizard.componentState'), - nextFeature: alias('wizard.nextFeature'), - nextStep: alias('wizard.nextStep'), - currentRouteName: alias('router.currentRouteName'), - - actions: { - dismissWizard() { - this.wizard.transitionTutorialMachine(this.currentState, 'DISMISS'); - }, - - advanceWizard() { - const inInit = matchesState('init', this.wizard.currentState); - const event = inInit ? this.wizard.initEvent || 'CONTINUE' : 'CONTINUE'; - this.wizard.transitionTutorialMachine(this.currentState, event); - }, - - advanceFeature() { - this.wizard.transitionFeatureMachine(this.featureState, 'CONTINUE'); - }, - - finishFeature() { - this.wizard.transitionFeatureMachine(this.featureState, 'DONE'); - }, - - repeatStep() { - this.wizard.transitionFeatureMachine(this.featureState, 'REPEAT', this.componentState); - }, - - resetFeature() { - this.wizard.transitionFeatureMachine(this.featureState, 'RESET', this.componentState); - }, - - pauseWizard() { - this.wizard.transitionTutorialMachine(this.currentState, 'PAUSE'); - }, - }, -}); diff --git a/ui/app/components/wizard-content.js b/ui/app/components/wizard-content.js deleted file mode 100644 index 0cb344d1d57f..000000000000 --- a/ui/app/components/wizard-content.js +++ /dev/null @@ -1,123 +0,0 @@ -/** - * Copyright (c) HashiCorp, Inc. - * SPDX-License-Identifier: BUSL-1.1 - */ - -import { alias, reads } from '@ember/object/computed'; -import { service } from '@ember/service'; -import Component from '@ember/component'; -import { computed } from '@ember/object'; -import { FEATURE_MACHINE_STEPS, INIT_STEPS } from 'vault/helpers/wizard-constants'; - -export default Component.extend({ - wizard: service(), - classNames: ['ui-wizard'], - glyph: null, - headerText: null, - selectProgress: null, - currentMachine: alias('wizard.currentMachine'), - tutorialState: alias('wizard.currentState'), - tutorialComponent: alias('wizard.tutorialComponent'), - showProgress: computed( - 'tutorialComponent', - 'tutorialState', - 'wizard.{featureComponent,featureMachineHistory}', - function () { - if (!this.tutorialComponent) return; - return ( - this.tutorialComponent.includes('active') && - (this.tutorialState.includes('init.active') || - (this.wizard.featureComponent && this.wizard.featureMachineHistory)) - ); - } - ), - featureMachineHistory: alias('wizard.featureMachineHistory'), - totalFeatures: reads('wizard.featureList.length'), - completedFeatures: computed('wizard.currentMachine', function () { - return this.wizard.getCompletedFeatures(); - }), - currentFeatureProgress: computed( - 'currentMachine', - 'featureMachineHistory.[]', - 'tutorialState', - function () { - if (this.tutorialState.includes('active.feature')) { - let totalSteps = FEATURE_MACHINE_STEPS[this.currentMachine]; - if (this.currentMachine === 'secrets') { - if (this.featureMachineHistory.includes('secret')) { - totalSteps = totalSteps['secret']['secret']; - } - if (this.featureMachineHistory.includes('list')) { - totalSteps = totalSteps['secret']['list']; - } - if (this.featureMachineHistory.includes('encryption')) { - totalSteps = totalSteps['encryption']; - } - if (this.featureMachineHistory.includes('role') || typeof totalSteps === 'object') { - totalSteps = totalSteps['role']; - } - } - return { - percentage: (this.featureMachineHistory.length / totalSteps) * 100, - feature: this.currentMachine, - text: `Step ${this.featureMachineHistory.length} of ${totalSteps}`, - }; - } - return null; - } - ), - currentTutorialProgress: computed('tutorialState', function () { - if (this.tutorialState.includes('init.active')) { - const currentStepName = this.tutorialState.split('.')[2]; - const currentStepNumber = INIT_STEPS.indexOf(currentStepName) + 1; - return { - percentage: (currentStepNumber / INIT_STEPS.length) * 100, - text: `Step ${currentStepNumber} of ${INIT_STEPS.length}`, - }; - } - return null; - }), - progressBar: computed( - 'completedFeatures', - 'currentFeature', - 'currentFeatureProgress.percentage', - 'currentMachine', - 'currentTutorialProgress.percentage', - 'wizard.featureList', - function () { - const bar = []; - if (this.currentTutorialProgress) { - bar.push({ - style: `width:${this.currentTutorialProgress.percentage}%;`, - completed: false, - showIcon: true, - }); - } else { - if (this.currentFeatureProgress) { - this.completedFeatures.forEach((feature) => { - bar.push({ style: 'width:100%;', completed: true, feature: feature, showIcon: true }); - }); - this.wizard.featureList.forEach((feature) => { - if (feature === this.currentMachine) { - bar.push({ - style: `width:${this.currentFeatureProgress.percentage}%;`, - completed: this.currentFeatureProgress.percentage == 100 ? true : false, - feature: feature, - showIcon: true, - }); - } else { - bar.push({ style: 'width:0%;', completed: false, feature: feature, showIcon: true }); - } - }); - } - } - return bar; - } - ), - - actions: { - dismissWizard() { - this.wizard.transitionTutorialMachine(this.wizard.currentState, 'DISMISS'); - }, - }, -}); diff --git a/ui/app/components/wizard/features-selection.js b/ui/app/components/wizard/features-selection.js deleted file mode 100644 index 25f557f2025b..000000000000 --- a/ui/app/components/wizard/features-selection.js +++ /dev/null @@ -1,149 +0,0 @@ -/** - * Copyright (c) HashiCorp, Inc. - * SPDX-License-Identifier: BUSL-1.1 - */ - -import { or, not } from '@ember/object/computed'; -import { service } from '@ember/service'; -import Component from '@ember/component'; -import { computed } from '@ember/object'; -import { FEATURE_MACHINE_TIME } from 'vault/helpers/wizard-constants'; - -export default Component.extend({ - wizard: service(), - version: service(), - permissions: service(), - - init() { - this._super(...arguments); - this.maybeHideFeatures(); - }, - - maybeHideFeatures() { - const features = this.allFeatures; - features.forEach((feat) => { - feat.disabled = this.doesNotHavePermission(feat.requiredPermissions); - }); - - if (this.showReplication === false) { - const feature = this.allFeatures.find((f) => f.key === 'replication'); - feature.show = false; - } - }, - - doesNotHavePermission(requiredPermissions) { - // requiredPermissions is an object of paths and capabilities defined within allFeatures. - // the expected shape is: - // { - // 'example/path': ['capability'], - // 'second/example/path': ['update', 'sudo'], - // } - return !Object.keys(requiredPermissions).every((path) => { - return this.permissions.hasPermission(path, requiredPermissions[path]); - }); - }, - - estimatedTime: computed('selectedFeatures', function () { - let time = 0; - for (const feature of Object.keys(FEATURE_MACHINE_TIME)) { - if (this.selectedFeatures.includes(feature)) { - time += FEATURE_MACHINE_TIME[feature]; - } - } - return time; - }), - selectProgress: computed('selectedFeatures', function () { - let bar = this.selectedFeatures.map((feature) => { - return { style: 'width:0%;', completed: false, showIcon: true, feature: feature }; - }); - if (bar.length === 0) { - bar = [{ style: 'width:0%;', showIcon: false }]; - } - return bar; - }), - allFeatures: computed(function () { - return [ - { - key: 'secrets', - name: 'Secrets', - steps: ['Enabling a Secrets Engine', 'Adding a secret'], - selected: false, - show: true, - disabled: false, - requiredPermissions: { - 'sys/mounts/example': ['update'], - }, - }, - { - key: 'authentication', - name: 'Authentication', - steps: ['Enabling an Auth Method', 'Managing your Auth Method'], - selected: false, - show: true, - disabled: false, - requiredPermissions: { - 'sys/auth': ['read'], - 'sys/auth/foo': ['update', 'sudo'], - }, - }, - { - key: 'policies', - name: 'Policies', - steps: [ - 'Choosing a policy type', - 'Creating a policy', - 'Deleting your policy', - 'Other types of policies', - ], - selected: false, - show: true, - disabled: false, - requiredPermissions: { - 'sys/policies/acl': ['list'], - }, - }, - { - key: 'replication', - name: 'Replication', - steps: ['Setting up replication', 'Your cluster information'], - selected: false, - show: true, - disabled: false, - requiredPermissions: { - 'sys/replication/performance/primary/enable': ['update'], - 'sys/replication/dr/primary/enable': ['update'], - }, - }, - { - key: 'tools', - name: 'Tools', - steps: ['Wrapping data', 'Lookup wrapped data', 'Rewrapping your data', 'Unwrapping your data'], - selected: false, - show: true, - disabled: false, - requiredPermissions: { - 'sys/wrapping/wrap': ['update'], - 'sys/wrapping/lookup': ['update'], - 'sys/wrapping/unwrap': ['update'], - 'sys/wrapping/rewrap': ['update'], - }, - }, - ]; - }), - - showReplication: or('version.hasPerfReplication', 'version.hasDRReplication'), - - selectedFeatures: computed('allFeatures.@each.selected', function () { - return this.allFeatures.filter((feature) => feature.selected).map((feature) => feature.key); - }), - - cannotStartWizard: not('selectedFeatures.length'), - - actions: { - saveFeatures() { - const wizard = this.wizard; - wizard.saveFeatures(this.selectedFeatures); - wizard.transitionTutorialMachine('active.select', 'CONTINUE'); - }, - }, -}); diff --git a/ui/app/components/wizard/mounts-wizard.js b/ui/app/components/wizard/mounts-wizard.js deleted file mode 100644 index e1ae26cf6d9a..000000000000 --- a/ui/app/components/wizard/mounts-wizard.js +++ /dev/null @@ -1,77 +0,0 @@ -/** - * Copyright (c) HashiCorp, Inc. - * SPDX-License-Identifier: BUSL-1.1 - */ - -import { service } from '@ember/service'; -import { alias, equal } from '@ember/object/computed'; -import Component from '@ember/component'; -import { computed } from '@ember/object'; -import { mountableEngines } from 'vault/helpers/mountable-secret-engines'; -import { methods } from 'vault/helpers/mountable-auth-methods'; -import { supportedSecretBackends } from 'vault/helpers/supported-secret-backends'; -const supportedSecrets = supportedSecretBackends(); -import { supportedAuthBackends } from 'vault/helpers/supported-auth-backends'; -const supportedAuth = supportedAuthBackends(); - -export default Component.extend({ - wizard: service(), - featureState: alias('wizard.featureState'), - currentState: alias('wizard.currentState'), - currentMachine: alias('wizard.currentMachine'), - mountSubtype: alias('wizard.componentState'), - fullNextStep: alias('wizard.nextStep'), - nextFeature: alias('wizard.nextFeature'), - nextStep: computed('fullNextStep', function () { - return this.fullNextStep.split('.').lastObject; - }), - needsConnection: equal('mountSubtype', 'database'), - needsEncryption: equal('mountSubtype', 'transit'), - stepComponent: alias('wizard.stepComponent'), - detailsComponent: computed('currentMachine', 'mountSubtype', function () { - const suffix = this.currentMachine === 'secrets' ? 'engine' : 'method'; - return this.mountSubtype ? `wizard/${this.mountSubtype}-${suffix}` : null; - }), - isSupported: computed('currentMachine', 'mountSubtype', function () { - if (this.currentMachine === 'secrets') { - return supportedSecrets.includes(this.mountSubtype); - } else { - return supportedAuth.includes(this.mountSubtype); - } - }), - mountName: computed('currentMachine', 'mountSubtype', function () { - if (this.currentMachine === 'secrets') { - const secret = mountableEngines().find((engine) => { - return engine.type === this.mountSubtype; - }); - if (secret) { - return secret.displayName; - } - } else { - var auth = methods().find((method) => { - return method.type === this.mountSubtype; - }); - if (auth) { - return auth.displayName; - } - } - return null; - }), - actionText: computed('mountSubtype', function () { - switch (this.mountSubtype) { - case 'aws': - return 'Generate credential'; - case 'ssh': - return 'Sign keys'; - case 'pki': - return 'Generate certificate'; - default: - return null; - } - }), - - onAdvance() {}, - onRepeat() {}, - onReset() {}, - onDone() {}, -}); diff --git a/ui/app/components/wizard/secrets-keymgmt.js b/ui/app/components/wizard/secrets-keymgmt.js deleted file mode 100644 index e17b3f80f54a..000000000000 --- a/ui/app/components/wizard/secrets-keymgmt.js +++ /dev/null @@ -1,32 +0,0 @@ -/** - * Copyright (c) HashiCorp, Inc. - * SPDX-License-Identifier: BUSL-1.1 - */ - -import Component from '@glimmer/component'; - -export default class WizardSecretsKeymgmtComponent extends Component { - get headerText() { - return { - provider: 'Creating a provider', - displayProvider: 'Distributing a key', - distribute: 'Creating a key', - }[this.args.featureState]; - } - - get body() { - return { - provider: 'This process connects an external provider to Vault. You will need its credentials.', - displayProvider: 'A key can now be created and distributed to this destination.', - distribute: 'This process creates a key and distributes it to your provider.', - }[this.args.featureState]; - } - - get instructions() { - return { - provider: 'Enter your provider details and click “Create provider“.', - displayProvider: 'Click “Distribute key” in the toolbar.', - distribute: 'Enter your key details and click “Distribute key”.', - }[this.args.featureState]; - } -} diff --git a/ui/app/helpers/wizard-constants.js b/ui/app/helpers/wizard-constants.js deleted file mode 100644 index 0b9321f957df..000000000000 --- a/ui/app/helpers/wizard-constants.js +++ /dev/null @@ -1,72 +0,0 @@ -/** - * Copyright (c) HashiCorp, Inc. - * SPDX-License-Identifier: BUSL-1.1 - */ - -import TutorialMachineConfig from 'vault/machines/tutorial-machine'; -import SecretsMachineConfig from 'vault/machines/secrets-machine'; -import PoliciesMachineConfig from 'vault/machines/policies-machine'; -import ReplicationMachineConfig from 'vault/machines/replication-machine'; -import ToolsMachineConfig from 'vault/machines/tools-machine'; -import AuthMachineConfig from 'vault/machines/auth-machine'; - -export const STORAGE_KEYS = { - TUTORIAL_STATE: 'vault:ui-tutorial-state', - FEATURE_LIST: 'vault:ui-feature-list', - FEATURE_STATE: 'vault:ui-feature-state', - FEATURE_STATE_HISTORY: 'vault:ui-feature-state-history', - COMPLETED_FEATURES: 'vault:ui-completed-list', - COMPONENT_STATE: 'vault:ui-component-state', - RESUME_URL: 'vault:ui-tutorial-resume-url', - RESUME_ROUTE: 'vault:ui-tutorial-resume-route', -}; - -export const MACHINES = { - tutorial: TutorialMachineConfig, - secrets: SecretsMachineConfig, - policies: PoliciesMachineConfig, - replication: ReplicationMachineConfig, - tools: ToolsMachineConfig, - authentication: AuthMachineConfig, -}; - -export const DEFAULTS = { - currentState: null, - featureList: null, - featureState: null, - currentMachine: null, - tutorialComponent: null, - featureComponent: null, - stepComponent: null, - detailsComponent: null, - componentState: null, - nextFeature: null, - nextStep: null, - featureMachineHistory: null, -}; - -export const FEATURE_MACHINE_STEPS = { - secrets: { - encryption: 5, - secret: { - list: 4, - secret: 5, - }, - role: 7, - provider: 8, - }, - policies: 5, - replication: 2, - tools: 8, - authentication: 4, -}; - -export const INIT_STEPS = ['setup', 'save', 'unseal', 'login']; - -export const FEATURE_MACHINE_TIME = { - secrets: 7, - policies: 5, - replication: 5, - tools: 8, - authentication: 5, -}; diff --git a/ui/app/machines/auth-machine.js b/ui/app/machines/auth-machine.js deleted file mode 100644 index a77f7d7ef7cd..000000000000 --- a/ui/app/machines/auth-machine.js +++ /dev/null @@ -1,55 +0,0 @@ -/** - * Copyright (c) HashiCorp, Inc. - * SPDX-License-Identifier: BUSL-1.1 - */ - -export default { - key: 'auth', - initial: 'idle', - on: { - RESET: 'idle', - DONE: 'complete', - }, - states: { - idle: { - onEntry: [ - { type: 'routeTransition', params: ['vault.cluster.settings.auth.enable'] }, - { type: 'render', level: 'feature', component: 'wizard/mounts-wizard' }, - { type: 'render', level: 'step', component: 'wizard/auth-idle' }, - ], - on: { - CONTINUE: 'enable', - }, - }, - enable: { - onEntry: [ - { type: 'render', level: 'feature', component: 'wizard/mounts-wizard' }, - { type: 'render', level: 'step', component: 'wizard/auth-enable' }, - ], - on: { - CONTINUE: 'config', - }, - }, - config: { - onEntry: [ - { type: 'render', level: 'feature', component: 'wizard/mounts-wizard' }, - { type: 'render', level: 'step', component: 'wizard/auth-config' }, - ], - on: { - CONTINUE: 'details', - }, - }, - details: { - onEntry: [ - { type: 'render', level: 'step', component: 'wizard/auth-details' }, - { type: 'render', level: 'feature', component: 'wizard/mounts-wizard' }, - ], - on: { - CONTINUE: 'complete', - }, - }, - complete: { - onEntry: ['completeFeature'], - }, - }, -}; diff --git a/ui/app/machines/policies-machine.js b/ui/app/machines/policies-machine.js deleted file mode 100644 index c24736310476..000000000000 --- a/ui/app/machines/policies-machine.js +++ /dev/null @@ -1,47 +0,0 @@ -/** - * Copyright (c) HashiCorp, Inc. - * SPDX-License-Identifier: BUSL-1.1 - */ - -export default { - key: 'policies', - initial: 'idle', - states: { - idle: { - onEntry: [ - { type: 'routeTransition', params: ['vault.cluster.policies.index', 'acl'] }, - { type: 'render', level: 'feature', component: 'wizard/policies-intro' }, - ], - on: { - CONTINUE: 'create', - }, - }, - create: { - on: { - CONTINUE: 'details', - }, - onEntry: [{ type: 'render', level: 'feature', component: 'wizard/policies-create' }], - }, - details: { - on: { - CONTINUE: 'delete', - }, - onEntry: [{ type: 'render', level: 'feature', component: 'wizard/policies-details' }], - }, - delete: { - on: { - CONTINUE: 'others', - }, - onEntry: [{ type: 'render', level: 'feature', component: 'wizard/policies-delete' }], - }, - others: { - on: { - CONTINUE: 'complete', - }, - onEntry: [{ type: 'render', level: 'feature', component: 'wizard/policies-others' }], - }, - complete: { - onEntry: ['completeFeature'], - }, - }, -}; diff --git a/ui/app/machines/replication-machine.js b/ui/app/machines/replication-machine.js deleted file mode 100644 index 4b95e70f7806..000000000000 --- a/ui/app/machines/replication-machine.js +++ /dev/null @@ -1,29 +0,0 @@ -/** - * Copyright (c) HashiCorp, Inc. - * SPDX-License-Identifier: BUSL-1.1 - */ - -export default { - key: 'replication', - initial: 'setup', - states: { - setup: { - on: { - ENABLEREPLICATION: 'details', - }, - onEntry: [ - { type: 'routeTransition', params: ['vault.cluster.replication'] }, - { type: 'render', level: 'feature', component: 'wizard/replication-setup' }, - ], - }, - details: { - on: { - CONTINUE: 'complete', - }, - onEntry: [{ type: 'render', level: 'feature', component: 'wizard/replication-details' }], - }, - complete: { - onEntry: ['completeFeature'], - }, - }, -}; diff --git a/ui/app/machines/secrets-machine.js b/ui/app/machines/secrets-machine.js deleted file mode 100644 index b47ce124e62b..000000000000 --- a/ui/app/machines/secrets-machine.js +++ /dev/null @@ -1,224 +0,0 @@ -/** - * Copyright (c) HashiCorp, Inc. - * SPDX-License-Identifier: BUSL-1.1 - */ - -import { supportedSecretBackends } from 'vault/helpers/supported-secret-backends'; -const supportedBackends = supportedSecretBackends(); - -export default { - key: 'secrets', - initial: 'idle', - on: { - RESET: 'idle', - DONE: 'complete', - ERROR: 'error', - }, - states: { - idle: { - onEntry: [ - { type: 'routeTransition', params: ['vault.cluster.settings.mount-secret-backend'] }, - { type: 'render', level: 'feature', component: 'wizard/mounts-wizard' }, - { type: 'render', level: 'step', component: 'wizard/secrets-idle' }, - ], - on: { - CONTINUE: 'enable', - }, - }, - enable: { - onEntry: [ - { type: 'render', level: 'feature', component: 'wizard/mounts-wizard' }, - { type: 'render', level: 'step', component: 'wizard/secrets-enable' }, - ], - on: { - CONTINUE: { - details: { cond: (type) => supportedBackends.includes(type) }, - list: { cond: (type) => !supportedBackends.includes(type) }, - }, - }, - }, - details: { - onEntry: [ - { type: 'render', level: 'feature', component: 'wizard/mounts-wizard' }, - { type: 'render', level: 'step', component: 'wizard/secrets-details' }, - ], - on: { - CONTINUE: { - connection: { - cond: (type) => type === 'database', - }, - role: { - cond: (type) => ['pki', 'aws', 'ssh'].includes(type), - }, - secret: { - cond: (type) => ['kv'].includes(type), - }, - encryption: { - cond: (type) => type === 'transit', - }, - provider: { - cond: (type) => type === 'keymgmt', - }, - }, - }, - }, - connection: { - onEntry: [ - { type: 'render', level: 'step', component: 'wizard/secrets-connection' }, - { type: 'render', level: 'feature', component: 'wizard/mounts-wizard' }, - ], - on: { - CONTINUE: 'displayConnection', - }, - }, - encryption: { - onEntry: [ - { type: 'render', level: 'feature', component: 'wizard/mounts-wizard' }, - { type: 'render', level: 'step', component: 'wizard/secrets-encryption' }, - ], - on: { - CONTINUE: 'display', - }, - }, - credentials: { - onEntry: [ - { type: 'render', level: 'step', component: 'wizard/secrets-credentials' }, - { type: 'render', level: 'feature', component: 'wizard/mounts-wizard' }, - ], - on: { - CONTINUE: 'display', - }, - }, - role: { - onEntry: [ - { type: 'render', level: 'step', component: 'wizard/secrets-role' }, - { type: 'render', level: 'feature', component: 'wizard/mounts-wizard' }, - ], - on: { - CONTINUE: 'displayRole', - }, - }, - displayRole: { - onEntry: [ - { type: 'render', level: 'step', component: 'wizard/secrets-display-role' }, - { type: 'render', level: 'feature', component: 'wizard/mounts-wizard' }, - ], - on: { - CONTINUE: 'credentials', - }, - }, - displayConnection: { - onEntry: [ - { type: 'render', level: 'step', component: 'wizard/secrets-connection-show' }, - { type: 'render', level: 'feature', component: 'wizard/mounts-wizard' }, - ], - on: { - CONTINUE: 'displayRoleDatabase', - }, - }, - displayRoleDatabase: { - onEntry: [ - { type: 'render', level: 'step', component: 'wizard/secrets-display-database-role' }, - { type: 'render', level: 'feature', component: 'wizard/mounts-wizard' }, - ], - on: { - CONTINUE: 'display', - }, - }, - secret: { - onEntry: [ - { type: 'render', level: 'step', component: 'wizard/secrets-secret' }, - { type: 'render', level: 'feature', component: 'wizard/mounts-wizard' }, - ], - on: { - CONTINUE: 'display', - }, - }, - provider: { - onEntry: [ - { type: 'render', level: 'step', component: 'wizard/secrets-keymgmt' }, - { type: 'render', level: 'feature', component: 'wizard/mounts-wizard' }, - ], - on: { - CONTINUE: 'displayProvider', - }, - }, - displayProvider: { - onEntry: [ - { type: 'render', level: 'step', component: 'wizard/secrets-keymgmt' }, - { type: 'render', level: 'feature', component: 'wizard/mounts-wizard' }, - ], - on: { - CONTINUE: 'distribute', - }, - }, - distribute: { - onEntry: [ - { type: 'render', level: 'step', component: 'wizard/secrets-keymgmt' }, - { type: 'render', level: 'feature', component: 'wizard/mounts-wizard' }, - ], - on: { - CONTINUE: 'display', - }, - }, - display: { - onEntry: [ - { type: 'render', level: 'step', component: 'wizard/secrets-display' }, - { type: 'render', level: 'feature', component: 'wizard/mounts-wizard' }, - ], - on: { - REPEAT: { - connection: { - cond: (type) => type === 'database', - actions: [{ type: 'routeTransition', params: ['vault.cluster.secrets.backend.create-root'] }], - }, - role: { - cond: (type) => ['pki', 'aws', 'ssh'].includes(type), - actions: [{ type: 'routeTransition', params: ['vault.cluster.secrets.backend.create-root'] }], - }, - secret: { - cond: (type) => ['kv'].includes(type), - actions: [{ type: 'routeTransition', params: ['vault.cluster.secrets.backend.create-root'] }], - }, - encryption: { - cond: (type) => type === 'transit', - actions: [{ type: 'routeTransition', params: ['vault.cluster.secrets.backend.create-root'] }], - }, - provider: { - cond: (type) => type === 'keymgmt', - actions: [ - { - type: 'routeTransition', - params: [ - 'vault.cluster.secrets.backend.create-root', - { queryParams: { itemType: 'provider' } }, - ], - }, - ], - }, - }, - }, - }, - list: { - onEntry: [ - { type: 'render', level: 'step', component: 'wizard/secrets-list' }, - { type: 'render', level: 'feature', component: 'wizard/mounts-wizard' }, - ], - on: { - CONTINUE: 'display', - }, - }, - error: { - onEntry: [ - { type: 'render', level: 'step', component: 'wizard/tutorial-error' }, - { type: 'render', level: 'feature', component: 'wizard/mounts-wizard' }, - ], - on: { - CONTINUE: 'complete', - }, - }, - complete: { - onEntry: ['completeFeature'], - }, - }, -}; diff --git a/ui/app/machines/tools-machine.js b/ui/app/machines/tools-machine.js deleted file mode 100644 index 9c76ad8b797f..000000000000 --- a/ui/app/machines/tools-machine.js +++ /dev/null @@ -1,65 +0,0 @@ -/** - * Copyright (c) HashiCorp, Inc. - * SPDX-License-Identifier: BUSL-1.1 - */ - -export default { - key: 'tools', - initial: 'wrap', - states: { - wrap: { - onEntry: [ - { type: 'routeTransition', params: ['vault.cluster.tools'] }, - { type: 'render', level: 'feature', component: 'wizard/tools-wrap' }, - ], - on: { - CONTINUE: 'wrapped', - }, - }, - wrapped: { - onEntry: [{ type: 'render', level: 'feature', component: 'wizard/tools-wrapped' }], - on: { - LOOKUP: 'lookup', - }, - }, - lookup: { - onEntry: [{ type: 'render', level: 'feature', component: 'wizard/tools-lookup' }], - on: { - CONTINUE: 'info', - }, - }, - info: { - onEntry: [{ type: 'render', level: 'feature', component: 'wizard/tools-info' }], - on: { - REWRAP: 'rewrap', - }, - }, - rewrap: { - onEntry: [{ type: 'render', level: 'feature', component: 'wizard/tools-rewrap' }], - on: { - CONTINUE: 'rewrapped', - }, - }, - rewrapped: { - onEntry: [{ type: 'render', level: 'feature', component: 'wizard/tools-rewrapped' }], - on: { - UNWRAP: 'unwrap', - }, - }, - unwrap: { - onEntry: [{ type: 'render', level: 'feature', component: 'wizard/tools-unwrap' }], - on: { - CONTINUE: 'unwrapped', - }, - }, - unwrapped: { - onEntry: [{ type: 'render', level: 'feature', component: 'wizard/tools-unwrapped' }], - on: { - CONTINUE: 'complete', - }, - }, - complete: { - onEntry: ['completeFeature'], - }, - }, -}; diff --git a/ui/app/machines/tutorial-machine.js b/ui/app/machines/tutorial-machine.js deleted file mode 100644 index 03e8eddf8bef..000000000000 --- a/ui/app/machines/tutorial-machine.js +++ /dev/null @@ -1,117 +0,0 @@ -/** - * Copyright (c) HashiCorp, Inc. - * SPDX-License-Identifier: BUSL-1.1 - */ - -export default { - key: 'tutorial', - initial: 'idle', - on: { - DISMISS: 'dismissed', - DONE: 'complete', - PAUSE: 'paused', - }, - states: { - init: { - key: 'init', - initial: 'idle', - on: { INITDONE: 'active.select' }, - onEntry: [ - 'showTutorialAlways', - { type: 'render', level: 'tutorial', component: 'wizard/tutorial-idle' }, - { type: 'render', level: 'feature', component: null }, - ], - onExit: ['showTutorialWhenAuthenticated', 'clearFeatureData'], - states: { - idle: { - on: { - START: 'active.setup', - SAVE: 'active.save', - UNSEAL: 'active.unseal', - LOGIN: 'active.login', - }, - }, - active: { - onEntry: { type: 'render', level: 'tutorial', component: 'wizard/tutorial-active' }, - states: { - setup: { - on: { TOSAVE: 'save' }, - onEntry: { type: 'render', level: 'feature', component: 'wizard/init-setup' }, - }, - save: { - on: { - TOUNSEAL: 'unseal', - TOLOGIN: 'login', - }, - onEntry: { type: 'render', level: 'feature', component: 'wizard/init-save-keys' }, - }, - unseal: { - on: { TOLOGIN: 'login' }, - onEntry: { type: 'render', level: 'feature', component: 'wizard/init-unseal' }, - }, - login: { - onEntry: { type: 'render', level: 'feature', component: 'wizard/init-login' }, - }, - }, - }, - }, - }, - active: { - key: 'feature', - initial: 'select', - onEntry: { type: 'render', level: 'tutorial', component: 'wizard/tutorial-active' }, - states: { - select: { - on: { - CONTINUE: 'feature', - }, - onEntry: { type: 'render', level: 'feature', component: 'wizard/features-selection' }, - }, - feature: {}, - }, - }, - idle: { - on: { - INIT: 'init.idle', - AUTH: 'active.select', - CONTINUE: 'active', - }, - onEntry: [ - { type: 'render', level: 'feature', component: null }, - { type: 'render', level: 'step', component: null }, - { type: 'render', level: 'detail', component: null }, - { type: 'render', level: 'tutorial', component: 'wizard/tutorial-idle' }, - ], - }, - dismissed: { - onEntry: [ - { type: 'render', level: 'tutorial', component: null }, - { type: 'render', level: 'feature', component: null }, - { type: 'render', level: 'step', component: null }, - { type: 'render', level: 'detail', component: null }, - 'handleDismissed', - ], - }, - paused: { - on: { - CONTINUE: 'active.feature', - }, - onEntry: [ - { type: 'render', level: 'feature', component: null }, - { type: 'render', level: 'step', component: null }, - { type: 'render', level: 'detail', component: null }, - { type: 'render', level: 'tutorial', component: 'wizard/tutorial-paused' }, - 'handlePaused', - ], - onExit: ['handleResume'], - }, - complete: { - onEntry: [ - { type: 'render', level: 'feature', component: null }, - { type: 'render', level: 'step', component: null }, - { type: 'render', level: 'detail', component: null }, - { type: 'render', level: 'tutorial', component: 'wizard/tutorial-complete' }, - ], - }, - }, -}; diff --git a/ui/app/services/wizard.js b/ui/app/services/wizard.js deleted file mode 100644 index 8f34e1aa3b0f..000000000000 --- a/ui/app/services/wizard.js +++ /dev/null @@ -1,362 +0,0 @@ -/** - * Copyright (c) HashiCorp, Inc. - * SPDX-License-Identifier: BUSL-1.1 - */ - -import { next } from '@ember/runloop'; -import { typeOf } from '@ember/utils'; -import Service, { inject as service } from '@ember/service'; -import { Machine } from 'xstate'; -import { capitalize } from '@ember/string'; - -import getStorage from 'vault/lib/token-storage'; -import { STORAGE_KEYS, DEFAULTS, MACHINES } from 'vault/helpers/wizard-constants'; -import { addToArray } from 'vault/helpers/add-to-array'; -const { - TUTORIAL_STATE, - COMPONENT_STATE, - FEATURE_STATE, - FEATURE_LIST, - FEATURE_STATE_HISTORY, - COMPLETED_FEATURES, - RESUME_URL, - RESUME_ROUTE, -} = STORAGE_KEYS; -const TutorialMachine = Machine(MACHINES.tutorial); -let FeatureMachine = null; - -export default Service.extend(DEFAULTS, { - router: service(), - showWhenUnauthenticated: false, - featureMachineHistory: null, - init() { - this._super(...arguments); - this.initializeMachines(); - }, - - initializeMachines() { - if (!this.storageHasKey(TUTORIAL_STATE)) { - const state = TutorialMachine.initialState; - this.saveState('currentState', state.value); - this.saveExtState(TUTORIAL_STATE, state.value); - } - this.saveState('currentState', this.getExtState(TUTORIAL_STATE)); - if (this.storageHasKey(COMPONENT_STATE)) { - this.set('componentState', this.getExtState(COMPONENT_STATE)); - } - const stateNodes = TutorialMachine.getStateNodes(this.currentState); - this.executeActions( - stateNodes.reduce((acc, node) => acc.concat(node.onEntry), []), - null, - 'tutorial' - ); - - if (this.storageHasKey(FEATURE_LIST)) { - this.set('featureList', this.getExtState(FEATURE_LIST)); - if (this.storageHasKey(FEATURE_STATE_HISTORY)) { - this.set('featureMachineHistory', this.getExtState(FEATURE_STATE_HISTORY)); - } - this.saveState( - 'featureState', - this.getExtState(FEATURE_STATE) || (FeatureMachine ? FeatureMachine.initialState : null) - ); - this.saveExtState(FEATURE_STATE, this.featureState); - this.buildFeatureMachine(); - } - }, - - clearFeatureData() { - const storage = this.storage(); - // empty storage - [FEATURE_LIST, FEATURE_STATE, FEATURE_STATE_HISTORY, COMPLETED_FEATURES].forEach((key) => - storage.removeItem(key) - ); - - this.set('currentMachine', null); - this.set('featureMachineHistory', null); - this.set('featureState', null); - this.set('featureList', null); - }, - - restartGuide() { - this.clearFeatureData(); - const storage = this.storage(); - // empty storage - [TUTORIAL_STATE, COMPONENT_STATE, RESUME_URL, RESUME_ROUTE].forEach((key) => storage.removeItem(key)); - // reset wizard state - this.setProperties(DEFAULTS); - // restart machines from blank state - this.initializeMachines(); - // progress machine to 'active.select' - this.transitionTutorialMachine('idle', 'AUTH'); - }, - - saveFeatureHistory(state) { - if ( - this.getCompletedFeatures().length === 0 && - this.featureMachineHistory === null && - (state === 'idle' || state === 'wrap') - ) { - const newHistory = [state]; - this.set('featureMachineHistory', newHistory); - } else { - if (this.featureMachineHistory) { - if (!this.featureMachineHistory.includes(state)) { - const newHistory = addToArray(this.featureMachineHistory, state); - this.set('featureMachineHistory', newHistory); - } else { - //we're repeating steps - const stepIndex = this.featureMachineHistory.indexOf(state); - const newHistory = this.featureMachineHistory.splice(0, stepIndex + 1); - this.set('featureMachineHistory', newHistory); - } - } - } - if (this.featureMachineHistory) { - this.saveExtState(FEATURE_STATE_HISTORY, this.featureMachineHistory); - } - }, - - saveState(stateType, state) { - if (state.value) { - state = state.value; - } - let stateKey = ''; - while (typeOf(state) === 'object') { - const newState = Object.keys(state); - stateKey += newState + '.'; - state = state[newState]; - } - stateKey += state; - this.set(stateType, stateKey); - if (stateType === 'featureState') { - //only track progress if we are on the first step of the first feature - this.saveFeatureHistory(state); - } - }, - - transitionTutorialMachine(currentState, event, extendedState) { - if (extendedState) { - this.set('componentState', extendedState); - this.saveExtState(COMPONENT_STATE, extendedState); - } - const { actions, value } = TutorialMachine.transition(currentState, event); - this.saveState('currentState', value); - this.saveExtState(TUTORIAL_STATE, this.currentState); - this.executeActions(actions, event, 'tutorial'); - }, - - transitionFeatureMachine(currentState, event, extendedState) { - if (!FeatureMachine || !this.currentState.includes('active')) { - return; - } - if (extendedState) { - this.set('componentState', extendedState); - this.saveExtState(COMPONENT_STATE, extendedState); - } - - const { actions, value } = FeatureMachine.transition(currentState, event, this.componentState); - this.saveState('featureState', value); - this.saveExtState(FEATURE_STATE, value); - this.executeActions(actions, event, 'feature'); - // if all features were completed, the FeatureMachine gets nulled - // out and won't exist here as there is no next step - if (FeatureMachine) { - let next; - if (this.currentMachine === 'secrets' && value === 'display') { - next = FeatureMachine.transition(value, 'REPEAT', this.componentState); - } else { - next = FeatureMachine.transition(value, 'CONTINUE', this.componentState); - } - this.saveState('nextStep', next.value); - } - }, - - saveExtState(key, value) { - this.storage().setItem(key, value); - }, - - getExtState(key) { - return this.storage().getItem(key); - }, - - storageHasKey(key) { - return Boolean(this.getExtState(key)); - }, - - executeActions(actions, event, machineType) { - let transitionURL; - let expectedRouteName; - const router = this.router; - - for (const action of actions) { - let type = action; - if (action.type) { - type = action.type; - } - switch (type) { - case 'render': - this.set(`${action.level}Component`, action.component); - break; - case 'routeTransition': - expectedRouteName = action.params[0]; - transitionURL = router.urlFor(...action.params).replace(/^\/ui/, ''); - next(() => { - router.transitionTo(...action.params); - }); - break; - case 'saveFeatures': - this.saveFeatures(event.features); - break; - case 'completeFeature': - this.completeFeature(); - break; - case 'handleDismissed': - this.handleDismissed(); - break; - case 'handlePaused': - this.handlePaused(); - return; - case 'handleResume': - this.handleResume(); - break; - case 'showTutorialWhenAuthenticated': - this.set('showWhenUnauthenticated', false); - break; - case 'showTutorialAlways': - this.set('showWhenUnauthenticated', true); - break; - case 'clearFeatureData': - this.clearFeatureData(); - break; - case 'continueFeature': - this.transitionFeatureMachine(this.featureState, 'CONTINUE', this.componentState); - break; - default: - break; - } - } - if (machineType === 'tutorial') { - return; - } - // if we're transitioning in the actions, we want that url, - // else we want the URL we land on in didTransition in the - // application route - we'll notify the application route to - // update the route - if (transitionURL) { - this.set('expectedURL', transitionURL); - this.set('expectedRouteName', expectedRouteName); - this.set('setURLAfterTransition', false); - } else { - this.set('setURLAfterTransition', true); - } - }, - - handlePaused() { - const expected = this.expectedURL; - if (expected) { - this.saveExtState(RESUME_URL, this.expectedURL); - this.saveExtState(RESUME_ROUTE, this.expectedRouteName); - } - }, - - handleResume() { - const resumeURL = this.storage().getItem(RESUME_URL); - if (!resumeURL) { - return; - } - this.router - .transitionTo(resumeURL) - .followRedirects() - .then(() => { - this.set('expectedRouteName', this.storage().getItem(RESUME_ROUTE)); - this.set('expectedURL', resumeURL); - this.initializeMachines(); - this.storage().removeItem(RESUME_URL); - }); - }, - - handleDismissed() { - this.storage().removeItem(FEATURE_STATE); - this.storage().removeItem(FEATURE_LIST); - this.storage().removeItem(FEATURE_STATE_HISTORY); - this.storage().removeItem(COMPONENT_STATE); - }, - - saveFeatures(features) { - this.set('featureList', features); - this.saveExtState(FEATURE_LIST, this.featureList); - this.buildFeatureMachine(); - }, - - buildFeatureMachine() { - if (this.featureList === null) { - return; - } - this.startFeature(); - const nextFeature = this.featureList.length > 1 ? capitalize(this.featureList[1]) : 'Finish'; - this.set('nextFeature', nextFeature); - let next; - if (this.currentMachine === 'secrets' && this.featureState === 'display') { - next = FeatureMachine.transition(this.featureState, 'REPEAT', this.componentState); - } else { - next = FeatureMachine.transition(this.featureState, 'CONTINUE', this.componentState); - } - this.saveState('nextStep', next.value); - const stateNodes = FeatureMachine.getStateNodes(this.featureState); - this.executeActions( - stateNodes.reduce((acc, node) => acc.concat(node.onEntry), []), - null, - 'feature' - ); - }, - - startFeature() { - const FeatureMachineConfig = MACHINES[this.featureList[0]]; - FeatureMachine = Machine(FeatureMachineConfig); - this.set('currentMachine', this.featureList[0]); - if (this.storageHasKey(FEATURE_STATE)) { - this.saveState('featureState', this.getExtState(FEATURE_STATE)); - } else { - this.saveState('featureState', FeatureMachine.initialState); - } - this.saveExtState(FEATURE_STATE, this.featureState); - }, - - getCompletedFeatures() { - if (this.storageHasKey(COMPLETED_FEATURES)) { - return this.getExtState(COMPLETED_FEATURES); - } - return []; - }, - - completeFeature() { - const features = this.featureList; - const done = features.shift(); - if (!this.getExtState(COMPLETED_FEATURES)) { - const completed = []; - completed.push(done); - this.saveExtState(COMPLETED_FEATURES, completed); - } else { - this.saveExtState(COMPLETED_FEATURES, addToArray(this.getExtState(COMPLETED_FEATURES), done)); - } - - this.saveExtState(FEATURE_LIST, features.length ? features : null); - this.storage().removeItem(FEATURE_STATE); - if (this.featureMachineHistory) { - this.set('featureMachineHistory', []); - this.saveExtState(FEATURE_STATE_HISTORY, []); - } - if (features.length > 0) { - this.buildFeatureMachine(); - } else { - this.storage().removeItem(FEATURE_LIST); - FeatureMachine = null; - this.transitionTutorialMachine(this.currentState, 'DONE'); - } - }, - - storage() { - return getStorage(); - }, -}); diff --git a/ui/app/styles/components/features-selection.scss b/ui/app/styles/components/features-selection.scss deleted file mode 100644 index aa12b31dbb58..000000000000 --- a/ui/app/styles/components/features-selection.scss +++ /dev/null @@ -1,60 +0,0 @@ -/** - * Copyright (c) HashiCorp, Inc. - * SPDX-License-Identifier: BUSL-1.1 - */ - -.feature-header { - font-size: $size-6; - font-weight: $font-weight-semibold; - color: $grey; -} - -.access-information { - display: flex; - padding: $spacing-12 0px; - font-size: $size-8; -} - -.feature-box { - box-shadow: $box-shadow; - border-radius: $radius; - padding: $spacing-12; - margin: $spacing-12 0; - - &.is-active { - box-shadow: 0 0 0 1px $grey-light; - } - - &.is-disabled { - background-color: $ui-gray-010; - color: $ui-gray-300; - } -} - -.feature-box label { - font-weight: $font-weight-semibold; - padding-left: $spacing-8; - - &::before { - top: 3px; - } - - &::after { - top: 5px; - } -} - -.feature-steps { - font-size: $size-8; - color: $grey; - line-height: 1.5; - margin-left: $spacing-24; - margin-top: $spacing-8; - - li::before { - // bullet - content: '\2022'; - position: relative; - right: $size-11; - } -} diff --git a/ui/app/styles/components/popup-menu.scss b/ui/app/styles/components/popup-menu.scss index 96c15608255b..2e279cd112e7 100644 --- a/ui/app/styles/components/popup-menu.scss +++ b/ui/app/styles/components/popup-menu.scss @@ -140,8 +140,7 @@ } .list-item-row, -.info-table-row, -.wizard-dismiss-menu { +.info-table-row { .popup-menu-trigger { height: 2.5rem; min-width: 0; diff --git a/ui/app/styles/components/ui-wizard.scss b/ui/app/styles/components/ui-wizard.scss deleted file mode 100644 index fc1af827d826..000000000000 --- a/ui/app/styles/components/ui-wizard.scss +++ /dev/null @@ -1,250 +0,0 @@ -/** - * Copyright (c) HashiCorp, Inc. - * SPDX-License-Identifier: BUSL-1.1 - */ - -// This file is not being used. https://github.com/hashicorp/vault/pull/19220 -.ui-wizard-container { - display: flex; - flex-direction: column; - flex-grow: 1; -} - -.ui-wizard-container .app-content { - display: flex; - flex-direction: column; - flex-grow: 1; - transition: padding $speed; - will-change: padding; - padding: env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) - env(safe-area-inset-left); -} - -.ui-wizard-container .app-content.wizard-open { - padding-right: 324px; - padding-right: calc(324px + env(safe-area-inset-right)); - - @include until($mobile) { - padding-right: 0; - padding-bottom: 50vh; - } -} - -.ui-wizard { - z-index: 300; - padding: $spacing-18; - width: $drawer-width; - background: $white; - box-shadow: $box-shadow, $box-shadow-highest; - position: fixed; - right: $size-8; - bottom: $size-8; - top: calc(#{4rem} + #{$size-8}); - overflow: auto; - - p { - line-height: 1.33; - } - - @include until($mobile) { - box-shadow: $box-shadow, 0 0 20px rgba($black, 0.24); - bottom: 0; - left: 0; - right: 0; - top: 50%; - width: auto; - } - - .doc-link { - margin-top: $spacing-18; - display: block; - } - - pre code { - background: $ui-gray-050; - margin: $spacing-12 0; - } -} - -.wizard-header { - border-bottom: $light-border; - padding: 0 $spacing-20 $spacing-12 0; - margin: $spacing-20 0; - position: relative; - - @include until($mobile) { - margin-top: 0; - padding-top: 0; - } -} - -.wizard-dismiss-menu { - position: absolute; - right: 0; - top: -$size-11; - z-index: 10; -} - -.ui-wizard.collapsed { - animation: drop-fade-above $speed-slow; - color: $white; - background: $black; - bottom: auto; - box-shadow: $box-shadow-middle; - height: auto; - min-height: 0; - padding-bottom: $spacing-4; - position: fixed; - right: $size-8; - top: calc(#{4rem} + #{$size-8}); - - @include until($mobile) { - box-shadow: $box-shadow, 0 0 20px rgba($black, 0.24); - bottom: 0; - left: 0; - right: 0; - top: auto; - width: auto; - } - - .title { - color: $white; - } - - .wizard-header { - border-bottom: 0; - margin: 0 0 $spacing-8; - padding-top: 0; - } - - .wizard-dismiss-menu { - svg { - color: $white; - } - - &:hover svg { - color: $black; - } - } -} - -.wizard-divider-box { - background: none; - box-shadow: none; - margin: $spacing-12 0 0; - padding: 0 $spacing-12; - border-top: solid 1px $white; - border-image: linear-gradient(to right, $grey-dark, $grey) 1; - border-width: 1px 0 0; - button { - font-size: $size-7; - font-weight: $font-weight-semibold; - } -} - -.wizard-section:last-of-type { - margin-bottom: $spacing-18; -} - -.wizard-section button:not(:last-of-type) { - margin-bottom: $spacing-8; -} - -.wizard-details { - padding-top: $spacing-20; - margin-top: $spacing-20; - border-top: 1px solid $grey-light; -} - -.wizard-instructions { - margin: $spacing-20 0; -} - -.selection-summary { - display: flex; - align-items: center; - width: 100%; - justify-content: space-between; -} - -.time-estimate { - align-items: center; - color: $grey; - display: flex; - font-size: 12px; -} - -.progress-container { - align-items: center; - background: $white; - bottom: 0; - height: $wizard-progress-bar-height; - display: flex; - left: 0; - padding: 0; - position: absolute; - right: 0; - transform: translateY(50%); - width: 100%; -} - -.progress-bar { - background: $ui-gray-050; - box-shadow: inset $box-link-shadow; - display: flex; - height: $wizard-progress-bar-height; - position: relative; - width: 100%; -} - -.feature-progress-container { - align-items: center; - flex: 1 0 auto; - padding: 0 ($wizard-progress-check-size / 4); - position: relative; -} - -.feature-progress { - background: $green; - border-radius: $wizard-progress-bar-height; - height: $wizard-progress-bar-height; -} - -.feature-check { - height: $wizard-progress-check-size; - left: $wizard-progress-check-size / 2; - position: absolute; - top: 50%; - transform: translate(-50%, -50%); - width: $wizard-progress-check-size; - z-index: 10; - margin: 0 !important; -} - -.feature-progress-container .feature-check { - left: 100%; -} - -.feature-progress-container:first-child { - padding-left: 0; - - .progress-bar, - .feature-progress { - border-radius: $wizard-progress-bar-height 0 0 $wizard-progress-bar-height; - } -} - -.feature-progress-container:first-child:last-child { - .progress-bar, - .feature-progress { - border-radius: $wizard-progress-bar-height; - } -} - -.incomplete-check { - color: $ui-gray-200; -} - -.completed-check { - color: $green; -} diff --git a/ui/app/styles/core.scss b/ui/app/styles/core.scss index 702b795ab535..84882a7bd34c 100644 --- a/ui/app/styles/core.scss +++ b/ui/app/styles/core.scss @@ -66,7 +66,6 @@ @import './components/doc-link'; @import './components/empty-state-component'; @import './components/env-banner'; -@import './components/features-selection'; @import './components/form-section'; @import './components/global-flash'; @import './components/icon'; @@ -112,5 +111,4 @@ @import './components/transit-card'; @import './components/ttl-picker'; @import './components/unseal-warning'; -// @import './components/ui-wizard'; // remove, see PR https://github.com/hashicorp/vault/pull/19220 @import './components/vault-loading'; diff --git a/ui/app/styles/utils/_size_variables.scss b/ui/app/styles/utils/_size_variables.scss index 97d1a5320339..aaeb869d43c2 100644 --- a/ui/app/styles/utils/_size_variables.scss +++ b/ui/app/styles/utils/_size_variables.scss @@ -52,8 +52,3 @@ $easing: ease-out; /* Nav */ $drawer-width: 300px; - -// Wizard -// Not being used: https://github.com/hashicorp/vault/pull/19220 -// $wizard-progress-bar-height: 6px; -// $wizard-progress-check-size: 16px; diff --git a/ui/app/templates/components/ui-wizard.hbs b/ui/app/templates/components/ui-wizard.hbs deleted file mode 100644 index 6a5e155bd448..000000000000 --- a/ui/app/templates/components/ui-wizard.hbs +++ /dev/null @@ -1,25 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - -
- {{yield}} -
-{{#if this.featureComponent}} - {{#component - (if this.shouldRender this.tutorialComponent) onAdvance=(action "advanceWizard") onDismiss=(action "dismissWizard") - }} - {{component - this.featureComponent - componentState=this.componentState - nextFeature=this.nextFeature - nextStep=this.nextStep - onDone=(action "finishFeature") - onRepeat=(action "repeatStep") - onReset=(action "resetFeature") - onAdvance=(action "advanceFeature") - currentRouteName=this.currentRouteName - }} - {{/component}} -{{/if}} \ No newline at end of file diff --git a/ui/app/templates/components/wizard-content.hbs b/ui/app/templates/components/wizard-content.hbs deleted file mode 100644 index 61a50dd5c4bd..000000000000 --- a/ui/app/templates/components/wizard-content.hbs +++ /dev/null @@ -1,39 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - -
- {{#unless this.hidePopup}} - - - - - {{/unless}} -

- - {{this.headerText}} -

- {{#if this.showProgress}} - - - - - -
- {{#if this.currentTutorialProgress}} - {{this.currentTutorialProgress.text}} - {{else}} -

{{capitalize this.currentFeatureProgress.feature}}

- {{this.currentFeatureProgress.text}} - {{/if}} -
-
-
- {{else}} - {{#if this.selectProgress}} - - {{/if}} - {{/if}} -
-{{yield}} \ No newline at end of file diff --git a/ui/app/templates/components/wizard-progress.hbs b/ui/app/templates/components/wizard-progress.hbs deleted file mode 100644 index d3730e236e16..000000000000 --- a/ui/app/templates/components/wizard-progress.hbs +++ /dev/null @@ -1,17 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - -
- {{#each @progressBar as |bar|}} -
- - - - {{#if bar.showIcon}} - - {{/if}} -
- {{/each}} -
\ No newline at end of file diff --git a/ui/app/templates/components/wizard-section.hbs b/ui/app/templates/components/wizard-section.hbs deleted file mode 100644 index 50f4dfdf060c..000000000000 --- a/ui/app/templates/components/wizard-section.hbs +++ /dev/null @@ -1,26 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - -
-

- {{#if @headerIcon}} -

- {{yield}} - {{#if @instructions}} -
-

What to do

-

{{@instructions}}

-
- {{/if}} - {{#if @docText}} - - - {{@docText}} - - {{/if}} -
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/alicloud-engine.hbs b/ui/app/templates/components/wizard/alicloud-engine.hbs deleted file mode 100644 index 89b7d9c3fb40..000000000000 --- a/ui/app/templates/components/wizard/alicloud-engine.hbs +++ /dev/null @@ -1,18 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - - -

- The AliCloud Secrets Engine dynamically generates AliCloud access tokens based on RAM policies, or AliCloud STS - credentials based on RAM roles. This generally makes working with AliCloud easier, since it does not involve clicking in - the web UI. The AliCloud access tokens are time-based and are automatically revoked when the Vault lease expires. STS - credentials are short-lived, non-renewable, and expire on their own. -

-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/alicloud-method.hbs b/ui/app/templates/components/wizard/alicloud-method.hbs deleted file mode 100644 index f8890ec6f036..000000000000 --- a/ui/app/templates/components/wizard/alicloud-method.hbs +++ /dev/null @@ -1,15 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - - -

- The AliCloud Auth Method provides an automated mechanism to retrieve a Vault token for AliCloud entities. -

-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/approle-method.hbs b/ui/app/templates/components/wizard/approle-method.hbs deleted file mode 100644 index 3d5cbdd3164c..000000000000 --- a/ui/app/templates/components/wizard/approle-method.hbs +++ /dev/null @@ -1,17 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - - -

- The Approle Auth Method allows machines or apps to authenticate with Vault-defined roles. The open design of AppRole - enables a varied set of workflows and configurations to handle large numbers of apps. This Auth Method is oriented to - automated workflows (machines and services), and is less useful for human operators. -

-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/auth-config.hbs b/ui/app/templates/components/wizard/auth-config.hbs deleted file mode 100644 index 02035cf47b55..000000000000 --- a/ui/app/templates/components/wizard/auth-config.hbs +++ /dev/null @@ -1,15 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - - -

- You can update your new Auth Method configuration here. -

-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/auth-details.hbs b/ui/app/templates/components/wizard/auth-details.hbs deleted file mode 100644 index f0d4757a7a39..000000000000 --- a/ui/app/templates/components/wizard/auth-details.hbs +++ /dev/null @@ -1,18 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - - -

- Fantastic! Now you're ready to use your new - {{@mountName}} - Auth Method! -

-
- - - - - - \ No newline at end of file diff --git a/ui/app/templates/components/wizard/auth-edit.hbs b/ui/app/templates/components/wizard/auth-edit.hbs deleted file mode 100644 index 305c0f853c23..000000000000 --- a/ui/app/templates/components/wizard/auth-edit.hbs +++ /dev/null @@ -1,16 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - -{{! template-lint-disable quotes }} - -

- You can update your new Auth Method configuration here. -

-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/auth-enable.hbs b/ui/app/templates/components/wizard/auth-enable.hbs deleted file mode 100644 index d5f0e8238276..000000000000 --- a/ui/app/templates/components/wizard/auth-enable.hbs +++ /dev/null @@ -1,15 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - - -

- Great! Now you can customize this method with a name and fill out general configuration under "Method Options". -

-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/auth-idle.hbs b/ui/app/templates/components/wizard/auth-idle.hbs deleted file mode 100644 index ce4c61696711..000000000000 --- a/ui/app/templates/components/wizard/auth-idle.hbs +++ /dev/null @@ -1,17 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - -{{! template-lint-disable quotes }} - -

- Controlling who can see your secrets is important. Let's set up a an Authentication Method for you and your team to use. - Don't worry, you can add more methods later. -

-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/auth-list.hbs b/ui/app/templates/components/wizard/auth-list.hbs deleted file mode 100644 index 47e776eb6e98..000000000000 --- a/ui/app/templates/components/wizard/auth-list.hbs +++ /dev/null @@ -1,16 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - -{{! template-lint-disable quotes }} - -

- Awesome! Now you can see your new Auth Method in the list. -

-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/aws-engine.hbs b/ui/app/templates/components/wizard/aws-engine.hbs deleted file mode 100644 index 239aba6a598f..000000000000 --- a/ui/app/templates/components/wizard/aws-engine.hbs +++ /dev/null @@ -1,18 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - - -

- The AWS Secrets Engine generates AWS access credentials dynamically based on IAM policies. This generally makes working - with AWS IAM easier, since it does not involve clicking in the web UI. Additionally, the process is codified and mapped - to internal Auth Methods (such as LDAP). The AWS IAM credentials are time-based and are automatically revoked when the - Vault lease expires. -

-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/aws-method.hbs b/ui/app/templates/components/wizard/aws-method.hbs deleted file mode 100644 index 39a03ad6fe78..000000000000 --- a/ui/app/templates/components/wizard/aws-method.hbs +++ /dev/null @@ -1,12 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - - -

- The AWS Auth Method provides an automated mechanism to retrieve a Vault token for AWS EC2 instances and IAM principals. - Unlike most Vault Auth Methods, this method does not require manual first-deploying, or provisioning security-sensitive - credentials (tokens, username/password, client certificates, etc), by operators under many circumstances. -

-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/azure-engine.hbs b/ui/app/templates/components/wizard/azure-engine.hbs deleted file mode 100644 index 52d6b65b3c5a..000000000000 --- a/ui/app/templates/components/wizard/azure-engine.hbs +++ /dev/null @@ -1,17 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - - -

- The Azure Secrets Engine dynamically generates Azure service principals and role assignments. Vault roles can be mapped - to one or more Azure roles, providing a simple, flexible way to manage the permissions granted to generated service - principals. -

-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/azure-method.hbs b/ui/app/templates/components/wizard/azure-method.hbs deleted file mode 100644 index 3bb07bdd632a..000000000000 --- a/ui/app/templates/components/wizard/azure-method.hbs +++ /dev/null @@ -1,15 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - - -

- The Azure Auth Method allows authentication against Vault using Azure Active Directory credentials. -

-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/cert-method.hbs b/ui/app/templates/components/wizard/cert-method.hbs deleted file mode 100644 index 76c81144cc0b..000000000000 --- a/ui/app/templates/components/wizard/cert-method.hbs +++ /dev/null @@ -1,16 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - - -

- The TLS Certificates Auth Method allows authentication using SSL/TLS client certificates which are either signed by a CA - or self-signed. CA certificates are associated with a role. -

-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/ch-engine.hbs b/ui/app/templates/components/wizard/ch-engine.hbs deleted file mode 100644 index 42895655f479..000000000000 --- a/ui/app/templates/components/wizard/ch-engine.hbs +++ /dev/null @@ -1,12 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - - -

- The cubbyhole Secrets Engine is used to store arbitrary secrets within the configured physical storage for Vault - namespaced to a token. In cubbyhole, paths are scoped per token. No token can access another token's cubbyhole. When the - token expires, its cubbyhole is destroyed. -

-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/consul-engine.hbs b/ui/app/templates/components/wizard/consul-engine.hbs deleted file mode 100644 index e3efa845a870..000000000000 --- a/ui/app/templates/components/wizard/consul-engine.hbs +++ /dev/null @@ -1,15 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - - -

- The Consul Secrets Engine generates Consul API tokens dynamically based on Consul ACL policies. -

-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/database-engine.hbs b/ui/app/templates/components/wizard/database-engine.hbs deleted file mode 100644 index 57031d266dcc..000000000000 --- a/ui/app/templates/components/wizard/database-engine.hbs +++ /dev/null @@ -1,15 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - - -

- The database Secrets Engine generates database credentials dynamically based on configured roles. -

-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/features-selection.hbs b/ui/app/templates/components/wizard/features-selection.hbs deleted file mode 100644 index 4d9f030c654d..000000000000 --- a/ui/app/templates/components/wizard/features-selection.hbs +++ /dev/null @@ -1,75 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - - -

- Choosing where to go -

-

- You did it! You now have access to your Vault and can start entering your data. We can help you get started with any of - the options below. -

-
- -

- Vault only shows links to pages that you have access to based on your policies. Contact your administrator if you need - access changes. -

-
- {{#if (or (has-feature "Performance Replication") (has-feature "DR Replication"))}}{{/if}} -

Walk me through setting up:

-
- {{#each this.allFeatures as |feature|}} - {{#if feature.show}} -
-
- - - - {{#if feature.disabled}} - - You do not have permissions to tour some parts of this feature - - {{/if}} -
- {{#if (get this (concat feature.key "-isOpen"))}} -
    - {{#each feature.steps as |step|}} -
  • {{step}}
  • - {{/each}} -
- {{/if}} -
- {{/if}} - {{/each}} - - - {{#if this.selectedFeatures}} - - About - {{this.estimatedTime}} - minutes - - {{/if}} - -
-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/gcp-engine.hbs b/ui/app/templates/components/wizard/gcp-engine.hbs deleted file mode 100644 index ce60ae54fbbe..000000000000 --- a/ui/app/templates/components/wizard/gcp-engine.hbs +++ /dev/null @@ -1,17 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - - -

- The Google Cloud Vault Secrets Engine dynamically generates Google Cloud service account keys and OAuth tokens based on - IAM policies. This enables users to gain access to Google Cloud resources without needing to create or manage a dedicated - service account. -

-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/gcp-method.hbs b/ui/app/templates/components/wizard/gcp-method.hbs deleted file mode 100644 index 1645c2197d0d..000000000000 --- a/ui/app/templates/components/wizard/gcp-method.hbs +++ /dev/null @@ -1,15 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - - -

- The GCP Auth Method allows authentication against Vault using Google credentials. -

-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/gcpkms-engine.hbs b/ui/app/templates/components/wizard/gcpkms-engine.hbs deleted file mode 100644 index defc018ac922..000000000000 --- a/ui/app/templates/components/wizard/gcpkms-engine.hbs +++ /dev/null @@ -1,17 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - - -

- The Google Cloud KMS Vault Secrets Engine provides encryption and key management via Google Cloud KMS. It supports - management of keys, including creation, rotation, and revocation, as well as encrypting and decrypting data with managed - keys. This enables management of KMS keys through Vault's policies and IAM system. -

-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/github-method.hbs b/ui/app/templates/components/wizard/github-method.hbs deleted file mode 100644 index 708eda4516a3..000000000000 --- a/ui/app/templates/components/wizard/github-method.hbs +++ /dev/null @@ -1,15 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - - -

- The Github Auth Method can be used to authenticate with Vault using a GitHub personal access token. -

-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/init-login.hbs b/ui/app/templates/components/wizard/init-login.hbs deleted file mode 100644 index 66cf830931ea..000000000000 --- a/ui/app/templates/components/wizard/init-login.hbs +++ /dev/null @@ -1,14 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - - - -

- Vault is unsealed, but we still need to authenticate using the Initial Root Token that was generated. We recommend - setting up an Authentication Method such as Username & Password for regular use, and only using a root token for - initial setup or for emergencies. -

-
-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/init-save-keys.hbs b/ui/app/templates/components/wizard/init-save-keys.hbs deleted file mode 100644 index 2d13ae76b836..000000000000 --- a/ui/app/templates/components/wizard/init-save-keys.hbs +++ /dev/null @@ -1,18 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - - - -

- Now that Vault is initialized, you'll want to save your root token and root key portions in a safe place. Distribute - your keys to responsible people on your team. If these keys are lost, you may not be able to access your data again. - Keep them safe! -

-
-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/init-setup.hbs b/ui/app/templates/components/wizard/init-setup.hbs deleted file mode 100644 index cc60b2143b4c..000000000000 --- a/ui/app/templates/components/wizard/init-setup.hbs +++ /dev/null @@ -1,19 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - - - -

- This is the very first step of setting up a Vault server. Vault comes with an important security feature called a - "seal", which lets you shut down and secure your Vault installation if there is a security breach. This is the default - state of Vault, so it is currently sealed since it was just installed. To unseal the vault, you will need to provide - the key(s) that you generate here. -

-
-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/init-unseal.hbs b/ui/app/templates/components/wizard/init-unseal.hbs deleted file mode 100644 index ae6d8bd572db..000000000000 --- a/ui/app/templates/components/wizard/init-unseal.hbs +++ /dev/null @@ -1,30 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - - - -

- Now we will provide the - {{pluralize this.componentState.threshold "key"}} - that you copied or downloaded to unseal the vault so that we can get started using it. You'll need - {{pluralize this.componentState.threshold "key"}} - total, and - {{#let (pluralize this.componentState.progress "key" without-count=true) as |word|}} - {{if - (eq word "key") - (concat this.componentState.progress " " word " has ") - (concat this.componentState.progress " " word " have ") - }} - {{/let}} - already been provided. Please provide - {{pluralize (dec this.componentState.progress this.componentState.threshold) "more key"}} - to unseal. -

-
-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/keymgmt-engine.hbs b/ui/app/templates/components/wizard/keymgmt-engine.hbs deleted file mode 100644 index e32d00213d61..000000000000 --- a/ui/app/templates/components/wizard/keymgmt-engine.hbs +++ /dev/null @@ -1,16 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - - -

- Key Management is a secrets engine that allows key generation, lifecycle management, and secure distribution of - cryptographic keys into cloud key management services. -

-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/kmip-engine.hbs b/ui/app/templates/components/wizard/kmip-engine.hbs deleted file mode 100644 index 6b5398e8affa..000000000000 --- a/ui/app/templates/components/wizard/kmip-engine.hbs +++ /dev/null @@ -1,18 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - - -

- The KMIP secrets engine allows Vault to act as a KMIP server provider and handle the lifecycle of KMIP managed objects. - KMIP, which stands for Key Management Interoperability Protocol, is a standardized protocol that allows services and - applications to perform cryptographic operations without having to manage cryptographic material, otherwise known as - manage objects, by delegating its storage and lifecycle to a key management server. -

-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/kubernetes-method.hbs b/ui/app/templates/components/wizard/kubernetes-method.hbs deleted file mode 100644 index 75eab8ad860a..000000000000 --- a/ui/app/templates/components/wizard/kubernetes-method.hbs +++ /dev/null @@ -1,16 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - - -

- The Kubernetes Auth Method can be used to authenticate with Vault using a Kubernetes Service Account Token. This method - of authentication makes it easy to introduce a Vault token into a Kubernetes Pod. -

-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/kv-engine.hbs b/ui/app/templates/components/wizard/kv-engine.hbs deleted file mode 100644 index f0bc73e03ee2..000000000000 --- a/ui/app/templates/components/wizard/kv-engine.hbs +++ /dev/null @@ -1,17 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - - -

- The KV Secrets Engine is used to store arbitrary secrets within the configured physical storage for Vault. This backend - can be run in one of two modes. It can be a generic key-value store that stores one value for a key. Versioning can be - enabled and a configurable number of versions for each key will be stored. -

-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/ldap-method.hbs b/ui/app/templates/components/wizard/ldap-method.hbs deleted file mode 100644 index d0c9b942ac8d..000000000000 --- a/ui/app/templates/components/wizard/ldap-method.hbs +++ /dev/null @@ -1,11 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - - -

- The LDAP Auth Method allows authentication using an existing LDAP server and user/password credentials. This allows Vault - to be integrated into environments using LDAP without duplicating the user/pass configuration in multiple places. -

-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/mount-info.hbs b/ui/app/templates/components/wizard/mount-info.hbs deleted file mode 100644 index f329c5e0b261..000000000000 --- a/ui/app/templates/components/wizard/mount-info.hbs +++ /dev/null @@ -1,34 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - - - - - - -

- {{titleize this.model.methodType}} -

-
- - {{#if (eq this.section "configuration")}} -
-
- - Configure - - -
-
- {{/if}} -
-
- -{{component (concat "auth-method/" this.section) model=this.model}} \ No newline at end of file diff --git a/ui/app/templates/components/wizard/mounts-wizard.hbs b/ui/app/templates/components/wizard/mounts-wizard.hbs deleted file mode 100644 index 8642aae74406..000000000000 --- a/ui/app/templates/components/wizard/mounts-wizard.hbs +++ /dev/null @@ -1,25 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - - - {{component - this.stepComponent - mountSubtype=this.mountSubtype - mountName=this.mountName - actionText=this.actionText - nextFeature=this.nextFeature - nextStep=this.nextStep - featureState=this.wizard.featureState - needsConnection=this.needsConnection - needsEncryption=this.needsEncryption - isSupported=this.isSupported - onDone=this.onDone - onAdvance=this.onAdvance - onRepeat=this.onRepeat - onReset=this.onReset - class="wizard-step" - }} - {{component this.detailsComponent onAdvance=this.onAdvance onRepeat=this.onRepeat class="wizard-details"}} - \ No newline at end of file diff --git a/ui/app/templates/components/wizard/nomad-engine.hbs b/ui/app/templates/components/wizard/nomad-engine.hbs deleted file mode 100644 index fa8a8e762215..000000000000 --- a/ui/app/templates/components/wizard/nomad-engine.hbs +++ /dev/null @@ -1,15 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - - -

- The Nomad secret backend for Vault generates Nomad API tokens dynamically based on pre-existing Nomad ACL policies. -

-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/okta-method.hbs b/ui/app/templates/components/wizard/okta-method.hbs deleted file mode 100644 index 03a3878358e2..000000000000 --- a/ui/app/templates/components/wizard/okta-method.hbs +++ /dev/null @@ -1,16 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - - -

- The Okta Auth Method allows authentication using Okta and user/password credentials. This allows Vault to be integrated - into environments using Okta. -

-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/pki-engine.hbs b/ui/app/templates/components/wizard/pki-engine.hbs deleted file mode 100644 index bfd9629cbff2..000000000000 --- a/ui/app/templates/components/wizard/pki-engine.hbs +++ /dev/null @@ -1,17 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - - -

- The PKI Secrets Engine generates dynamic X.509 certificates. With this Secrets Engine, services can get certificates - without going through the usual manual process of generating a private key and CSR, submitting to a CA, and waiting for a - verification and signing process to complete. -

-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/policies-create.hbs b/ui/app/templates/components/wizard/policies-create.hbs deleted file mode 100644 index d7b6c94bd40c..000000000000 --- a/ui/app/templates/components/wizard/policies-create.hbs +++ /dev/null @@ -1,19 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - -{{! template-lint-disable quotes }} - - -

- Let's use "my-new-policy" for your policy name. Copy the policy below to try it out: -

-
path "secret/foo" { capabilities = ["read"] }
-
-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/policies-delete.hbs b/ui/app/templates/components/wizard/policies-delete.hbs deleted file mode 100644 index 5e51d841f67d..000000000000 --- a/ui/app/templates/components/wizard/policies-delete.hbs +++ /dev/null @@ -1,22 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - -{{! template-lint-disable quotes }} - - -

- {{#if (eq @currentRouteName "vault.cluster.policies.index")}} - You can delete your test policy by clicking the "..." icon to the right of the policy name. - {{else}} - You can delete your test policy by clicking "Delete" in the toolbar. - {{/if}} -

-
-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/policies-details.hbs b/ui/app/templates/components/wizard/policies-details.hbs deleted file mode 100644 index abd78ca1f3f9..000000000000 --- a/ui/app/templates/components/wizard/policies-details.hbs +++ /dev/null @@ -1,18 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - -{{! template-lint-disable quotes }} - - -

- Good job! Here you can see your new policy. If you'd like to edit it, you'd just click "Edit policy" in the toolbar. -

-
-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/policies-intro.hbs b/ui/app/templates/components/wizard/policies-intro.hbs deleted file mode 100644 index 478c5cd4b4f9..000000000000 --- a/ui/app/templates/components/wizard/policies-intro.hbs +++ /dev/null @@ -1,19 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - -{{! template-lint-disable quotes }} - - -

- Policies in Vault are a way for you to control what data can be accessed, including things like creating new secrets, - listing users, or even entire Vault features. -

-
-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/policies-others.hbs b/ui/app/templates/components/wizard/policies-others.hbs deleted file mode 100644 index 22c0e8a30919..000000000000 --- a/ui/app/templates/components/wizard/policies-others.hbs +++ /dev/null @@ -1,18 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - - - -

- Good! Now you're ready to go writing your own policies. We only explored ACL policies, but there are two other types of - policies available to Enterprise customers that might be what you need. RGP (Role Governing Policies) are policies tied - to particular tokens, entities, or groups. EGP (Endpoint Governing Policies) are tied to specific paths instead of - tokens. -

-
- - - -
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/rabbitmq-engine.hbs b/ui/app/templates/components/wizard/rabbitmq-engine.hbs deleted file mode 100644 index c731f1e06156..000000000000 --- a/ui/app/templates/components/wizard/rabbitmq-engine.hbs +++ /dev/null @@ -1,16 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - - -

- The RabbitMQ Secrets Engine generates user credentials dynamically based on configured permissions and virtual hosts. - This means that services that need to access a virtual host no longer need to hardcode credentials. -

-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/radius-method.hbs b/ui/app/templates/components/wizard/radius-method.hbs deleted file mode 100644 index 472357b1a16e..000000000000 --- a/ui/app/templates/components/wizard/radius-method.hbs +++ /dev/null @@ -1,16 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - - -

- The RADIUS Auth Method allows users to authenticate with Vault using an existing RADIUS server that accepts the PAP - authentication scheme. -

-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/replication-setup.hbs b/ui/app/templates/components/wizard/replication-setup.hbs deleted file mode 100644 index 71185ad2b4d0..000000000000 --- a/ui/app/templates/components/wizard/replication-setup.hbs +++ /dev/null @@ -1,37 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - -{{! template-lint-disable quotes }} - - -

- Vault has two kinds of replication, each for a different purpose. Do you want to keep a backup of your data, or are you - more interested in speed of access? -

- - - - Learn: Setting Up Performance Replication - - - - - Learn: Setting up Disaster Recovery - - -
- -

- A cluster is set as either a primary or secondary. The primary cluster is authoritative, and is the only cluster - allowed to perform actions that write to the underlying data storage, such as modifying policies or secrets. Secondary - clusters can service all other operations and forward any writes to the primary cluster. -

-
-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/secrets-connection-show.hbs b/ui/app/templates/components/wizard/secrets-connection-show.hbs deleted file mode 100644 index 510de20ba1c5..000000000000 --- a/ui/app/templates/components/wizard/secrets-connection-show.hbs +++ /dev/null @@ -1,10 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - - -

- Now that we've setup a database let's connect a role. -

-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/secrets-connection.hbs b/ui/app/templates/components/wizard/secrets-connection.hbs deleted file mode 100644 index 7a7a3dda80c6..000000000000 --- a/ui/app/templates/components/wizard/secrets-connection.hbs +++ /dev/null @@ -1,13 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - - -

- Here you can specify the details of your database plugin and include any root rotation statements. -

-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/secrets-credentials.hbs b/ui/app/templates/components/wizard/secrets-credentials.hbs deleted file mode 100644 index 3415408b5379..000000000000 --- a/ui/app/templates/components/wizard/secrets-credentials.hbs +++ /dev/null @@ -1,10 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - - -

- Enter details and generate your credential. -

-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/secrets-details.hbs b/ui/app/templates/components/wizard/secrets-details.hbs deleted file mode 100644 index c83ae970e24e..000000000000 --- a/ui/app/templates/components/wizard/secrets-details.hbs +++ /dev/null @@ -1,22 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - - -

- {{#if (eq @mountSubtype "keymgmt")}} - This secrets engine manages keys and distributes them to external destinations. We recommend that you create a provider - to which you can distribute keys. - {{else}} - {{#if @needsEncryption}} - The Transit Secrets Engine uses encryption keys to provide "encryption as a service". Click on "Create Encryption - Key" at the top to create one. - {{/if}} - {{#if @needsConnection}} - Now that the engine has been mounted, let’s connect a - {{@mountSubtype}}. - {{/if}} - {{/if}} -

-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/secrets-display-database-role.hbs b/ui/app/templates/components/wizard/secrets-display-database-role.hbs deleted file mode 100644 index b17c2ab98ba8..000000000000 --- a/ui/app/templates/components/wizard/secrets-display-database-role.hbs +++ /dev/null @@ -1,10 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - - -

- Roles are what generate database credentials. They can be static or dynamic. -

-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/secrets-display-role.hbs b/ui/app/templates/components/wizard/secrets-display-role.hbs deleted file mode 100644 index 276da158c839..000000000000 --- a/ui/app/templates/components/wizard/secrets-display-role.hbs +++ /dev/null @@ -1,11 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - - -

- With our new role, we can generate a credential that has the same permissions as that role. Click on "Generate - credentials" links at the top of the page. -

-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/secrets-display.hbs b/ui/app/templates/components/wizard/secrets-display.hbs deleted file mode 100644 index 5b50135828df..000000000000 --- a/ui/app/templates/components/wizard/secrets-display.hbs +++ /dev/null @@ -1,50 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - -{{#if @isSupported}} - -

- {{#if (eq @mountSubtype "keymgmt")}} - Your key and your provider have been created and connected. From here, you can click the key name to view the key - You’re now ready to start using the secrets engine. - {{else if @actionText}} - Here is your generated credential. As you can see, we can only show the credential once, so you'll want to be sure to - save it. If you need another credential in the future, just come back and generate a new one. - {{else}} - Well done! - {{/if}} - You're now ready to start using your new - {{@mountName}} - Secrets Engine. -

-
-{{else}} - -

- Here you can see all the details of your new engine. This can be useful to get information for things like TTL or Seal - Wrap settings. -

-
-{{/if}} - - - {{#if @isSupported}} - - {{/if}} - - - - \ No newline at end of file diff --git a/ui/app/templates/components/wizard/secrets-enable.hbs b/ui/app/templates/components/wizard/secrets-enable.hbs deleted file mode 100644 index c22f9660ae10..000000000000 --- a/ui/app/templates/components/wizard/secrets-enable.hbs +++ /dev/null @@ -1,18 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - -{{! template-lint-disable quotes }} - -

- Good choice! Now you can customize your engine with a name and description that makes sense for your team, as well as - options for replication and caching. -

-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/secrets-encryption.hbs b/ui/app/templates/components/wizard/secrets-encryption.hbs deleted file mode 100644 index d1c21ebc0d5a..000000000000 --- a/ui/app/templates/components/wizard/secrets-encryption.hbs +++ /dev/null @@ -1,10 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - - -

- Enter the details about your encryption key and save it. -

-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/secrets-idle.hbs b/ui/app/templates/components/wizard/secrets-idle.hbs deleted file mode 100644 index fdde9d39a317..000000000000 --- a/ui/app/templates/components/wizard/secrets-idle.hbs +++ /dev/null @@ -1,18 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - -{{! template-lint-disable quotes }} - -

- Vault is all about managing secrets, so let's set up your first Secrets Engine. You can use a static engine to store your - secrets locally in Vault, or connect to a cloud backend with one of the dynamic engines. -

-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/secrets-keymgmt.hbs b/ui/app/templates/components/wizard/secrets-keymgmt.hbs deleted file mode 100644 index cb42b1c41718..000000000000 --- a/ui/app/templates/components/wizard/secrets-keymgmt.hbs +++ /dev/null @@ -1,10 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - - -

- {{this.body}} -

-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/secrets-list.hbs b/ui/app/templates/components/wizard/secrets-list.hbs deleted file mode 100644 index c8358374412a..000000000000 --- a/ui/app/templates/components/wizard/secrets-list.hbs +++ /dev/null @@ -1,15 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - -{{! template-lint-disable quotes }} - -

- This engine isn't fully supported in the Vault UI yet, but you can view and edit the configuration and use the Vault Web - REPL to interact with the engine just like you would on the command-line. -

-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/secrets-role.hbs b/ui/app/templates/components/wizard/secrets-role.hbs deleted file mode 100644 index 5216d82d6673..000000000000 --- a/ui/app/templates/components/wizard/secrets-role.hbs +++ /dev/null @@ -1,12 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - -{{! template-lint-disable quotes }} - -

- A role grants permissions that specify what an identity can and cannot do. A role is typically shared among many users - who are then granted credentials with that are granted the policy permissions. -

-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/secrets-secret.hbs b/ui/app/templates/components/wizard/secrets-secret.hbs deleted file mode 100644 index 9db1e3e6ddfc..000000000000 --- a/ui/app/templates/components/wizard/secrets-secret.hbs +++ /dev/null @@ -1,11 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - -{{! template-lint-disable quotes }} - -

- Here you can specify the path of your secret and include the key/value pairs to include. -

-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/ssh-engine.hbs b/ui/app/templates/components/wizard/ssh-engine.hbs deleted file mode 100644 index 141262e96e54..000000000000 --- a/ui/app/templates/components/wizard/ssh-engine.hbs +++ /dev/null @@ -1,17 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - - -

- The Vault SSH Secrets Engine provides secure authentication and authorization for access to machines via the SSH - protocol. The Vault SSH Secrets Engine helps manage access to machine infrastructure, providing several ways to issue SSH - credentials. -

-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/tools-info.hbs b/ui/app/templates/components/wizard/tools-info.hbs deleted file mode 100644 index e7f1f782f61d..000000000000 --- a/ui/app/templates/components/wizard/tools-info.hbs +++ /dev/null @@ -1,19 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - -{{! template-lint-disable quotes }} - - -

- Good job! You can see some basic information about your wrapped data, including the expiration time. Next up, we'll - take the token you still have in your clipboard and rewrap it to keep it active and extend that expiration time. -

-
-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/tools-lookup.hbs b/ui/app/templates/components/wizard/tools-lookup.hbs deleted file mode 100644 index bdd92d21457a..000000000000 --- a/ui/app/templates/components/wizard/tools-lookup.hbs +++ /dev/null @@ -1,19 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - -{{! template-lint-disable quotes }} - - -

- Lookup lets you see information about your token without unwrapping it or changing it. Paste your token here and click - "Lookup". If you find that your data didn't copy for some reason, you can always go back and do it again. -

-
-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/tools-rewrap.hbs b/ui/app/templates/components/wizard/tools-rewrap.hbs deleted file mode 100644 index 9d502660f0c8..000000000000 --- a/ui/app/templates/components/wizard/tools-rewrap.hbs +++ /dev/null @@ -1,19 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - -{{! template-lint-disable quotes }} - - -

- You can rewrap your data to rotate the token, but it will still have the same creation time and TTL. Don't worry, the - new token will still have the same data. -

-
-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/tools-rewrapped.hbs b/ui/app/templates/components/wizard/tools-rewrapped.hbs deleted file mode 100644 index 2fcf6b6eaafb..000000000000 --- a/ui/app/templates/components/wizard/tools-rewrapped.hbs +++ /dev/null @@ -1,18 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - -{{! template-lint-disable quotes }} - - -

- It's a subtle transformation, but your old token has been revoked and this new one has taken its place. -

-
-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/tools-unwrap.hbs b/ui/app/templates/components/wizard/tools-unwrap.hbs deleted file mode 100644 index 171e32d8eb56..000000000000 --- a/ui/app/templates/components/wizard/tools-unwrap.hbs +++ /dev/null @@ -1,18 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - -{{! template-lint-disable quotes }} - - -

- We saved this step for the end because unwrapping the token will revoke it, so we can only do this once. -

-
-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/tools-unwrapped.hbs b/ui/app/templates/components/wizard/tools-unwrapped.hbs deleted file mode 100644 index 557562821806..000000000000 --- a/ui/app/templates/components/wizard/tools-unwrapped.hbs +++ /dev/null @@ -1,14 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - - - -

- Here you can see that your data survived intact. These tools are mostly handy for applications to use, but if you ever - do need to wrap data or handle the wrapped token, now you know how. -

-
- -
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/tools-wrap.hbs b/ui/app/templates/components/wizard/tools-wrap.hbs deleted file mode 100644 index 5615af98bcba..000000000000 --- a/ui/app/templates/components/wizard/tools-wrap.hbs +++ /dev/null @@ -1,19 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - -{{! template-lint-disable quotes }} - - -

- Vault provides several ways to create or wrap data, and manage it from there. Here you can wrap a token (or anything - you like) in JSON format. Give it a try. -

-
-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/tools-wrapped.hbs b/ui/app/templates/components/wizard/tools-wrapped.hbs deleted file mode 100644 index c85730bfbbae..000000000000 --- a/ui/app/templates/components/wizard/tools-wrapped.hbs +++ /dev/null @@ -1,19 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - -{{! template-lint-disable quotes }} - - -

- Your data is now encrypted. You can recover the data using the token on this page, but be careful because if you lose - the token you won't be able to retrieve your data! We will use this token for the next few steps. -

-
-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/totp-engine.hbs b/ui/app/templates/components/wizard/totp-engine.hbs deleted file mode 100644 index 29bd08dc080f..000000000000 --- a/ui/app/templates/components/wizard/totp-engine.hbs +++ /dev/null @@ -1,15 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - - -

- The TOTP Secrets Engine generates time-based credentials according to the TOTP standard. -

-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/transit-engine.hbs b/ui/app/templates/components/wizard/transit-engine.hbs deleted file mode 100644 index 67b280092237..000000000000 --- a/ui/app/templates/components/wizard/transit-engine.hbs +++ /dev/null @@ -1,16 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - - -

- The Transit Secrets Engine handles cryptographic functions on data in-transit. Vault doesn't store the data sent to the - Secrets Engine. It can also be viewed as "cryptography as a service" or "encryption as a service". -

-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/tutorial-active.hbs b/ui/app/templates/components/wizard/tutorial-active.hbs deleted file mode 100644 index 64ac0317eeb2..000000000000 --- a/ui/app/templates/components/wizard/tutorial-active.hbs +++ /dev/null @@ -1,7 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - -{{! template-lint-disable no-yield-only }} -{{yield}} \ No newline at end of file diff --git a/ui/app/templates/components/wizard/tutorial-complete.hbs b/ui/app/templates/components/wizard/tutorial-complete.hbs deleted file mode 100644 index 229a2afd385a..000000000000 --- a/ui/app/templates/components/wizard/tutorial-complete.hbs +++ /dev/null @@ -1,13 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - - -

- We hope you enjoyed using Vault. You can get back to the guide in the user menu in the upper right. -

-
- -
-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/tutorial-error.hbs b/ui/app/templates/components/wizard/tutorial-error.hbs deleted file mode 100644 index 0c4e99176554..000000000000 --- a/ui/app/templates/components/wizard/tutorial-error.hbs +++ /dev/null @@ -1,16 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - - -

- Something went wrong and you can't complete this step. -

-
- - - - - - \ No newline at end of file diff --git a/ui/app/templates/components/wizard/tutorial-idle.hbs b/ui/app/templates/components/wizard/tutorial-idle.hbs deleted file mode 100644 index 5b3c89be69b8..000000000000 --- a/ui/app/templates/components/wizard/tutorial-idle.hbs +++ /dev/null @@ -1,12 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - - - -

Want a tour? Our helpful guide will introduce you to the Vault Web UI.

-
- -
-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/tutorial-paused.hbs b/ui/app/templates/components/wizard/tutorial-paused.hbs deleted file mode 100644 index a3b00ad9939a..000000000000 --- a/ui/app/templates/components/wizard/tutorial-paused.hbs +++ /dev/null @@ -1,12 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - - - -

Feel free to explore Vault. Click below to get back to the guide or close this window.

-
- -
-
\ No newline at end of file diff --git a/ui/app/templates/components/wizard/userpass-method.hbs b/ui/app/templates/components/wizard/userpass-method.hbs deleted file mode 100644 index de1b80d843e3..000000000000 --- a/ui/app/templates/components/wizard/userpass-method.hbs +++ /dev/null @@ -1,15 +0,0 @@ -{{! - Copyright (c) HashiCorp, Inc. - SPDX-License-Identifier: BUSL-1.1 -~}} - - -

- The Username & Password Auth Method allows users to authenticate with Vault using a username and password combination. -

-
\ No newline at end of file diff --git a/ui/codemods.log b/ui/codemods.log deleted file mode 100644 index b71a455d478e..000000000000 --- a/ui/codemods.log +++ /dev/null @@ -1,281 +0,0 @@ -2021-12-03T16:39:04.778Z [warn] WARNING: {{or}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/alphabet-edit.hbs -2021-12-03T16:39:04.959Z [warn] WARNING: {{capitalize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/transform-show-transformation.hbs -2021-12-03T16:39:04.989Z [warn] WARNING: {{or}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/namespace-picker.hbs -2021-12-03T16:39:05.089Z [warn] WARNING: {{pluralize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/wizard/init-unseal.hbs -2021-12-03T16:39:05.091Z [warn] WARNING: {{pluralize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/wizard/init-unseal.hbs -2021-12-03T16:39:05.091Z [warn] WARNING: {{pluralize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/wizard/init-unseal.hbs -2021-12-03T16:39:05.115Z [warn] WARNING: {{capitalize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/wizard/mounts-wizard.hbs -2021-12-03T16:39:05.277Z [warn] WARNING: {{date-format}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/identity/item-alias/alias-details.hbs -2021-12-03T16:39:05.362Z [warn] WARNING: {{linked-block}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/identity/item-policies.hbs -2021-12-03T16:39:05.366Z [warn] WARNING: {{or}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/secrets/backends.hbs -2021-12-03T16:39:05.283Z [warn] WARNING: {{date-format}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/identity/item-alias/alias-details.hbs -2021-12-03T16:39:05.350Z [warn] WARNING: {{not}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/access/control-groups.hbs -2021-12-03T16:39:05.422Z [warn] WARNING: {{uppercase}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/policy/edit.hbs -2021-12-03T16:39:05.456Z [warn] WARNING: {{uppercase}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/policies/create.hbs -2021-12-03T16:39:05.456Z [warn] WARNING: {{uppercase}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/policies/create.hbs -2021-12-03T16:39:05.456Z [warn] WARNING: {{toggle-action}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/policies/create.hbs -2021-12-03T16:39:05.558Z [warn] WARNING: {{uppercase}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/policies/index.hbs -2021-12-03T16:39:05.558Z [warn] WARNING: {{or}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/policies/index.hbs -2021-12-03T16:39:05.558Z [warn] WARNING: {{uppercase}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/policies/index.hbs -2021-12-03T16:39:05.559Z [warn] WARNING: {{linked-block}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/policies/index.hbs -2021-12-03T16:39:05.559Z [warn] WARNING: {{uppercase}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/policies/index.hbs -2021-12-03T16:39:05.559Z [warn] WARNING: {{uppercase}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/policies/index.hbs -2021-12-03T16:39:05.559Z [warn] WARNING: {{uppercase}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/policies/index.hbs -2021-12-03T16:39:05.589Z [warn] WARNING: {{uppercase}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/policy/show.hbs -2021-12-03T16:39:04.961Z [warn] WARNING: {{stringify}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/transform-show-transformation.hbs -2021-12-03T16:39:04.961Z [warn] WARNING: {{capitalize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/transform-show-transformation.hbs -2021-12-03T16:39:04.961Z [warn] WARNING: {{eq}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/transform-show-transformation.hbs -2021-12-03T16:39:04.961Z [warn] WARNING: {{capitalize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/transform-show-transformation.hbs -2021-12-03T16:39:05.026Z [warn] WARNING: {{or}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/transform-edit-form.hbs -2021-12-03T16:39:05.116Z [warn] WARNING: {{capitalize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/transform-role-edit.hbs -2021-12-03T16:39:05.131Z [warn] WARNING: {{stringify}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/transform-role-edit.hbs -2021-12-03T16:39:05.131Z [warn] WARNING: {{capitalize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/transform-role-edit.hbs -2021-12-03T16:39:05.131Z [warn] WARNING: {{eq}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/transform-role-edit.hbs -2021-12-03T16:39:05.132Z [warn] WARNING: {{capitalize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/transform-role-edit.hbs -2021-12-03T16:39:05.275Z [warn] WARNING: {{or}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/transform-template-edit.hbs -2021-12-03T16:39:05.276Z [warn] WARNING: {{capitalize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/transform-template-edit.hbs -2021-12-03T16:39:05.276Z [warn] WARNING: {{stringify}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/transform-template-edit.hbs -2021-12-03T16:39:05.276Z [warn] WARNING: {{capitalize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/transform-template-edit.hbs -2021-12-03T16:39:05.276Z [warn] WARNING: {{capitalize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/transform-template-edit.hbs -2021-12-03T16:39:05.346Z [warn] WARNING: {{eq}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/transit-form-create.hbs -2021-12-03T16:39:05.346Z [warn] WARNING: {{eq}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/transit-form-create.hbs -2021-12-03T16:39:05.347Z [warn] WARNING: {{eq}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/transit-form-create.hbs -2021-12-03T16:39:05.347Z [warn] WARNING: {{eq}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/transit-form-create.hbs -2021-12-03T16:39:05.347Z [warn] WARNING: {{eq}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/transit-form-create.hbs -2021-12-03T16:39:05.347Z [warn] WARNING: {{eq}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/transit-form-create.hbs -2021-12-03T16:39:05.347Z [warn] WARNING: {{eq}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/transit-form-create.hbs -2021-12-03T16:39:05.347Z [warn] WARNING: {{eq}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/transit-form-create.hbs -2021-12-03T16:39:05.347Z [warn] WARNING: {{eq}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/transit-form-create.hbs -2021-12-03T16:39:05.347Z [warn] WARNING: {{eq}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/transit-form-create.hbs -2021-12-03T16:39:05.449Z [warn] WARNING: {{capitalize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/wizard-content.hbs -2021-12-03T16:39:05.553Z [warn] WARNING: {{linked-block}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/transit-form-show.hbs -2021-12-03T16:39:05.553Z [warn] WARNING: {{humanize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/transit-form-show.hbs -2021-12-03T16:39:05.553Z [warn] WARNING: {{date-from-now}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/transit-form-show.hbs -2021-12-03T16:39:05.554Z [warn] WARNING: {{date-from-now}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/transit-form-show.hbs -2021-12-03T16:39:05.554Z [warn] WARNING: {{stringify}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/transit-form-show.hbs -2021-12-03T16:39:05.679Z [warn] WARNING: {{or}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/clients/history.hbs -2021-12-03T16:39:05.679Z [warn] WARNING: {{or}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/clients/history.hbs -2021-12-03T16:39:05.679Z [warn] WARNING: {{or}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/clients/history.hbs -2021-12-03T16:39:05.679Z [warn] WARNING: {{or}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/clients/history.hbs -2021-12-03T16:39:05.679Z [warn] WARNING: {{or}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/clients/history.hbs -2021-12-03T16:39:05.679Z [warn] WARNING: {{or}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/clients/history.hbs -2021-12-03T16:39:05.679Z [warn] WARNING: {{or}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/clients/history.hbs -2021-12-03T16:39:05.753Z [warn] WARNING: {{eq}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/clients/config.hbs -2021-12-03T16:39:05.753Z [warn] WARNING: {{eq}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/clients/config.hbs -2021-12-03T16:39:05.754Z [warn] WARNING: {{or}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/clients/config.hbs -2021-12-03T16:39:05.754Z [warn] WARNING: {{date-format}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/clients/config.hbs -2021-12-03T16:39:05.756Z [warn] WARNING: {{stringify}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/console/log-json.hbs -2021-12-03T16:39:05.756Z [warn] WARNING: {{stringify}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/console/log-json.hbs -2021-12-03T16:39:05.761Z [warn] WARNING: {{multi-line-join}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/console/log-list.hbs -2021-12-03T16:39:05.793Z [warn] WARNING: {{eq}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/transit-form-edit.hbs -2021-12-03T16:39:05.793Z [warn] WARNING: {{eq}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/transit-form-edit.hbs -2021-12-03T16:39:05.793Z [warn] WARNING: {{eq}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/transit-form-edit.hbs -2021-12-03T16:39:05.832Z [warn] WARNING: {{not}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/auth-method/configuration.hbs -2021-12-03T16:39:05.833Z [warn] WARNING: {{or}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/auth-method/configuration.hbs -2021-12-03T16:39:05.833Z [warn] WARNING: {{stringify}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/auth-method/configuration.hbs -2021-12-03T16:39:05.833Z [warn] WARNING: {{not}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/auth-method/configuration.hbs -2021-12-03T16:39:05.833Z [warn] WARNING: {{or}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/auth-method/configuration.hbs -2021-12-03T16:39:05.845Z [warn] WARNING: {{lowercase}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/identity/edit-form.hbs -2021-12-03T16:39:05.973Z [warn] WARNING: {{capitalize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/identity/entity-nav.hbs -2021-12-03T16:39:05.973Z [warn] WARNING: {{pluralize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/identity/entity-nav.hbs -2021-12-03T16:39:05.973Z [warn] WARNING: {{pluralize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/identity/entity-nav.hbs -2021-12-03T16:39:05.973Z [warn] WARNING: {{capitalize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/identity/entity-nav.hbs -2021-12-03T16:39:05.974Z [warn] WARNING: {{pluralize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/identity/entity-nav.hbs -2021-12-03T16:39:05.974Z [warn] WARNING: {{pluralize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/identity/entity-nav.hbs -2021-12-03T16:39:05.974Z [warn] WARNING: {{pluralize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/identity/entity-nav.hbs -2021-12-03T16:39:05.982Z [warn] WARNING: {{linked-block}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/identity/item-aliases.hbs -2021-12-03T16:39:06.007Z [warn] WARNING: {{date-format}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/identity/item-details.hbs -2021-12-03T16:39:06.007Z [warn] WARNING: {{date-format}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/identity/item-details.hbs -2021-12-03T16:39:06.031Z [warn] WARNING: {{linked-block}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/identity/item-groups.hbs -2021-12-03T16:39:06.048Z [warn] WARNING: {{lowercase}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/identity/item-metadata.hbs -2021-12-03T16:39:06.048Z [warn] WARNING: {{lowercase}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/identity/item-metadata.hbs -2021-12-03T16:39:06.048Z [warn] WARNING: {{lowercase}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/identity/item-metadata.hbs -2021-12-03T16:39:06.061Z [warn] WARNING: {{linked-block}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/identity/item-members.hbs -2021-12-03T16:39:06.062Z [warn] WARNING: {{linked-block}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/identity/item-members.hbs -2021-12-03T16:39:06.075Z [warn] WARNING: {{linked-block}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/identity/item-parent-groups.hbs -2021-12-03T16:39:05.367Z [warn] WARNING: {{or}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/secrets/backends.hbs -2021-12-03T16:39:05.493Z [warn] WARNING: {{linked-block}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/access/identity/index.hbs -2021-12-03T16:39:05.493Z [warn] WARNING: {{pluralize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/access/identity/index.hbs -2021-12-03T16:39:05.494Z [warn] WARNING: {{pluralize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/access/identity/index.hbs -2021-12-03T16:39:05.494Z [warn] WARNING: {{pluralize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/access/identity/index.hbs -2021-12-03T16:39:05.494Z [warn] WARNING: {{pluralize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/access/identity/index.hbs -2021-12-03T16:39:05.526Z [warn] WARNING: {{capitalize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/access/identity/show.hbs -2021-12-03T16:39:05.527Z [warn] WARNING: {{capitalize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/access/identity/show.hbs -2021-12-03T16:39:05.558Z [warn] WARNING: {{capitalize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/tools/tool.hbs -2021-12-03T16:39:05.586Z [warn] WARNING: {{or}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/access/leases/list.hbs -2021-12-03T16:39:05.587Z [warn] WARNING: {{compact}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/access/leases/list.hbs -2021-12-03T16:39:05.640Z [warn] WARNING: {{date-format}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/access/leases/show.hbs -2021-12-03T16:39:05.640Z [warn] WARNING: {{date-format}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/access/leases/show.hbs -2021-12-03T16:39:05.640Z [warn] WARNING: {{date-format}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/access/leases/show.hbs -2021-12-03T16:39:05.640Z [warn] WARNING: {{date-from-now}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/access/leases/show.hbs -2021-12-03T16:39:05.651Z [warn] WARNING: {{section-tabs}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/access/method/section.hbs -2021-12-03T16:39:05.679Z [warn] WARNING: {{not}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/secrets/backend/configuration.hbs -2021-12-03T16:39:05.679Z [warn] WARNING: {{or}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/secrets/backend/configuration.hbs -2021-12-03T16:39:05.679Z [warn] WARNING: {{stringify}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/secrets/backend/configuration.hbs -2021-12-03T16:39:05.679Z [warn] WARNING: {{and}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/secrets/backend/configuration.hbs -2021-12-03T16:39:05.679Z [warn] WARNING: {{or}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/secrets/backend/configuration.hbs -2021-12-03T16:39:05.884Z [warn] WARNING: {{eq}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/secrets/backend/list.hbs -2021-12-03T16:39:05.885Z [warn] WARNING: {{pluralize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/secrets/backend/list.hbs -2021-12-03T16:39:05.885Z [warn] WARNING: {{pluralize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/secrets/backend/list.hbs -2021-12-03T16:39:05.885Z [warn] WARNING: {{compact}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/secrets/backend/list.hbs -2021-12-03T16:39:05.885Z [warn] WARNING: {{capitalize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/secrets/backend/list.hbs -2021-12-03T16:39:05.885Z [warn] WARNING: {{pluralize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/secrets/backend/list.hbs -2021-12-03T16:39:05.912Z [warn] WARNING: {{eq}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/secrets/backend/overview.hbs -2021-12-03T16:39:05.968Z [warn] WARNING: {{capitalize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/secrets/backend/sign.hbs -2021-12-03T16:39:05.968Z [warn] WARNING: {{stringify}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/secrets/backend/sign.hbs -2021-12-03T16:39:05.968Z [warn] WARNING: {{capitalize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/secrets/backend/sign.hbs -2021-12-03T16:39:05.991Z [warn] WARNING: {{humanize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/secrets/backend/transit-actions-layout.hbs -2021-12-03T16:39:06.040Z [warn] WARNING: {{reverse}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/secrets/backend/versions.hbs -2021-12-03T16:39:06.040Z [warn] WARNING: {{date-format}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/secrets/backend/versions.hbs -2021-12-03T16:39:06.052Z [warn] WARNING: {{section-tabs}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/settings/auth/configure.hbs -2021-12-03T16:39:06.117Z [warn] WARNING: {{pluralize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/secrets/backend/roles.hbs -2021-12-03T16:39:06.117Z [warn] WARNING: {{pluralize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/secrets/backend/roles.hbs -2021-12-03T16:39:06.118Z [warn] WARNING: {{compact}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/secrets/backend/roles.hbs -2021-12-03T16:39:06.118Z [warn] WARNING: {{pluralize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/secrets/backend/roles.hbs -2021-12-03T16:39:06.144Z [warn] WARNING: {{linked-block}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/access/identity/aliases/index.hbs -2021-12-03T16:39:06.148Z [warn] WARNING: {{pluralize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/access/identity/aliases/index.hbs -2021-12-03T16:39:06.148Z [warn] WARNING: {{pluralize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/access/identity/aliases/index.hbs -2021-12-03T16:39:06.160Z [warn] WARNING: {{pluralize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/access/identity/aliases/show.hbs -2021-12-03T16:39:06.161Z [warn] WARNING: {{capitalize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/access/identity/aliases/show.hbs -2021-12-03T16:39:06.161Z [warn] WARNING: {{lowercase}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/access/identity/aliases/show.hbs -2021-12-03T16:39:06.166Z [warn] WARNING: {{lowercase}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/access/identity/aliases/add.hbs -2021-12-03T16:39:06.170Z [warn] WARNING: {{auth-config-form/options}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/settings/auth/configure/section.hbs -2021-12-03T16:39:06.170Z [warn] WARNING: {{auth-config-form/config}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/settings/auth/configure/section.hbs -2021-12-03T16:39:04.788Z [warn] WARNING: {{capitalize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/alphabet-edit.hbs -2021-12-03T16:39:04.788Z [warn] WARNING: {{stringify}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/alphabet-edit.hbs -2021-12-03T16:39:04.788Z [warn] WARNING: {{capitalize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/alphabet-edit.hbs -2021-12-03T16:39:04.788Z [warn] WARNING: {{eq}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/alphabet-edit.hbs -2021-12-03T16:39:04.788Z [warn] WARNING: {{capitalize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/alphabet-edit.hbs -2021-12-03T16:39:04.798Z [warn] WARNING: {{date-format}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault.hbs -2021-12-03T16:39:04.798Z [warn] WARNING: {{changelog-url-for}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault.hbs -2021-12-03T16:39:04.889Z [warn] WARNING: {{date-from-now}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/auth-info.hbs -2021-12-03T16:39:04.890Z [warn] WARNING: {{date-format}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/auth-info.hbs -2021-12-03T16:39:04.956Z [warn] WARNING: {{or}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/auth-jwt.hbs -2021-12-03T16:39:05.130Z [warn] WARNING: {{capitalize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/config-pki-ca.hbs -2021-12-03T16:39:05.130Z [warn] WARNING: {{capitalize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/config-pki-ca.hbs -2021-12-03T16:39:05.131Z [warn] WARNING: {{date-format}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/config-pki-ca.hbs -2021-12-03T16:39:05.131Z [warn] WARNING: {{capitalize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/config-pki-ca.hbs -2021-12-03T16:39:05.131Z [warn] WARNING: {{or}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/config-pki-ca.hbs -2021-12-03T16:39:05.131Z [warn] WARNING: {{capitalize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/config-pki-ca.hbs -2021-12-03T16:39:05.131Z [warn] WARNING: {{capitalize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/config-pki-ca.hbs -2021-12-03T16:39:05.131Z [warn] WARNING: {{date-format}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/config-pki-ca.hbs -2021-12-03T16:39:05.132Z [warn] WARNING: {{capitalize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/config-pki-ca.hbs -2021-12-03T16:39:05.352Z [warn] WARNING: {{not}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/cluster-info.hbs -2021-12-03T16:39:05.352Z [warn] WARNING: {{not}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/cluster-info.hbs -2021-12-03T16:39:05.352Z [warn] WARNING: {{not}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/cluster-info.hbs -2021-12-03T16:39:05.525Z [warn] WARNING: {{or}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/auth-form.hbs -2021-12-03T16:39:05.526Z [warn] WARNING: {{or}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/auth-form.hbs -2021-12-03T16:39:05.526Z [warn] WARNING: {{or}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/auth-form.hbs -2021-12-03T16:39:05.771Z [warn] WARNING: {{capitalize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/database-connection.hbs -2021-12-03T16:39:05.771Z [warn] WARNING: {{fn}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/database-connection.hbs -2021-12-03T16:39:05.771Z [warn] WARNING: {{not}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/database-connection.hbs -2021-12-03T16:39:05.771Z [warn] WARNING: {{capitalize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/database-connection.hbs -2021-12-03T16:39:05.772Z [warn] WARNING: {{stringify}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/database-connection.hbs -2021-12-03T16:39:05.772Z [warn] WARNING: {{not}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/database-connection.hbs -2021-12-03T16:39:05.772Z [warn] WARNING: {{capitalize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/database-connection.hbs -2021-12-03T16:39:05.772Z [warn] WARNING: {{not}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/database-connection.hbs -2021-12-03T16:39:05.772Z [warn] WARNING: {{capitalize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/database-connection.hbs -2021-12-03T16:39:05.781Z [warn] WARNING: {{or}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/file-to-array-buffer.hbs -2021-12-03T16:39:05.781Z [warn] WARNING: {{date-format}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/file-to-array-buffer.hbs -2021-12-03T16:39:05.805Z [warn] WARNING: {{stringify}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/control-group-success.hbs -2021-12-03T16:39:05.805Z [warn] WARNING: {{stringify}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/control-group-success.hbs -2021-12-03T16:39:05.805Z [warn] WARNING: {{not}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/control-group-success.hbs -2021-12-03T16:39:05.881Z [warn] WARNING: {{capitalize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/form-field-from-model.hbs -2021-12-03T16:39:05.881Z [warn] WARNING: {{eq}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/form-field-from-model.hbs -2021-12-03T16:39:05.881Z [warn] WARNING: {{or}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/form-field-from-model.hbs -2021-12-03T16:39:05.881Z [warn] WARNING: {{or}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/form-field-from-model.hbs -2021-12-03T16:39:05.881Z [warn] WARNING: {{or}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/form-field-from-model.hbs -2021-12-03T16:39:05.881Z [warn] WARNING: {{capitalize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/form-field-from-model.hbs -2021-12-03T16:39:05.882Z [warn] WARNING: {{capitalize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/form-field-from-model.hbs -2021-12-03T16:39:05.927Z [warn] WARNING: {{format-duration}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/generate-credentials-database.hbs -2021-12-03T16:39:05.927Z [warn] WARNING: {{date-format}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/generate-credentials-database.hbs -2021-12-03T16:39:05.927Z [warn] WARNING: {{format-duration}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/generate-credentials-database.hbs -2021-12-03T16:39:05.927Z [warn] WARNING: {{format-duration}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/generate-credentials-database.hbs -2021-12-03T16:39:06.019Z [warn] WARNING: {{capitalize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/generate-credentials.hbs -2021-12-03T16:39:06.020Z [warn] WARNING: {{stringify}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/generate-credentials.hbs -2021-12-03T16:39:06.020Z [warn] WARNING: {{capitalize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/generate-credentials.hbs -2021-12-03T16:39:06.020Z [warn] WARNING: {{capitalize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/generate-credentials.hbs -2021-12-03T16:39:06.020Z [warn] WARNING: {{date-format}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/generate-credentials.hbs -2021-12-03T16:39:06.020Z [warn] WARNING: {{capitalize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/generate-credentials.hbs -2021-12-03T16:39:06.020Z [warn] WARNING: {{date-format}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/generate-credentials.hbs -2021-12-03T16:39:06.020Z [warn] WARNING: {{capitalize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/generate-credentials.hbs -2021-12-03T16:39:06.050Z [warn] WARNING: {{pluralize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/generated-item.hbs -2021-12-03T16:39:06.050Z [warn] WARNING: {{capitalize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/generated-item.hbs -2021-12-03T16:39:06.050Z [warn] WARNING: {{singularize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/generated-item.hbs -2021-12-03T16:39:06.050Z [warn] WARNING: {{singularize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/generated-item.hbs -2021-12-03T16:39:06.050Z [warn] WARNING: {{or}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/generated-item.hbs -2021-12-03T16:39:06.128Z [warn] WARNING: {{date-format}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/license-banners.hbs -2021-12-03T16:39:06.128Z [warn] WARNING: {{date-format}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/license-banners.hbs -2021-12-03T16:39:06.128Z [warn] WARNING: {{date-format}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/license-banners.hbs -2021-12-03T16:39:06.181Z [warn] WARNING: {{capitalize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/database-role-edit.hbs -2021-12-03T16:39:06.181Z [warn] WARNING: {{stringify}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/database-role-edit.hbs -2021-12-03T16:39:06.181Z [warn] WARNING: {{capitalize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/database-role-edit.hbs -2021-12-03T16:39:06.182Z [warn] WARNING: {{eq}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/database-role-edit.hbs -2021-12-03T16:39:06.182Z [warn] WARNING: {{await}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/database-role-edit.hbs -2021-12-03T16:39:06.192Z [warn] WARNING: {{date-format}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/license-info.hbs -2021-12-03T16:39:06.192Z [warn] WARNING: {{date-format}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/license-info.hbs -2021-12-03T16:39:04.991Z [warn] WARNING: {{or}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/namespace-picker.hbs -2021-12-03T16:39:05.065Z [warn] WARNING: {{or}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/mount-backend-form.hbs -2021-12-03T16:39:05.065Z [warn] WARNING: {{capitalize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/mount-backend-form.hbs -2021-12-03T16:39:05.066Z [warn] WARNING: {{or}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/mount-backend-form.hbs -2021-12-03T16:39:05.066Z [warn] WARNING: {{queue}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/mount-backend-form.hbs -2021-12-03T16:39:05.083Z [warn] WARNING: {{or}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/mount-backend-form.hbs -2021-12-03T16:39:05.083Z [warn] WARNING: {{not}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/mount-backend-form.hbs -2021-12-03T16:39:05.139Z [warn] WARNING: {{eq}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/mount-accessor-select.hbs -2021-12-03T16:39:05.179Z [warn] WARNING: {{capitalize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/mount-info.hbs -2021-12-03T16:39:05.180Z [warn] WARNING: {{section-tabs}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/mount-info.hbs -2021-12-03T16:39:05.249Z [warn] WARNING: {{or}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/not-found.hbs -2021-12-03T16:39:05.307Z [warn] WARNING: {{capitalize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/pki-cert-show.hbs -2021-12-03T16:39:05.307Z [warn] WARNING: {{stringify}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/pki-cert-show.hbs -2021-12-03T16:39:05.308Z [warn] WARNING: {{capitalize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/pki-cert-show.hbs -2021-12-03T16:39:05.308Z [warn] WARNING: {{capitalize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/pki-cert-show.hbs -2021-12-03T16:39:05.308Z [warn] WARNING: {{date-format}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/pki-cert-show.hbs -2021-12-03T16:39:05.308Z [warn] WARNING: {{capitalize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/pki-cert-show.hbs -2021-12-03T16:39:05.308Z [warn] WARNING: {{date-format}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/pki-cert-show.hbs -2021-12-03T16:39:05.308Z [warn] WARNING: {{capitalize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/pki-cert-show.hbs -2021-12-03T16:39:05.375Z [warn] WARNING: {{date-format}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/pricing-metrics-dates.hbs -2021-12-03T16:39:05.375Z [warn] WARNING: {{date-format}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/pricing-metrics-dates.hbs -2021-12-03T16:39:05.426Z [warn] WARNING: {{queue}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/raft-storage-overview.hbs -2021-12-03T16:39:05.426Z [warn] WARNING: {{queue}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/raft-storage-overview.hbs -2021-12-03T16:39:05.517Z [warn] WARNING: {{join}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/role-aws-edit.hbs -2021-12-03T16:39:05.517Z [warn] WARNING: {{join}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/role-aws-edit.hbs -2021-12-03T16:39:05.517Z [warn] WARNING: {{capitalize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/role-aws-edit.hbs -2021-12-03T16:39:05.517Z [warn] WARNING: {{stringify}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/role-aws-edit.hbs -2021-12-03T16:39:05.518Z [warn] WARNING: {{capitalize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/role-aws-edit.hbs -2021-12-03T16:39:05.578Z [warn] WARNING: {{capitalize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/role-ssh-edit.hbs -2021-12-03T16:39:05.578Z [warn] WARNING: {{stringify}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/role-ssh-edit.hbs -2021-12-03T16:39:05.578Z [warn] WARNING: {{capitalize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/role-ssh-edit.hbs -2021-12-03T16:39:05.623Z [warn] WARNING: {{capitalize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/role-pki-edit.hbs -2021-12-03T16:39:05.623Z [warn] WARNING: {{capitalize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/role-pki-edit.hbs -2021-12-03T16:39:05.753Z [warn] WARNING: {{or}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/secret-create-or-update.hbs -2021-12-03T16:39:05.754Z [warn] WARNING: {{or}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/secret-create-or-update.hbs -2021-12-03T16:39:05.766Z [warn] WARNING: {{compute}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/raft-join.hbs -2021-12-03T16:39:05.907Z [warn] WARNING: {{and}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/secret-edit-toolbar.hbs -2021-12-03T16:39:05.907Z [warn] WARNING: {{stringify}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/secret-edit-toolbar.hbs -2021-12-03T16:39:05.942Z [warn] WARNING: {{date-format}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/secret-form-show.hbs -2021-12-03T16:39:05.985Z [warn] WARNING: {{or}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/secret-list-header.hbs -2021-12-03T16:39:05.985Z [warn] WARNING: {{or}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/secret-list-header.hbs -2021-12-03T16:39:05.985Z [warn] WARNING: {{capitalize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/secret-list-header.hbs -2021-12-03T16:39:06.174Z [warn] WARNING: {{date-format}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/token-expire-warning.hbs -2021-12-03T16:39:06.228Z [warn] WARNING: {{date-from-now}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/tool-lookup.hbs -2021-12-03T16:39:06.280Z [warn] WARNING: {{stringify}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/tool-unwrap.hbs -2021-12-03T16:39:06.280Z [warn] WARNING: {{stringify}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/tool-unwrap.hbs -2021-12-03T16:39:05.385Z [warn] WARNING: {{eq}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/identity/lookup-input.hbs -2021-12-03T16:39:05.385Z [warn] WARNING: {{capitalize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/identity/lookup-input.hbs -2021-12-03T16:39:05.449Z [warn] WARNING: {{linked-block}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/secret-list/aws-role-item.hbs -2021-12-03T16:39:05.518Z [warn] WARNING: {{secret-query-params}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/secret-list/database-list-item.hbs -2021-12-03T16:39:05.518Z [warn] WARNING: {{secret-query-params}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/secret-list/database-list-item.hbs -2021-12-03T16:39:05.524Z [warn] WARNING: {{linked-block}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/secret-list/pki-cert-item.hbs -2021-12-03T16:39:05.596Z [warn] WARNING: {{linked-block}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/secret-list/item.hbs -2021-12-03T16:39:05.653Z [warn] WARNING: {{linked-block}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/secret-list/pki-role-item.hbs -2021-12-03T16:39:05.691Z [warn] WARNING: {{linked-block}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/secret-list/transform-list-item.hbs -2021-12-03T16:39:05.774Z [warn] WARNING: {{linked-block}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/secret-list/ssh-role-item.hbs -2021-12-03T16:39:05.834Z [warn] WARNING: {{eq}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/transit-key-action/datakey.hbs -2021-12-03T16:39:05.835Z [warn] WARNING: {{eq}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/transit-key-action/datakey.hbs -2021-12-03T16:39:05.875Z [warn] WARNING: {{linked-block}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/secret-list/transform-transformation-item.hbs -2021-12-03T16:39:06.019Z [warn] WARNING: {{eq}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/transit-key-action/export.hbs -2021-12-03T16:39:06.021Z [warn] WARNING: {{eq}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/transit-key-action/export.hbs -2021-12-03T16:39:06.203Z [warn] WARNING: {{queue}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/components/transit-key-action/verify.hbs -2021-12-03T16:39:06.307Z [warn] WARNING: {{pluralize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/init.hbs -2021-12-03T16:39:06.307Z [warn] WARNING: {{add}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/init.hbs -2021-12-03T16:39:06.358Z [warn] WARNING: {{capitalize}} was not converted as it has positional parameters which can't be automatically converted. Source: app/templates/vault/cluster/unseal.hbs diff --git a/ui/package.json b/ui/package.json index 9186f7c6b942..4bc9bdfcd332 100644 --- a/ui/package.json +++ b/ui/package.json @@ -175,8 +175,7 @@ "tracked-built-ins": "^3.3.0", "typescript": "^4.9.5", "walk-sync": "^2.0.2", - "webpack": "5.89.0", - "xstate": "^3.3.3" + "webpack": "5.89.0" }, "resolutions": { "ansi-html": "^0.0.8", diff --git a/ui/tests/integration/components/features-selection-test.js b/ui/tests/integration/components/features-selection-test.js deleted file mode 100644 index ca49cd68e953..000000000000 --- a/ui/tests/integration/components/features-selection-test.js +++ /dev/null @@ -1,58 +0,0 @@ -/** - * Copyright (c) HashiCorp, Inc. - * SPDX-License-Identifier: BUSL-1.1 - */ - -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``); - - 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``); - 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``); - await component.selectSecrets(); - assert.false(component.hasDisabledStartButton); - }); -}); diff --git a/ui/tests/pages/components/wizard/features-selection.js b/ui/tests/pages/components/wizard/features-selection.js deleted file mode 100644 index 487cc828e3bb..000000000000 --- a/ui/tests/pages/components/wizard/features-selection.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Copyright (c) HashiCorp, Inc. - * SPDX-License-Identifier: BUSL-1.1 - */ - -import { collection, isPresent, property, clickable } from 'ember-cli-page-object'; - -export default { - wizardItems: collection('[data-test-select-input]', { - hasDisabledTooltip: isPresent('[data-test-tooltip]'), - }), - hasDisabledStartButton: property('disabled', '[data-test-start-button]'), - selectSecrets: clickable('[data-test-checkbox=Secrets]'), -}; diff --git a/ui/tests/unit/machines/auth-machine-test.js b/ui/tests/unit/machines/auth-machine-test.js deleted file mode 100644 index c5bf6531a2a8..000000000000 --- a/ui/tests/unit/machines/auth-machine-test.js +++ /dev/null @@ -1,90 +0,0 @@ -/** - * Copyright (c) HashiCorp, Inc. - * SPDX-License-Identifier: BUSL-1.1 - */ - -import { module, test } from 'qunit'; -import { Machine } from 'xstate'; -import AuthMachineConfig from 'vault/machines/auth-machine'; - -module('Unit | Machine | auth-machine', function () { - const authMachine = Machine(AuthMachineConfig); - - const testCases = [ - { - currentState: authMachine.initialState, - event: 'CONTINUE', - params: null, - expectedResults: { - value: 'enable', - actions: [ - { component: 'wizard/mounts-wizard', level: 'feature', type: 'render' }, - { component: 'wizard/auth-enable', level: 'step', type: 'render' }, - ], - }, - }, - { - currentState: 'enable', - event: 'CONTINUE', - params: null, - expectedResults: { - value: 'config', - actions: [ - { type: 'render', level: 'feature', component: 'wizard/mounts-wizard' }, - { type: 'render', level: 'step', component: 'wizard/auth-config' }, - ], - }, - }, - { - currentState: 'config', - event: 'CONTINUE', - expectedResults: { - value: 'details', - actions: [ - { component: 'wizard/auth-details', level: 'step', type: 'render' }, - { component: 'wizard/mounts-wizard', level: 'feature', type: 'render' }, - ], - }, - }, - { - currentState: 'details', - event: 'CONTINUE', - expectedResults: { - value: 'complete', - actions: ['completeFeature'], - }, - }, - { - currentState: 'details', - event: 'RESET', - params: null, - expectedResults: { - value: 'idle', - actions: [ - { - params: ['vault.cluster.settings.auth.enable'], - type: 'routeTransition', - }, - { - component: 'wizard/mounts-wizard', - level: 'feature', - type: 'render', - }, - { - component: 'wizard/auth-idle', - level: 'step', - type: 'render', - }, - ], - }, - }, - ]; - - testCases.forEach((testCase) => { - test(`transition: ${testCase.event} for currentState ${testCase.currentState} and componentState ${testCase.params}`, function (assert) { - const result = authMachine.transition(testCase.currentState, testCase.event, testCase.params); - assert.strictEqual(result.value, testCase.expectedResults.value); - assert.deepEqual(result.actions, testCase.expectedResults.actions); - }); - }); -}); diff --git a/ui/tests/unit/machines/policies-machine-test.js b/ui/tests/unit/machines/policies-machine-test.js deleted file mode 100644 index cfffea3e377c..000000000000 --- a/ui/tests/unit/machines/policies-machine-test.js +++ /dev/null @@ -1,65 +0,0 @@ -/** - * Copyright (c) HashiCorp, Inc. - * SPDX-License-Identifier: BUSL-1.1 - */ - -import { module, test } from 'qunit'; -import { Machine } from 'xstate'; -import PoliciesMachineConfig from 'vault/machines/policies-machine'; - -module('Unit | Machine | policies-machine', function () { - const policiesMachine = Machine(PoliciesMachineConfig); - - const testCases = [ - { - currentState: policiesMachine.initialState, - event: 'CONTINUE', - params: null, - expectedResults: { - value: 'create', - actions: [{ component: 'wizard/policies-create', level: 'feature', type: 'render' }], - }, - }, - { - currentState: 'create', - event: 'CONTINUE', - params: null, - expectedResults: { - value: 'details', - actions: [{ component: 'wizard/policies-details', level: 'feature', type: 'render' }], - }, - }, - { - currentState: 'details', - event: 'CONTINUE', - expectedResults: { - value: 'delete', - actions: [{ component: 'wizard/policies-delete', level: 'feature', type: 'render' }], - }, - }, - { - currentState: 'delete', - event: 'CONTINUE', - expectedResults: { - value: 'others', - actions: [{ component: 'wizard/policies-others', level: 'feature', type: 'render' }], - }, - }, - { - currentState: 'others', - event: 'CONTINUE', - expectedResults: { - value: 'complete', - actions: ['completeFeature'], - }, - }, - ]; - - testCases.forEach((testCase) => { - test(`transition: ${testCase.event} for currentState ${testCase.currentState} and componentState ${testCase.params}`, function (assert) { - const result = policiesMachine.transition(testCase.currentState, testCase.event, testCase.params); - assert.strictEqual(result.value, testCase.expectedResults.value); - assert.deepEqual(result.actions, testCase.expectedResults.actions); - }); - }); -}); diff --git a/ui/tests/unit/machines/replication-machine-test.js b/ui/tests/unit/machines/replication-machine-test.js deleted file mode 100644 index 48bb8c27da41..000000000000 --- a/ui/tests/unit/machines/replication-machine-test.js +++ /dev/null @@ -1,41 +0,0 @@ -/** - * Copyright (c) HashiCorp, Inc. - * SPDX-License-Identifier: BUSL-1.1 - */ - -import { module, test } from 'qunit'; -import { Machine } from 'xstate'; -import ReplicationMachineConfig from 'vault/machines/replication-machine'; - -module('Unit | Machine | replication-machine', function () { - const replicationMachine = Machine(ReplicationMachineConfig); - - const testCases = [ - { - currentState: replicationMachine.initialState, - event: 'ENABLEREPLICATION', - params: null, - expectedResults: { - value: 'details', - actions: [{ type: 'render', level: 'feature', component: 'wizard/replication-details' }], - }, - }, - { - currentState: 'details', - event: 'CONTINUE', - params: null, - expectedResults: { - value: 'complete', - actions: ['completeFeature'], - }, - }, - ]; - - testCases.forEach((testCase) => { - test(`transition: ${testCase.event} for currentState ${testCase.currentState} and componentState ${testCase.params}`, function (assert) { - const result = replicationMachine.transition(testCase.currentState, testCase.event, testCase.params); - assert.strictEqual(result.value, testCase.expectedResults.value); - assert.deepEqual(result.actions, testCase.expectedResults.actions); - }); - }); -}); diff --git a/ui/tests/unit/machines/secrets-machine-test.js b/ui/tests/unit/machines/secrets-machine-test.js deleted file mode 100644 index 349032220551..000000000000 --- a/ui/tests/unit/machines/secrets-machine-test.js +++ /dev/null @@ -1,1007 +0,0 @@ -/** - * Copyright (c) HashiCorp, Inc. - * SPDX-License-Identifier: BUSL-1.1 - */ - -import { module, skip } from 'qunit'; -import { Machine } from 'xstate'; -import SecretsMachineConfig from 'vault/machines/secrets-machine'; - -module('Unit | Machine | secrets-machine', function () { - const secretsMachine = Machine(SecretsMachineConfig); - - const testCases = [ - { - currentState: secretsMachine.initialState, - event: 'CONTINUE', - params: null, - expectedResults: { - value: 'enable', - actions: [ - { component: 'wizard/mounts-wizard', level: 'feature', type: 'render' }, - { component: 'wizard/secrets-enable', level: 'step', type: 'render' }, - ], - }, - }, - { - currentState: 'enable', - event: 'CONTINUE', - params: 'aws', - expectedResults: { - value: 'details', - actions: [ - { component: 'wizard/mounts-wizard', level: 'feature', type: 'render' }, - { component: 'wizard/secrets-details', level: 'step', type: 'render' }, - ], - }, - }, - { - currentState: 'details', - event: 'CONTINUE', - params: 'aws', - expectedResults: { - value: 'role', - actions: [ - { component: 'wizard/secrets-role', level: 'step', type: 'render' }, - { component: 'wizard/mounts-wizard', level: 'feature', type: 'render' }, - ], - }, - }, - { - currentState: 'role', - event: 'CONTINUE', - params: 'aws', - expectedResults: { - value: 'displayRole', - actions: [ - { component: 'wizard/secrets-display-role', level: 'step', type: 'render' }, - { component: 'wizard/mounts-wizard', level: 'feature', type: 'render' }, - ], - }, - }, - { - currentState: 'displayRole', - event: 'CONTINUE', - params: 'aws', - expectedResults: { - value: 'credentials', - actions: [ - { component: 'wizard/secrets-credentials', level: 'step', type: 'render' }, - { component: 'wizard/mounts-wizard', level: 'feature', type: 'render' }, - ], - }, - }, - { - currentState: 'credentials', - event: 'CONTINUE', - params: 'aws', - expectedResults: { - value: 'display', - actions: [ - { component: 'wizard/secrets-display', level: 'step', type: 'render' }, - { component: 'wizard/mounts-wizard', level: 'feature', type: 'render' }, - ], - }, - }, - { - currentState: 'display', - event: 'REPEAT', - params: 'aws', - expectedResults: { - value: 'role', - actions: [ - { - params: ['vault.cluster.secrets.backend.create-root'], - type: 'routeTransition', - }, - { component: 'wizard/secrets-role', level: 'step', type: 'render' }, - { component: 'wizard/mounts-wizard', level: 'feature', type: 'render' }, - ], - }, - }, - { - currentState: 'display', - event: 'RESET', - params: 'aws', - expectedResults: { - value: 'idle', - actions: [ - { - params: ['vault.cluster.settings.mount-secret-backend'], - type: 'routeTransition', - }, - { - component: 'wizard/mounts-wizard', - level: 'feature', - type: 'render', - }, - { - component: 'wizard/secrets-idle', - level: 'step', - type: 'render', - }, - ], - }, - }, - { - currentState: 'display', - event: 'DONE', - params: 'aws', - expectedResults: { - value: 'complete', - actions: ['completeFeature'], - }, - }, - { - currentState: 'display', - event: 'ERROR', - params: 'aws', - expectedResults: { - value: 'error', - actions: [ - { component: 'wizard/tutorial-error', level: 'step', type: 'render' }, - { component: 'wizard/mounts-wizard', level: 'feature', type: 'render' }, - ], - }, - }, - { - currentState: 'enable', - event: 'CONTINUE', - params: 'pki', - expectedResults: { - value: 'details', - actions: [ - { component: 'wizard/mounts-wizard', level: 'feature', type: 'render' }, - { component: 'wizard/secrets-details', level: 'step', type: 'render' }, - ], - }, - }, - { - currentState: 'details', - event: 'CONTINUE', - params: 'pki', - expectedResults: { - value: 'role', - actions: [ - { component: 'wizard/secrets-role', level: 'step', type: 'render' }, - { component: 'wizard/mounts-wizard', level: 'feature', type: 'render' }, - ], - }, - }, - { - currentState: 'role', - event: 'CONTINUE', - params: 'pki', - expectedResults: { - value: 'displayRole', - actions: [ - { component: 'wizard/secrets-display-role', level: 'step', type: 'render' }, - { component: 'wizard/mounts-wizard', level: 'feature', type: 'render' }, - ], - }, - }, - { - currentState: 'displayRole', - event: 'CONTINUE', - params: 'pki', - expectedResults: { - value: 'credentials', - actions: [ - { component: 'wizard/secrets-credentials', level: 'step', type: 'render' }, - { component: 'wizard/mounts-wizard', level: 'feature', type: 'render' }, - ], - }, - }, - { - currentState: 'credentials', - event: 'CONTINUE', - params: 'pki', - expectedResults: { - value: 'display', - actions: [ - { component: 'wizard/secrets-display', level: 'step', type: 'render' }, - { component: 'wizard/mounts-wizard', level: 'feature', type: 'render' }, - ], - }, - }, - { - currentState: 'display', - event: 'REPEAT', - params: 'pki', - expectedResults: { - value: 'role', - actions: [ - { - params: ['vault.cluster.secrets.backend.create-root'], - type: 'routeTransition', - }, - { component: 'wizard/secrets-role', level: 'step', type: 'render' }, - { component: 'wizard/mounts-wizard', level: 'feature', type: 'render' }, - ], - }, - }, - { - currentState: 'display', - event: 'RESET', - params: 'pki', - expectedResults: { - value: 'idle', - actions: [ - { - params: ['vault.cluster.settings.mount-secret-backend'], - type: 'routeTransition', - }, - { - component: 'wizard/mounts-wizard', - level: 'feature', - type: 'render', - }, - { - component: 'wizard/secrets-idle', - level: 'step', - type: 'render', - }, - ], - }, - }, - { - currentState: 'display', - event: 'DONE', - params: 'pki', - expectedResults: { - value: 'complete', - actions: ['completeFeature'], - }, - }, - { - currentState: 'display', - event: 'ERROR', - params: 'pki', - expectedResults: { - value: 'error', - actions: [ - { component: 'wizard/tutorial-error', level: 'step', type: 'render' }, - { component: 'wizard/mounts-wizard', level: 'feature', type: 'render' }, - ], - }, - }, - { - currentState: 'enable', - event: 'CONTINUE', - params: 'ssh', - expectedResults: { - value: 'details', - actions: [ - { component: 'wizard/mounts-wizard', level: 'feature', type: 'render' }, - { component: 'wizard/secrets-details', level: 'step', type: 'render' }, - ], - }, - }, - { - currentState: 'details', - event: 'CONTINUE', - params: 'ssh', - expectedResults: { - value: 'role', - actions: [ - { component: 'wizard/secrets-role', level: 'step', type: 'render' }, - { component: 'wizard/mounts-wizard', level: 'feature', type: 'render' }, - ], - }, - }, - { - currentState: 'role', - event: 'CONTINUE', - params: 'ssh', - expectedResults: { - value: 'displayRole', - actions: [ - { component: 'wizard/secrets-display-role', level: 'step', type: 'render' }, - { component: 'wizard/mounts-wizard', level: 'feature', type: 'render' }, - ], - }, - }, - { - currentState: 'displayRole', - event: 'CONTINUE', - params: 'ssh', - expectedResults: { - value: 'credentials', - actions: [ - { component: 'wizard/secrets-credentials', level: 'step', type: 'render' }, - { component: 'wizard/mounts-wizard', level: 'feature', type: 'render' }, - ], - }, - }, - { - currentState: 'credentials', - event: 'CONTINUE', - params: 'ssh', - expectedResults: { - value: 'display', - actions: [ - { component: 'wizard/secrets-display', level: 'step', type: 'render' }, - { component: 'wizard/mounts-wizard', level: 'feature', type: 'render' }, - ], - }, - }, - { - currentState: 'display', - event: 'REPEAT', - params: 'ssh', - expectedResults: { - value: 'role', - actions: [ - { - params: ['vault.cluster.secrets.backend.create-root'], - type: 'routeTransition', - }, - { component: 'wizard/secrets-role', level: 'step', type: 'render' }, - { component: 'wizard/mounts-wizard', level: 'feature', type: 'render' }, - ], - }, - }, - { - currentState: 'display', - event: 'RESET', - params: 'ssh', - expectedResults: { - value: 'idle', - actions: [ - { - params: ['vault.cluster.settings.mount-secret-backend'], - type: 'routeTransition', - }, - { - component: 'wizard/mounts-wizard', - level: 'feature', - type: 'render', - }, - { - component: 'wizard/secrets-idle', - level: 'step', - type: 'render', - }, - ], - }, - }, - { - currentState: 'display', - event: 'DONE', - params: 'ssh', - expectedResults: { - value: 'complete', - actions: ['completeFeature'], - }, - }, - { - currentState: 'display', - event: 'ERROR', - params: 'ssh', - expectedResults: { - value: 'error', - actions: [ - { component: 'wizard/tutorial-error', level: 'step', type: 'render' }, - { component: 'wizard/mounts-wizard', level: 'feature', type: 'render' }, - ], - }, - }, - { - currentState: 'enable', - event: 'CONTINUE', - params: 'consul', - expectedResults: { - value: 'list', - actions: [ - { type: 'render', level: 'step', component: 'wizard/secrets-list' }, - { type: 'render', level: 'feature', component: 'wizard/mounts-wizard' }, - ], - }, - }, - { - currentState: 'list', - event: 'CONTINUE', - params: 'consul', - expectedResults: { - value: 'display', - actions: [ - { component: 'wizard/secrets-display', level: 'step', type: 'render' }, - { component: 'wizard/mounts-wizard', level: 'feature', type: 'render' }, - ], - }, - }, - { - currentState: 'display', - event: 'RESET', - params: 'consul', - expectedResults: { - value: 'idle', - actions: [ - { - params: ['vault.cluster.settings.mount-secret-backend'], - type: 'routeTransition', - }, - { - component: 'wizard/mounts-wizard', - level: 'feature', - type: 'render', - }, - { - component: 'wizard/secrets-idle', - level: 'step', - type: 'render', - }, - ], - }, - }, - { - currentState: 'display', - event: 'DONE', - params: 'consul', - expectedResults: { - value: 'complete', - actions: ['completeFeature'], - }, - }, - { - currentState: 'display', - event: 'ERROR', - params: 'consul', - expectedResults: { - value: 'error', - actions: [ - { component: 'wizard/tutorial-error', level: 'step', type: 'render' }, - { component: 'wizard/mounts-wizard', level: 'feature', type: 'render' }, - ], - }, - }, - { - currentState: 'enable', - event: 'CONTINUE', - params: 'database', - expectedResults: { - value: 'details', - actions: [ - { type: 'render', level: 'feature', component: 'wizard/mounts-wizard' }, - { type: 'render', level: 'step', component: 'wizard/secrets-details' }, - ], - }, - }, - { - currentState: 'list', - event: 'CONTINUE', - params: 'database', - expectedResults: { - value: 'display', - actions: [ - { component: 'wizard/secrets-display', level: 'step', type: 'render' }, - { component: 'wizard/mounts-wizard', level: 'feature', type: 'render' }, - ], - }, - }, - { - currentState: 'display', - event: 'RESET', - params: 'database', - expectedResults: { - value: 'idle', - actions: [ - { - params: ['vault.cluster.settings.mount-secret-backend'], - type: 'routeTransition', - }, - { - component: 'wizard/mounts-wizard', - level: 'feature', - type: 'render', - }, - { - component: 'wizard/secrets-idle', - level: 'step', - type: 'render', - }, - ], - }, - }, - { - currentState: 'display', - event: 'DONE', - params: 'database', - expectedResults: { - value: 'complete', - actions: ['completeFeature'], - }, - }, - { - currentState: 'display', - event: 'ERROR', - params: 'database', - expectedResults: { - value: 'error', - actions: [ - { component: 'wizard/tutorial-error', level: 'step', type: 'render' }, - { component: 'wizard/mounts-wizard', level: 'feature', type: 'render' }, - ], - }, - }, - { - currentState: 'enable', - event: 'CONTINUE', - params: 'gcp', - expectedResults: { - value: 'list', - actions: [ - { type: 'render', level: 'step', component: 'wizard/secrets-list' }, - { type: 'render', level: 'feature', component: 'wizard/mounts-wizard' }, - ], - }, - }, - { - currentState: 'list', - event: 'CONTINUE', - params: 'gcp', - expectedResults: { - value: 'display', - actions: [ - { component: 'wizard/secrets-display', level: 'step', type: 'render' }, - { component: 'wizard/mounts-wizard', level: 'feature', type: 'render' }, - ], - }, - }, - { - currentState: 'display', - event: 'RESET', - params: 'gcp', - expectedResults: { - value: 'idle', - actions: [ - { - params: ['vault.cluster.settings.mount-secret-backend'], - type: 'routeTransition', - }, - { - component: 'wizard/mounts-wizard', - level: 'feature', - type: 'render', - }, - { - component: 'wizard/secrets-idle', - level: 'step', - type: 'render', - }, - ], - }, - }, - { - currentState: 'display', - event: 'DONE', - params: 'gcp', - expectedResults: { - value: 'complete', - actions: ['completeFeature'], - }, - }, - { - currentState: 'display', - event: 'ERROR', - params: 'gcp', - expectedResults: { - value: 'error', - actions: [ - { component: 'wizard/tutorial-error', level: 'step', type: 'render' }, - { component: 'wizard/mounts-wizard', level: 'feature', type: 'render' }, - ], - }, - }, - { - currentState: 'enable', - event: 'CONTINUE', - params: 'nomad', - expectedResults: { - value: 'list', - actions: [ - { type: 'render', level: 'step', component: 'wizard/secrets-list' }, - { type: 'render', level: 'feature', component: 'wizard/mounts-wizard' }, - ], - }, - }, - { - currentState: 'list', - event: 'CONTINUE', - params: 'nomad', - expectedResults: { - value: 'display', - actions: [ - { component: 'wizard/secrets-display', level: 'step', type: 'render' }, - { component: 'wizard/mounts-wizard', level: 'feature', type: 'render' }, - ], - }, - }, - { - currentState: 'display', - event: 'RESET', - params: 'nomad', - expectedResults: { - value: 'idle', - actions: [ - { - params: ['vault.cluster.settings.mount-secret-backend'], - type: 'routeTransition', - }, - { - component: 'wizard/mounts-wizard', - level: 'feature', - type: 'render', - }, - { - component: 'wizard/secrets-idle', - level: 'step', - type: 'render', - }, - ], - }, - }, - { - currentState: 'display', - event: 'DONE', - params: 'nomad', - expectedResults: { - value: 'complete', - actions: ['completeFeature'], - }, - }, - { - currentState: 'display', - event: 'ERROR', - params: 'nomad', - expectedResults: { - value: 'error', - actions: [ - { component: 'wizard/tutorial-error', level: 'step', type: 'render' }, - { component: 'wizard/mounts-wizard', level: 'feature', type: 'render' }, - ], - }, - }, - { - currentState: 'enable', - event: 'CONTINUE', - params: 'rabbitmq', - expectedResults: { - value: 'list', - actions: [ - { type: 'render', level: 'step', component: 'wizard/secrets-list' }, - { type: 'render', level: 'feature', component: 'wizard/mounts-wizard' }, - ], - }, - }, - { - currentState: 'list', - event: 'CONTINUE', - params: 'rabbitmq', - expectedResults: { - value: 'display', - actions: [ - { component: 'wizard/secrets-display', level: 'step', type: 'render' }, - { component: 'wizard/mounts-wizard', level: 'feature', type: 'render' }, - ], - }, - }, - { - currentState: 'display', - event: 'RESET', - params: 'rabbitmq', - expectedResults: { - value: 'idle', - actions: [ - { - params: ['vault.cluster.settings.mount-secret-backend'], - type: 'routeTransition', - }, - { - component: 'wizard/mounts-wizard', - level: 'feature', - type: 'render', - }, - { - component: 'wizard/secrets-idle', - level: 'step', - type: 'render', - }, - ], - }, - }, - { - currentState: 'display', - event: 'DONE', - params: 'rabbitmq', - expectedResults: { - value: 'complete', - actions: ['completeFeature'], - }, - }, - { - currentState: 'display', - event: 'ERROR', - params: 'rabbitmq', - expectedResults: { - value: 'error', - actions: [ - { component: 'wizard/tutorial-error', level: 'step', type: 'render' }, - { component: 'wizard/mounts-wizard', level: 'feature', type: 'render' }, - ], - }, - }, - { - currentState: 'enable', - event: 'CONTINUE', - params: 'totp', - expectedResults: { - value: 'list', - actions: [ - { type: 'render', level: 'step', component: 'wizard/secrets-list' }, - { type: 'render', level: 'feature', component: 'wizard/mounts-wizard' }, - ], - }, - }, - { - currentState: 'list', - event: 'CONTINUE', - params: 'totp', - expectedResults: { - value: 'display', - actions: [ - { component: 'wizard/secrets-display', level: 'step', type: 'render' }, - { component: 'wizard/mounts-wizard', level: 'feature', type: 'render' }, - ], - }, - }, - { - currentState: 'display', - event: 'RESET', - params: 'totp', - expectedResults: { - value: 'idle', - actions: [ - { - params: ['vault.cluster.settings.mount-secret-backend'], - type: 'routeTransition', - }, - { - component: 'wizard/mounts-wizard', - level: 'feature', - type: 'render', - }, - { - component: 'wizard/secrets-idle', - level: 'step', - type: 'render', - }, - ], - }, - }, - { - currentState: 'display', - event: 'DONE', - params: 'totp', - expectedResults: { - value: 'complete', - actions: ['completeFeature'], - }, - }, - { - currentState: 'display', - event: 'ERROR', - params: 'totp', - expectedResults: { - value: 'error', - actions: [ - { component: 'wizard/tutorial-error', level: 'step', type: 'render' }, - { component: 'wizard/mounts-wizard', level: 'feature', type: 'render' }, - ], - }, - }, - { - currentState: 'enable', - event: 'CONTINUE', - params: 'kv', - expectedResults: { - value: 'details', - actions: [ - { component: 'wizard/mounts-wizard', level: 'feature', type: 'render' }, - { component: 'wizard/secrets-details', level: 'step', type: 'render' }, - ], - }, - }, - { - currentState: 'details', - event: 'CONTINUE', - params: 'kv', - expectedResults: { - value: 'secret', - actions: [ - { component: 'wizard/secrets-secret', level: 'step', type: 'render' }, - { component: 'wizard/mounts-wizard', level: 'feature', type: 'render' }, - ], - }, - }, - { - currentState: 'secret', - event: 'CONTINUE', - params: 'kv', - expectedResults: { - value: 'display', - actions: [ - { component: 'wizard/secrets-display', level: 'step', type: 'render' }, - { component: 'wizard/mounts-wizard', level: 'feature', type: 'render' }, - ], - }, - }, - { - currentState: 'display', - event: 'REPEAT', - params: 'kv', - expectedResults: { - value: 'secret', - actions: [ - { - params: ['vault.cluster.secrets.backend.create-root'], - type: 'routeTransition', - }, - { component: 'wizard/secrets-secret', level: 'step', type: 'render' }, - { component: 'wizard/mounts-wizard', level: 'feature', type: 'render' }, - ], - }, - }, - { - currentState: 'display', - event: 'RESET', - params: 'kv', - expectedResults: { - value: 'idle', - actions: [ - { - params: ['vault.cluster.settings.mount-secret-backend'], - type: 'routeTransition', - }, - { - component: 'wizard/mounts-wizard', - level: 'feature', - type: 'render', - }, - { - component: 'wizard/secrets-idle', - level: 'step', - type: 'render', - }, - ], - }, - }, - { - currentState: 'display', - event: 'DONE', - params: 'kv', - expectedResults: { - value: 'complete', - actions: ['completeFeature'], - }, - }, - { - currentState: 'display', - event: 'ERROR', - params: 'kv', - expectedResults: { - value: 'error', - actions: [ - { component: 'wizard/tutorial-error', level: 'step', type: 'render' }, - { component: 'wizard/mounts-wizard', level: 'feature', type: 'render' }, - ], - }, - }, - { - currentState: 'enable', - event: 'CONTINUE', - params: 'transit', - expectedResults: { - value: 'details', - actions: [ - { component: 'wizard/mounts-wizard', level: 'feature', type: 'render' }, - { component: 'wizard/secrets-details', level: 'step', type: 'render' }, - ], - }, - }, - { - currentState: 'details', - event: 'CONTINUE', - params: 'transit', - expectedResults: { - value: 'encryption', - actions: [ - { component: 'wizard/mounts-wizard', level: 'feature', type: 'render' }, - { component: 'wizard/secrets-encryption', level: 'step', type: 'render' }, - ], - }, - }, - { - currentState: 'encryption', - event: 'CONTINUE', - params: 'transit', - expectedResults: { - value: 'display', - actions: [ - { component: 'wizard/secrets-display', level: 'step', type: 'render' }, - { component: 'wizard/mounts-wizard', level: 'feature', type: 'render' }, - ], - }, - }, - { - currentState: 'display', - event: 'REPEAT', - params: 'transit', - expectedResults: { - value: 'encryption', - actions: [ - { - params: ['vault.cluster.secrets.backend.create-root'], - type: 'routeTransition', - }, - { component: 'wizard/mounts-wizard', level: 'feature', type: 'render' }, - { component: 'wizard/secrets-encryption', level: 'step', type: 'render' }, - ], - }, - }, - { - currentState: 'display', - event: 'RESET', - params: 'transit', - expectedResults: { - value: 'idle', - actions: [ - { - params: ['vault.cluster.settings.mount-secret-backend'], - type: 'routeTransition', - }, - { - component: 'wizard/mounts-wizard', - level: 'feature', - type: 'render', - }, - { - component: 'wizard/secrets-idle', - level: 'step', - type: 'render', - }, - ], - }, - }, - { - currentState: 'display', - event: 'DONE', - params: 'transit', - expectedResults: { - value: 'complete', - actions: ['completeFeature'], - }, - }, - { - currentState: 'display', - event: 'ERROR', - params: 'transit', - expectedResults: { - value: 'error', - actions: [ - { component: 'wizard/tutorial-error', level: 'step', type: 'render' }, - { component: 'wizard/mounts-wizard', level: 'feature', type: 'render' }, - ], - }, - }, - ]; - - testCases.forEach((testCase) => { - // skipping see PR https://github.com/hashicorp/vault/pull/19220 - skip(`transition: ${testCase.event} for currentState ${testCase.currentState} and componentState ${testCase.params}`, function (assert) { - const result = secretsMachine.transition(testCase.currentState, testCase.event, testCase.params); - assert.strictEqual(result.value, testCase.expectedResults.value); - assert.deepEqual(result.actions, testCase.expectedResults.actions); - }); - }); -}); diff --git a/ui/tests/unit/machines/tools-machine-test.js b/ui/tests/unit/machines/tools-machine-test.js deleted file mode 100644 index 607e46e274cc..000000000000 --- a/ui/tests/unit/machines/tools-machine-test.js +++ /dev/null @@ -1,94 +0,0 @@ -/** - * Copyright (c) HashiCorp, Inc. - * SPDX-License-Identifier: BUSL-1.1 - */ - -import { module, test } from 'qunit'; -import { Machine } from 'xstate'; -import ToolsMachineConfig from 'vault/machines/tools-machine'; - -module('Unit | Machine | tools-machine', function () { - const toolsMachine = Machine(ToolsMachineConfig); - - const testCases = [ - { - currentState: toolsMachine.initialState, - event: 'CONTINUE', - params: null, - expectedResults: { - value: 'wrapped', - actions: [{ type: 'render', level: 'feature', component: 'wizard/tools-wrapped' }], - }, - }, - { - currentState: 'wrapped', - event: 'LOOKUP', - params: null, - expectedResults: { - value: 'lookup', - actions: [{ type: 'render', level: 'feature', component: 'wizard/tools-lookup' }], - }, - }, - { - currentState: 'lookup', - event: 'CONTINUE', - params: null, - expectedResults: { - value: 'info', - actions: [{ type: 'render', level: 'feature', component: 'wizard/tools-info' }], - }, - }, - { - currentState: 'info', - event: 'REWRAP', - params: null, - expectedResults: { - value: 'rewrap', - actions: [{ type: 'render', level: 'feature', component: 'wizard/tools-rewrap' }], - }, - }, - { - currentState: 'rewrap', - event: 'CONTINUE', - params: null, - expectedResults: { - value: 'rewrapped', - actions: [{ type: 'render', level: 'feature', component: 'wizard/tools-rewrapped' }], - }, - }, - { - currentState: 'rewrapped', - event: 'UNWRAP', - params: null, - expectedResults: { - value: 'unwrap', - actions: [{ type: 'render', level: 'feature', component: 'wizard/tools-unwrap' }], - }, - }, - { - currentState: 'unwrap', - event: 'CONTINUE', - params: null, - expectedResults: { - value: 'unwrapped', - actions: [{ type: 'render', level: 'feature', component: 'wizard/tools-unwrapped' }], - }, - }, - { - currentState: 'unwrapped', - event: 'CONTINUE', - expectedResults: { - value: 'complete', - actions: ['completeFeature'], - }, - }, - ]; - - testCases.forEach((testCase) => { - test(`transition: ${testCase.event} for currentState ${testCase.currentState} and componentState ${testCase.params}`, function (assert) { - const result = toolsMachine.transition(testCase.currentState, testCase.event, testCase.params); - assert.strictEqual(result.value, testCase.expectedResults.value); - assert.deepEqual(result.actions, testCase.expectedResults.actions); - }); - }); -}); diff --git a/ui/tests/unit/machines/tutorial-machine-test.js b/ui/tests/unit/machines/tutorial-machine-test.js deleted file mode 100644 index eae055344709..000000000000 --- a/ui/tests/unit/machines/tutorial-machine-test.js +++ /dev/null @@ -1,251 +0,0 @@ -/** - * Copyright (c) HashiCorp, Inc. - * SPDX-License-Identifier: BUSL-1.1 - */ - -import { module, test } from 'qunit'; -import { Machine } from 'xstate'; -import TutorialMachineConfig from 'vault/machines/tutorial-machine'; - -module('Unit | Machine | tutorial-machine', function () { - const tutorialMachine = Machine(TutorialMachineConfig); - - const testCases = [ - { - currentState: 'init', - event: 'START', - params: null, - expectedResults: { - value: { - init: { - active: 'setup', - }, - }, - actions: [ - { type: 'render', level: 'tutorial', component: 'wizard/tutorial-active' }, - { type: 'render', level: 'feature', component: 'wizard/init-setup' }, - ], - }, - }, - { - currentState: 'init.active.setup', - event: 'TOSAVE', - params: null, - expectedResults: { - value: { - init: { - active: 'save', - }, - }, - actions: [{ type: 'render', level: 'feature', component: 'wizard/init-save-keys' }], - }, - }, - { - currentState: 'init', - event: 'SAVE', - params: null, - expectedResults: { - value: { - init: { - active: 'save', - }, - }, - actions: [ - { type: 'render', level: 'tutorial', component: 'wizard/tutorial-active' }, - { type: 'render', level: 'feature', component: 'wizard/init-save-keys' }, - ], - }, - }, - { - currentState: 'init.active.save', - event: 'TOUNSEAL', - params: null, - expectedResults: { - value: { - init: { - active: 'unseal', - }, - }, - actions: [{ type: 'render', level: 'feature', component: 'wizard/init-unseal' }], - }, - }, - { - currentState: 'init', - event: 'UNSEAL', - params: null, - expectedResults: { - value: { - init: { - active: 'unseal', - }, - }, - actions: [ - { type: 'render', level: 'tutorial', component: 'wizard/tutorial-active' }, - { type: 'render', level: 'feature', component: 'wizard/init-unseal' }, - ], - }, - }, - { - currentState: 'init.active.unseal', - event: 'TOLOGIN', - params: null, - expectedResults: { - value: { - init: { - active: 'login', - }, - }, - actions: [{ type: 'render', level: 'feature', component: 'wizard/init-login' }], - }, - }, - { - currentState: 'init', - event: 'LOGIN', - params: null, - expectedResults: { - value: { - init: { - active: 'login', - }, - }, - actions: [ - { type: 'render', level: 'tutorial', component: 'wizard/tutorial-active' }, - { type: 'render', level: 'feature', component: 'wizard/init-login' }, - ], - }, - }, - { - currentState: 'init.active.login', - event: 'INITDONE', - params: null, - expectedResults: { - value: { - active: 'select', - }, - actions: [ - 'showTutorialWhenAuthenticated', - 'clearFeatureData', - { type: 'render', level: 'tutorial', component: 'wizard/tutorial-active' }, - { type: 'render', level: 'feature', component: 'wizard/features-selection' }, - ], - }, - }, - { - currentState: 'active.select', - event: 'CONTINUE', - params: null, - expectedResults: { - value: { - active: 'feature', - }, - actions: [], - }, - }, - { - currentState: 'active.feature', - event: 'DISMISS', - params: null, - expectedResults: { - value: 'dismissed', - actions: [ - { type: 'render', level: 'tutorial', component: null }, - { type: 'render', level: 'feature', component: null }, - { type: 'render', level: 'step', component: null }, - { type: 'render', level: 'detail', component: null }, - 'handleDismissed', - ], - }, - }, - { - currentState: 'active.feature', - event: 'DONE', - params: null, - expectedResults: { - value: 'complete', - actions: [ - { type: 'render', level: 'feature', component: null }, - { type: 'render', level: 'step', component: null }, - { type: 'render', level: 'detail', component: null }, - { type: 'render', level: 'tutorial', component: 'wizard/tutorial-complete' }, - ], - }, - }, - { - currentState: 'active.feature', - event: 'PAUSE', - params: null, - expectedResults: { - value: 'paused', - actions: [ - { type: 'render', level: 'feature', component: null }, - { type: 'render', level: 'step', component: null }, - { type: 'render', level: 'detail', component: null }, - { type: 'render', level: 'tutorial', component: 'wizard/tutorial-paused' }, - 'handlePaused', - ], - }, - }, - { - currentState: 'paused', - event: 'CONTINUE', - params: null, - expectedResults: { - value: { - active: 'feature', - }, - actions: ['handleResume', { type: 'render', level: 'tutorial', component: 'wizard/tutorial-active' }], - }, - }, - { - currentState: 'idle', - event: 'INIT', - params: null, - expectedResults: { - value: { - init: 'idle', - }, - actions: [ - 'showTutorialAlways', - { type: 'render', level: 'tutorial', component: 'wizard/tutorial-idle' }, - { type: 'render', level: 'feature', component: null }, - ], - }, - }, - { - currentState: 'idle', - event: 'AUTH', - params: null, - expectedResults: { - value: { - active: 'select', - }, - actions: [ - { type: 'render', level: 'tutorial', component: 'wizard/tutorial-active' }, - { type: 'render', level: 'feature', component: 'wizard/features-selection' }, - ], - }, - }, - { - currentState: 'idle', - event: 'CONTINUE', - params: null, - expectedResults: { - value: { - active: 'select', - }, - actions: [ - { type: 'render', level: 'tutorial', component: 'wizard/tutorial-active' }, - { type: 'render', level: 'feature', component: 'wizard/features-selection' }, - ], - }, - }, - ]; - - testCases.forEach((testCase) => { - test(`transition: ${testCase.event} for currentState ${testCase.currentState} and componentState ${testCase.params}`, function (assert) { - const result = tutorialMachine.transition(testCase.currentState, testCase.event, testCase.params); - assert.deepEqual(result.value, testCase.expectedResults.value); - assert.deepEqual(result.actions, testCase.expectedResults.actions); - }); - }); -}); diff --git a/ui/tests/unit/services/wizard-test.js b/ui/tests/unit/services/wizard-test.js deleted file mode 100644 index 08dd5b21018a..000000000000 --- a/ui/tests/unit/services/wizard-test.js +++ /dev/null @@ -1,374 +0,0 @@ -/** - * Copyright (c) HashiCorp, Inc. - * SPDX-License-Identifier: BUSL-1.1 - */ - -/* eslint qunit/no-conditional-assertions: "warn" */ -import { module, test } from 'qunit'; -import { setupTest } from 'ember-qunit'; -import sinon from 'sinon'; -import { STORAGE_KEYS, DEFAULTS } from 'vault/helpers/wizard-constants'; - -module('Unit | Service | wizard', function (hooks) { - setupTest(hooks); - - hooks.beforeEach(function () { - this.router = this.owner.lookup('service:router'); - this.router.reopen({ - transitionTo: sinon.stub().returns({ - followRedirects: function () { - return { - then: function (callback) { - callback(); - }, - }; - }, - }), - urlFor: sinon.stub().returns('/ui/vault/foo'), - }); - }); - - function storage() { - return { - items: {}, - getItem(key) { - var item = this.items[key]; - return item && JSON.parse(item); - }, - - setItem(key, val) { - return (this.items[key] = JSON.stringify(val)); - }, - - removeItem(key) { - delete this.items[key]; - }, - - keys() { - return Object.keys(this.items); - }, - }; - } - - const testCases = [ - { - method: 'getExtState', - args: [STORAGE_KEYS.TUTORIAL_STATE], - expectedResults: { - storage: [{ key: STORAGE_KEYS.TUTORIAL_STATE, value: 'idle' }], - }, - assertCount: 1, - }, - { - method: 'saveExtState', - args: [STORAGE_KEYS.TUTORIAL_STATE, 'test'], - expectedResults: { - storage: [{ key: STORAGE_KEYS.TUTORIAL_STATE, value: 'test' }], - }, - assertCount: 1, - }, - { - method: 'storageHasKey', - args: ['fake-key'], - expectedResults: { value: false }, - assertCount: 1, - }, - { - method: 'storageHasKey', - args: [STORAGE_KEYS.TUTORIAL_STATE], - expectedResults: { value: true }, - assertCount: 1, - }, - { - method: 'handleDismissed', - args: [], - expectedResults: { - storage: [ - { key: STORAGE_KEYS.FEATURE_STATE, value: undefined }, - { key: STORAGE_KEYS.FEATURE_LIST, value: undefined }, - { key: STORAGE_KEYS.COMPONENT_STATE, value: undefined }, - ], - }, - assertCount: 3, - }, - { - method: 'handlePaused', - args: [], - properties: { - expectedURL: 'this/is/a/url', - expectedRouteName: 'this.is.a.route', - }, - expectedResults: { - storage: [ - { key: STORAGE_KEYS.RESUME_URL, value: 'this/is/a/url' }, - { key: STORAGE_KEYS.RESUME_ROUTE, value: 'this.is.a.route' }, - ], - }, - assertCount: 2, - }, - { - method: 'handlePaused', - args: [], - expectedResults: { - storage: [ - { key: STORAGE_KEYS.RESUME_URL, value: undefined }, - { key: STORAGE_KEYS.RESUME_ROUTE, value: undefined }, - ], - }, - assertCount: 2, - }, - { - method: 'handleResume', - storage: [ - { key: STORAGE_KEYS.RESUME_URL, value: 'this/is/a/url' }, - { key: STORAGE_KEYS.RESUME_ROUTE, value: 'this.is.a.route' }, - ], - args: [], - expectedResults: { - props: [ - { prop: 'expectedURL', value: 'this/is/a/url' }, - { prop: 'expectedRouteName', value: 'this.is.a.route' }, - ], - storage: [ - { key: STORAGE_KEYS.RESUME_URL, value: undefined }, - { key: STORAGE_KEYS.RESUME_ROUTE, value: 'this.is.a.route' }, - ], - }, - assertCount: 4, - }, - { - method: 'handleResume', - args: [], - expectedResults: { - storage: [ - { key: STORAGE_KEYS.RESUME_URL, value: undefined }, - { key: STORAGE_KEYS.RESUME_ROUTE, value: undefined }, - ], - }, - assertCount: 2, - }, - { - method: 'restartGuide', - args: [], - expectedResults: { - props: [ - { prop: 'currentState', value: 'active.select' }, - { prop: 'featureComponent', value: 'wizard/features-selection' }, - { prop: 'tutorialComponent', value: 'wizard/tutorial-active' }, - ], - storage: [ - { key: STORAGE_KEYS.FEATURE_STATE, value: undefined }, - { key: STORAGE_KEYS.FEATURE_STATE_HISTORY, value: undefined }, - { key: STORAGE_KEYS.FEATURE_LIST, value: undefined }, - { key: STORAGE_KEYS.COMPONENT_STATE, value: undefined }, - { key: STORAGE_KEYS.TUTORIAL_STATE, value: 'active.select' }, - { key: STORAGE_KEYS.COMPLETED_FEATURES, value: undefined }, - { key: STORAGE_KEYS.RESUME_URL, value: undefined }, - { key: STORAGE_KEYS.RESUME_ROUTE, value: undefined }, - ], - }, - assertCount: 11, - }, - { - method: 'clearFeatureData', - args: [], - expectedResults: { - props: [ - { prop: 'currentMachine', value: null }, - { prop: 'featureMachineHistory', value: null }, - ], - storage: [ - { key: STORAGE_KEYS.FEATURE_STATE, value: undefined }, - { key: STORAGE_KEYS.FEATURE_STATE_HISTORY, value: undefined }, - { key: STORAGE_KEYS.FEATURE_LIST, value: undefined }, - { key: STORAGE_KEYS.COMPONENT_STATE, value: undefined }, - ], - }, - assertCount: 6, - }, - { - method: 'saveState', - args: [ - 'currentState', - { - value: { - init: { - active: 'login', - }, - }, - actions: [{ type: 'render', level: 'feature', component: 'wizard/init-login' }], - }, - ], - expectedResults: { - props: [{ prop: 'currentState', value: 'init.active.login' }], - }, - assertCount: 1, - }, - { - method: 'saveState', - args: [ - 'currentState', - { - value: { - active: 'login', - }, - actions: [{ type: 'render', level: 'feature', component: 'wizard/init-login' }], - }, - ], - expectedResults: { - props: [{ prop: 'currentState', value: 'active.login' }], - }, - assertCount: 1, - }, - { - method: 'saveState', - args: ['currentState', 'login'], - expectedResults: { - props: [{ prop: 'currentState', value: 'login' }], - }, - assertCount: 1, - }, - { - method: 'saveFeatureHistory', - args: ['idle'], - properties: { featureList: ['policies', 'tools'] }, - storage: [{ key: STORAGE_KEYS.COMPLETED_FEATURES, value: ['secrets'] }], - expectedResults: { - props: [{ prop: 'featureMachineHistory', value: null }], - }, - assertCount: 1, - }, - { - method: 'saveFeatureHistory', - args: ['idle'], - properties: { featureList: ['policies', 'tools'] }, - storage: [], - expectedResults: { - props: [{ prop: 'featureMachineHistory', value: ['idle'] }], - }, - assertCount: 1, - }, - { - method: 'saveFeatureHistory', - args: ['idle'], - properties: { featureList: ['policies', 'tools'] }, - storage: [], - expectedResults: { - props: [{ prop: 'featureMachineHistory', value: ['idle'] }], - }, - assertCount: 1, - }, - { - method: 'saveFeatureHistory', - args: ['idle'], - properties: { featureMachineHistory: [], featureList: ['policies', 'tools'] }, - storage: [{ key: STORAGE_KEYS.COMPLETED_FEATURES, value: ['secrets'] }], - expectedResults: { - props: [{ prop: 'featureMachineHistory', value: ['idle'] }], - storage: [{ key: STORAGE_KEYS.FEATURE_STATE_HISTORY, value: ['idle'] }], - }, - assertCount: 2, - }, - { - method: 'saveFeatureHistory', - args: ['idle'], - properties: { featureMachineHistory: null, featureList: ['policies', 'tools'] }, - storage: [{ key: STORAGE_KEYS.COMPLETED_FEATURES, value: ['secrets'] }], - expectedResults: { - props: [{ prop: 'featureMachineHistory', value: null }], - }, - assertCount: 1, - }, - { - method: 'saveFeatureHistory', - args: ['create'], - properties: { featureMachineHistory: ['idle'], featureList: ['policies', 'tools'] }, - storage: [{ key: STORAGE_KEYS.COMPLETED_FEATURES, value: ['secrets'] }], - expectedResults: { - props: [{ prop: 'featureMachineHistory', value: ['idle', 'create'] }], - storage: [{ key: STORAGE_KEYS.FEATURE_STATE_HISTORY, value: ['idle', 'create'] }], - }, - assertCount: 2, - }, - { - method: 'saveFeatureHistory', - args: ['create'], - properties: { featureMachineHistory: ['idle'], featureList: ['policies', 'tools'] }, - storage: [ - { key: STORAGE_KEYS.COMPLETED_FEATURES, value: ['secrets'] }, - { key: STORAGE_KEYS.FEATURE_STATE_HISTORY, value: ['idle', 'create'] }, - ], - expectedResults: { - props: [{ prop: 'featureMachineHistory', value: ['idle', 'create'] }], - storage: [{ key: STORAGE_KEYS.FEATURE_STATE_HISTORY, value: ['idle', 'create'] }], - }, - assertCount: 2, - }, - { - method: 'startFeature', - args: [], - properties: { featureList: ['secrets', 'tools'] }, - expectedResults: { - props: [ - { prop: 'featureState', value: 'idle' }, - { prop: 'currentMachine', value: 'secrets' }, - ], - }, - assertCount: 2, - }, - { - method: 'saveFeatures', - args: [['secrets', 'tools']], - expectedResults: { - props: [{ prop: 'featureList', value: ['secrets', 'tools'] }], - storage: [{ key: STORAGE_KEYS.FEATURE_LIST, value: ['secrets', 'tools'] }], - }, - assertCount: 2, - }, - ]; - - testCases.forEach((testCase) => { - const store = storage(); - test(`${testCase.method}`, function (assert) { - assert.expect(testCase.assertCount); - const wizard = this.owner.factoryFor('service:wizard').create({ - storage() { - return store; - }, - }); - - if (testCase.properties) { - wizard.setProperties(testCase.properties); - } else { - wizard.setProperties(DEFAULTS); - } - - if (testCase.storage) { - testCase.storage.forEach((item) => wizard.storage().setItem(item.key, item.value)); - } - - const result = wizard[testCase.method](...testCase.args); - if (testCase.expectedResults.props) { - testCase.expectedResults.props.forEach((property) => { - assert.deepEqual( - wizard.get(property.prop), - property.value, - `${testCase.method} creates correct value for ${property.prop}` - ); - }); - } - if (testCase.expectedResults.storage) { - testCase.expectedResults.storage.forEach((item) => { - assert.deepEqual( - wizard.storage().getItem(item.key), - item.value, - `${testCase.method} creates correct storage state for ${item.key}` - ); - }); - } - if (testCase.expectedResults.value !== null && testCase.expectedResults.value !== undefined) { - assert.strictEqual(result, testCase.expectedResults.value, `${testCase.method} gives correct value`); - } - }); - }); -}); diff --git a/ui/yarn.lock b/ui/yarn.lock index dba74bf8f694..c3f7e357bd07 100644 --- a/ui/yarn.lock +++ b/ui/yarn.lock @@ -18246,7 +18246,6 @@ __metadata: uuid: ^9.0.0 walk-sync: ^2.0.2 webpack: 5.89.0 - xstate: ^3.3.3 languageName: unknown linkType: soft @@ -18684,13 +18683,6 @@ __metadata: languageName: node linkType: hard -"xstate@npm:^3.3.3": - version: 3.3.3 - resolution: "xstate@npm:3.3.3" - checksum: b659cf8c7ac5f48ef68bd55d8b5a60fb3b34686222c8d4e8966b9e8d7fd59569cf02e135fba5969d1f7b96cd3f617b1131b38970b90930371e668af7f6b4d2f6 - languageName: node - linkType: hard - "xtend@npm:^4.0.0": version: 4.0.2 resolution: "xtend@npm:4.0.2"