mirror of
https://github.com/optim-enterprises-bv/vault.git
synced 2025-11-02 11:38:02 +00:00
UI: Ember deprecations - transition methods part 1 (#25560)
This commit is contained in:
@@ -4,25 +4,29 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import Controller from '@ember/controller';
|
import Controller from '@ember/controller';
|
||||||
import { task } from 'ember-concurrency';
|
import { service } from '@ember/service';
|
||||||
|
|
||||||
export default Controller.extend({
|
export default Controller.extend({
|
||||||
|
router: service(),
|
||||||
showRoute: 'vault.cluster.access.identity.show',
|
showRoute: 'vault.cluster.access.identity.show',
|
||||||
showTab: 'details',
|
showTab: 'details',
|
||||||
navAfterSave: task(function* ({ saveType, model }) {
|
|
||||||
const isDelete = saveType === 'delete';
|
actions: {
|
||||||
const type = model.get('identityType');
|
navAfterSave({ saveType, model }) {
|
||||||
const listRoutes = {
|
const isDelete = saveType === 'delete';
|
||||||
'entity-alias': 'vault.cluster.access.identity.aliases.index',
|
const type = model.identityType;
|
||||||
'group-alias': 'vault.cluster.access.identity.aliases.index',
|
const listRoutes = {
|
||||||
group: 'vault.cluster.access.identity.index',
|
'entity-alias': 'vault.cluster.access.identity.aliases.index',
|
||||||
entity: 'vault.cluster.access.identity.index',
|
'group-alias': 'vault.cluster.access.identity.aliases.index',
|
||||||
};
|
group: 'vault.cluster.access.identity.index',
|
||||||
const routeName = listRoutes[type];
|
entity: 'vault.cluster.access.identity.index',
|
||||||
if (!isDelete) {
|
};
|
||||||
yield this.transitionToRoute(this.showRoute, model.id, this.showTab);
|
if (!isDelete) {
|
||||||
return;
|
this.router.transitionTo(this.showRoute, model.id, this.showTab);
|
||||||
}
|
} else {
|
||||||
yield this.transitionToRoute(routeName);
|
const routeName = listRoutes[type];
|
||||||
}),
|
this.router.transitionTo(routeName);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -4,11 +4,13 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import Controller from '@ember/controller';
|
import Controller from '@ember/controller';
|
||||||
|
import { service } from '@ember/service';
|
||||||
|
|
||||||
export default Controller.extend({
|
export default Controller.extend({
|
||||||
|
router: service(),
|
||||||
actions: {
|
actions: {
|
||||||
lookupLease(id) {
|
lookupLease(id) {
|
||||||
this.transitionToRoute('vault.cluster.access.leases.show', id);
|
this.router.transitionTo('vault.cluster.access.leases.show', id);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import { keyIsFolder } from 'core/utils/key-utils';
|
|||||||
|
|
||||||
export default Controller.extend(ListController, {
|
export default Controller.extend(ListController, {
|
||||||
flashMessages: service(),
|
flashMessages: service(),
|
||||||
|
router: service(),
|
||||||
store: service(),
|
store: service(),
|
||||||
clusterController: controller('vault.cluster'),
|
clusterController: controller('vault.cluster'),
|
||||||
|
|
||||||
@@ -61,7 +62,7 @@ export default Controller.extend(ListController, {
|
|||||||
const fn = adapter[method];
|
const fn = adapter[method];
|
||||||
fn.call(adapter, prefix)
|
fn.call(adapter, prefix)
|
||||||
.then(() => {
|
.then(() => {
|
||||||
return this.transitionToRoute('vault.cluster.access.leases.list-root').then(() => {
|
return this.router.transitionTo('vault.cluster.access.leases.list-root').then(() => {
|
||||||
this.flashMessages.success(`All of the leases under ${prefix} will be revoked.`);
|
this.flashMessages.success(`All of the leases under ${prefix} will be revoked.`);
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -21,11 +21,12 @@ export default Controller.extend({
|
|||||||
}),
|
}),
|
||||||
|
|
||||||
flashMessages: service(),
|
flashMessages: service(),
|
||||||
|
router: service(),
|
||||||
|
|
||||||
actions: {
|
actions: {
|
||||||
revokeLease(model) {
|
revokeLease(model) {
|
||||||
return model.destroyRecord().then(() => {
|
return model.destroyRecord().then(() => {
|
||||||
return this.transitionToRoute('vault.cluster.access.leases.list-root');
|
return this.router.transitionTo('vault.cluster.access.leases.list-root');
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@@ -7,12 +7,13 @@ import { service } from '@ember/service';
|
|||||||
import Controller from '@ember/controller';
|
import Controller from '@ember/controller';
|
||||||
export default Controller.extend({
|
export default Controller.extend({
|
||||||
namespaceService: service('namespace'),
|
namespaceService: service('namespace'),
|
||||||
|
router: service(),
|
||||||
actions: {
|
actions: {
|
||||||
onSave({ saveType }) {
|
onSave({ saveType }) {
|
||||||
if (saveType === 'save') {
|
if (saveType === 'save') {
|
||||||
// fetch new namespaces for the namespace picker
|
// fetch new namespaces for the namespace picker
|
||||||
this.namespaceService.findNamespacesForUser.perform();
|
this.namespaceService.findNamespacesForUser.perform();
|
||||||
return this.transitionToRoute('vault.cluster.access.namespaces.index');
|
return this.router.transitionTo('vault.cluster.access.namespaces.index');
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -4,13 +4,15 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import Controller from '@ember/controller';
|
import Controller from '@ember/controller';
|
||||||
|
import { service } from '@ember/service';
|
||||||
|
|
||||||
export default Controller.extend({
|
export default Controller.extend({
|
||||||
|
router: service(),
|
||||||
queryParams: ['action'],
|
queryParams: ['action'],
|
||||||
action: '',
|
action: '',
|
||||||
actions: {
|
actions: {
|
||||||
onPromote() {
|
onPromote() {
|
||||||
this.transitionToRoute('vault.cluster.replication.mode.index', 'dr');
|
this.router.transitionTo('vault.cluster.replication.mode.index', 'dr');
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -4,11 +4,14 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import Controller from '@ember/controller';
|
import Controller from '@ember/controller';
|
||||||
|
import { service } from '@ember/service';
|
||||||
|
|
||||||
export default Controller.extend({
|
export default Controller.extend({
|
||||||
|
router: service(),
|
||||||
|
|
||||||
actions: {
|
actions: {
|
||||||
onMountSuccess: function (type, path) {
|
onMountSuccess: function (type, path) {
|
||||||
const transition = this.transitionToRoute('vault.cluster.settings.auth.configure', path);
|
const transition = this.router.transitionTo('vault.cluster.settings.auth.configure', path);
|
||||||
return transition.followRedirects();
|
return transition.followRedirects();
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -42,9 +42,11 @@ export default Mixin.create({
|
|||||||
transition.targetName !== CLUSTER_INDEX &&
|
transition.targetName !== CLUSTER_INDEX &&
|
||||||
!isExcluded
|
!isExcluded
|
||||||
) {
|
) {
|
||||||
return this.transitionTo(targetRoute, { queryParams: { redirect_to: this.router.currentURL } });
|
return this.router.transitionTo(targetRoute, {
|
||||||
|
queryParams: { redirect_to: this.router.currentURL },
|
||||||
|
});
|
||||||
}
|
}
|
||||||
return this.transitionTo(targetRoute);
|
return this.router.transitionTo(targetRoute);
|
||||||
}
|
}
|
||||||
|
|
||||||
return RSVP.resolve();
|
return RSVP.resolve();
|
||||||
|
|||||||
@@ -28,14 +28,15 @@ export const getManagedNamespace = (nsParam, root) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export default Route.extend(ModelBoundaryRoute, ClusterRoute, {
|
export default Route.extend(ModelBoundaryRoute, ClusterRoute, {
|
||||||
namespaceService: service('namespace'),
|
|
||||||
version: service(),
|
|
||||||
permissions: service(),
|
|
||||||
store: service(),
|
|
||||||
auth: service(),
|
auth: service(),
|
||||||
|
currentCluster: service(),
|
||||||
customMessages: service(),
|
customMessages: service(),
|
||||||
featureFlagService: service('featureFlag'),
|
featureFlagService: service('featureFlag'),
|
||||||
currentCluster: service(),
|
namespaceService: service('namespace'),
|
||||||
|
permissions: service(),
|
||||||
|
router: service(),
|
||||||
|
store: service(),
|
||||||
|
version: service(),
|
||||||
modelTypes: computed(function () {
|
modelTypes: computed(function () {
|
||||||
return ['node', 'secret', 'secret-engine'];
|
return ['node', 'secret', 'secret-engine'];
|
||||||
}),
|
}),
|
||||||
@@ -69,12 +70,12 @@ export default Route.extend(ModelBoundaryRoute, ClusterRoute, {
|
|||||||
namespace = storage?.userRootNamespace;
|
namespace = storage?.userRootNamespace;
|
||||||
// only redirect if something other than nothing
|
// only redirect if something other than nothing
|
||||||
if (namespace) {
|
if (namespace) {
|
||||||
this.transitionTo({ queryParams: { namespace } });
|
this.router.transitionTo({ queryParams: { namespace } });
|
||||||
}
|
}
|
||||||
} else if (managedRoot !== null) {
|
} else if (managedRoot !== null) {
|
||||||
const managed = getManagedNamespace(namespace, managedRoot);
|
const managed = getManagedNamespace(namespace, managedRoot);
|
||||||
if (managed !== namespace) {
|
if (managed !== namespace) {
|
||||||
this.transitionTo({ queryParams: { namespace: managed } });
|
this.router.transitionTo({ queryParams: { namespace: managed } });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.namespaceService.setNamespace(namespace);
|
this.namespaceService.setNamespace(namespace);
|
||||||
@@ -126,7 +127,7 @@ export default Route.extend(ModelBoundaryRoute, ClusterRoute, {
|
|||||||
// Check that namespaces is enabled and if not,
|
// Check that namespaces is enabled and if not,
|
||||||
// clear the namespace by transition to this route w/o it
|
// clear the namespace by transition to this route w/o it
|
||||||
if (this.namespaceService.path && !this.version.hasNamespaces) {
|
if (this.namespaceService.path && !this.version.hasNamespaces) {
|
||||||
return this.transitionTo(this.routeName, { queryParams: { namespace: '' } });
|
return this.router.transitionTo(this.routeName, { queryParams: { namespace: '' } });
|
||||||
}
|
}
|
||||||
return this.transitionToTargetRoute(transition);
|
return this.transitionToTargetRoute(transition);
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -9,11 +9,12 @@ import { service } from '@ember/service';
|
|||||||
|
|
||||||
export default Route.extend(UnloadModelRoute, {
|
export default Route.extend(UnloadModelRoute, {
|
||||||
store: service(),
|
store: service(),
|
||||||
|
router: service(),
|
||||||
|
|
||||||
beforeModel() {
|
beforeModel() {
|
||||||
const itemType = this.modelFor('vault.cluster.access.identity');
|
const itemType = this.modelFor('vault.cluster.access.identity');
|
||||||
if (itemType !== 'entity') {
|
if (itemType !== 'entity') {
|
||||||
return this.transitionTo('vault.cluster.access.identity');
|
return this.router.transitionTo('vault.cluster.access.identity');
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import { TABS } from 'vault/helpers/tabs-for-identity-show';
|
|||||||
import { service } from '@ember/service';
|
import { service } from '@ember/service';
|
||||||
|
|
||||||
export default Route.extend({
|
export default Route.extend({
|
||||||
|
router: service(),
|
||||||
store: service(),
|
store: service(),
|
||||||
|
|
||||||
model(params) {
|
model(params) {
|
||||||
@@ -58,7 +59,7 @@ export default Route.extend({
|
|||||||
afterModel(resolvedModel) {
|
afterModel(resolvedModel) {
|
||||||
const { section, model } = resolvedModel;
|
const { section, model } = resolvedModel;
|
||||||
if (model.get('identityType') === 'group' && model.get('type') === 'internal' && section === 'aliases') {
|
if (model.get('identityType') === 'group' && model.get('type') === 'internal' && section === 'aliases') {
|
||||||
return this.transitionTo('vault.cluster.access.identity.show', model.id, 'details');
|
return this.router.transitionTo('vault.cluster.access.identity.show', model.id, 'details');
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@@ -4,16 +4,19 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import Route from '@ember/routing/route';
|
import Route from '@ember/routing/route';
|
||||||
|
import { service } from '@ember/service';
|
||||||
|
|
||||||
|
export default class LeasesIndexRoute extends Route {
|
||||||
|
@service router;
|
||||||
|
|
||||||
export default Route.extend({
|
|
||||||
beforeModel(transition) {
|
beforeModel(transition) {
|
||||||
if (
|
if (
|
||||||
this.modelFor('vault.cluster.access.leases').get('canList') &&
|
this.modelFor('vault.cluster.access.leases').get('canList') &&
|
||||||
transition.targetName === this.routeName
|
transition.targetName === this.routeName
|
||||||
) {
|
) {
|
||||||
return this.replaceWith('vault.cluster.access.leases.list-root');
|
return this.router.replaceWith('vault.cluster.access.leases.list-root');
|
||||||
} else {
|
} else {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
});
|
}
|
||||||
|
|||||||
@@ -12,15 +12,16 @@ import UnloadModelRoute from 'vault/mixins/unload-model-route';
|
|||||||
|
|
||||||
export default Route.extend(UnloadModelRoute, {
|
export default Route.extend(UnloadModelRoute, {
|
||||||
store: service(),
|
store: service(),
|
||||||
|
router: service(),
|
||||||
|
|
||||||
beforeModel() {
|
beforeModel() {
|
||||||
const { lease_id: leaseId } = this.paramsFor(this.routeName);
|
const { lease_id: leaseId } = this.paramsFor(this.routeName);
|
||||||
const parentKey = parentKeyForKey(leaseId);
|
const parentKey = parentKeyForKey(leaseId);
|
||||||
if (keyIsFolder(leaseId)) {
|
if (keyIsFolder(leaseId)) {
|
||||||
if (parentKey) {
|
if (parentKey) {
|
||||||
return this.transitionTo('vault.cluster.access.leases.list', parentKey);
|
return this.router.transitionTo('vault.cluster.access.leases.list', parentKey);
|
||||||
} else {
|
} else {
|
||||||
return this.transitionTo('vault.cluster.access.leases.list-root');
|
return this.router.transitionTo('vault.cluster.access.leases.list-root');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -4,12 +4,16 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import Route from '@ember/routing/route';
|
import Route from '@ember/routing/route';
|
||||||
|
import { service } from '@ember/service';
|
||||||
import { tabsForAuthSection } from 'vault/helpers/tabs-for-auth-section';
|
import { tabsForAuthSection } from 'vault/helpers/tabs-for-auth-section';
|
||||||
export default Route.extend({
|
|
||||||
|
export default class AccessMethodIndexRoute extends Route {
|
||||||
|
@service router;
|
||||||
|
|
||||||
beforeModel() {
|
beforeModel() {
|
||||||
let { methodType, paths } = this.modelFor('vault.cluster.access.method');
|
let { methodType, paths } = this.modelFor('vault.cluster.access.method');
|
||||||
paths = paths ? paths.paths.filter((path) => path.navigation === true) : null;
|
paths = paths ? paths.paths.filter((path) => path.navigation === true) : null;
|
||||||
const activeTab = tabsForAuthSection([methodType, 'authConfig', paths])[0].routeParams;
|
const activeTab = tabsForAuthSection([methodType, 'authConfig', paths])[0].routeParams;
|
||||||
return this.transitionTo(...activeTab);
|
return this.router.transitionTo(...activeTab);
|
||||||
},
|
}
|
||||||
});
|
}
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import Route from '@ember/routing/route';
|
|||||||
import { service } from '@ember/service';
|
import { service } from '@ember/service';
|
||||||
|
|
||||||
export default class MfaConfigureRoute extends Route {
|
export default class MfaConfigureRoute extends Route {
|
||||||
|
@service router;
|
||||||
@service store;
|
@service store;
|
||||||
|
|
||||||
beforeModel() {
|
beforeModel() {
|
||||||
@@ -14,7 +15,7 @@ export default class MfaConfigureRoute extends Route {
|
|||||||
.query('mfa-method', {})
|
.query('mfa-method', {})
|
||||||
.then(() => {
|
.then(() => {
|
||||||
// if response then they should transition to the methods page instead of staying on the configure page.
|
// if response then they should transition to the methods page instead of staying on the configure page.
|
||||||
this.transitionTo('vault.cluster.access.mfa.methods.index');
|
this.router.transitionTo('vault.cluster.access.mfa.methods.index');
|
||||||
})
|
})
|
||||||
.catch(() => {
|
.catch(() => {
|
||||||
// stay on the landing page
|
// stay on the landing page
|
||||||
|
|||||||
@@ -4,9 +4,11 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import Route from '@ember/routing/route';
|
import Route from '@ember/routing/route';
|
||||||
|
import { service } from '@ember/service';
|
||||||
|
|
||||||
export default Route.extend({
|
export default class ClusterIndexRoute extends Route {
|
||||||
|
@service router;
|
||||||
beforeModel() {
|
beforeModel() {
|
||||||
return this.transitionTo('vault.cluster.dashboard');
|
return this.router.transitionTo('vault.cluster.dashboard');
|
||||||
},
|
}
|
||||||
});
|
}
|
||||||
|
|||||||
@@ -42,6 +42,7 @@ export default Route.extend(ModelBoundaryRoute, {
|
|||||||
queryParams.namespace = ns;
|
queryParams.namespace = ns;
|
||||||
}
|
}
|
||||||
if (Ember.testing) {
|
if (Ember.testing) {
|
||||||
|
// TODO: cleanup this replaceWith instance. Using router.replaceWith causes test failures
|
||||||
// Don't redirect on the test
|
// Don't redirect on the test
|
||||||
this.replaceWith('vault.cluster.auth', { queryParams });
|
this.replaceWith('vault.cluster.auth', { queryParams });
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ export default class VaultClusterOidcProviderRoute extends Route {
|
|||||||
if (namespace) {
|
if (namespace) {
|
||||||
queryParams.namespace = namespace;
|
queryParams.namespace = namespace;
|
||||||
}
|
}
|
||||||
return this.transitionTo(AUTH, cluster_name, { queryParams });
|
return this.router.transitionTo(AUTH, cluster_name, { queryParams });
|
||||||
}
|
}
|
||||||
|
|
||||||
_buildUrl(urlString, params) {
|
_buildUrl(urlString, params) {
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ export default Route.extend(ClusterRoute, {
|
|||||||
model(params) {
|
model(params) {
|
||||||
const policyType = params.type;
|
const policyType = params.type;
|
||||||
if (!ALLOWED_TYPES.includes(policyType)) {
|
if (!ALLOWED_TYPES.includes(policyType)) {
|
||||||
return this.transitionTo(this.routeName, ALLOWED_TYPES[0]);
|
return this.router.transitionTo(this.routeName, ALLOWED_TYPES[0]);
|
||||||
}
|
}
|
||||||
return {};
|
return {};
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -8,13 +8,14 @@ import Route from '@ember/routing/route';
|
|||||||
import UnsavedModelRoute from 'vault/mixins/unsaved-model-route';
|
import UnsavedModelRoute from 'vault/mixins/unsaved-model-route';
|
||||||
|
|
||||||
export default Route.extend(UnsavedModelRoute, {
|
export default Route.extend(UnsavedModelRoute, {
|
||||||
|
router: service(),
|
||||||
store: service(),
|
store: service(),
|
||||||
version: service(),
|
version: service(),
|
||||||
|
|
||||||
model() {
|
model() {
|
||||||
const policyType = this.policyType();
|
const policyType = this.policyType();
|
||||||
if (!this.version.hasSentinel && policyType !== 'acl') {
|
if (!this.version.hasSentinel && policyType !== 'acl') {
|
||||||
return this.transitionTo('vault.cluster.policies', policyType);
|
return this.router.transitionTo('vault.cluster.policies', policyType);
|
||||||
}
|
}
|
||||||
return this.store.createRecord(`policy/${policyType}`, {});
|
return this.store.createRecord(`policy/${policyType}`, {});
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -19,10 +19,10 @@ export default Route.extend(ClusterRoute, {
|
|||||||
model(params) {
|
model(params) {
|
||||||
const policyType = params.type;
|
const policyType = params.type;
|
||||||
if (!ALLOWED_TYPES.includes(policyType)) {
|
if (!ALLOWED_TYPES.includes(policyType)) {
|
||||||
return this.transitionTo('vault.cluster.policies', ALLOWED_TYPES[0]);
|
return this.router.transitionTo('vault.cluster.policies', ALLOWED_TYPES[0]);
|
||||||
}
|
}
|
||||||
if (!this.version.hasSentinel && policyType !== 'acl') {
|
if (!this.version.hasSentinel && policyType !== 'acl') {
|
||||||
return this.transitionTo('vault.cluster.policies', policyType);
|
return this.router.transitionTo('vault.cluster.policies', policyType);
|
||||||
}
|
}
|
||||||
return {};
|
return {};
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -4,9 +4,12 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import Route from '@ember/routing/route';
|
import Route from '@ember/routing/route';
|
||||||
|
import { service } from '@ember/service';
|
||||||
|
|
||||||
|
export default class PolicyIndexRouter extends Route {
|
||||||
|
@service router;
|
||||||
|
|
||||||
export default Route.extend({
|
|
||||||
beforeModel() {
|
beforeModel() {
|
||||||
return this.transitionTo('vault.cluster.policies', 'acl');
|
return this.router.transitionTo('vault.cluster.policies', 'acl');
|
||||||
},
|
}
|
||||||
});
|
}
|
||||||
|
|||||||
@@ -9,13 +9,14 @@ import UnloadModelRoute from 'vault/mixins/unload-model-route';
|
|||||||
import { service } from '@ember/service';
|
import { service } from '@ember/service';
|
||||||
|
|
||||||
export default Route.extend(UnloadModelRoute, {
|
export default Route.extend(UnloadModelRoute, {
|
||||||
|
router: service(),
|
||||||
store: service(),
|
store: service(),
|
||||||
|
|
||||||
beforeModel() {
|
beforeModel() {
|
||||||
const params = this.paramsFor(this.routeName);
|
const params = this.paramsFor(this.routeName);
|
||||||
const policyType = this.policyType();
|
const policyType = this.policyType();
|
||||||
if (policyType === 'acl' && params.policy_name === 'root') {
|
if (policyType === 'acl' && params.policy_name === 'root') {
|
||||||
return this.transitionTo('vault.cluster.policies', 'acl');
|
return this.router.transitionTo('vault.cluster.policies', 'acl');
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@@ -6,9 +6,10 @@
|
|||||||
import { service } from '@ember/service';
|
import { service } from '@ember/service';
|
||||||
import Route from '@ember/routing/route';
|
import Route from '@ember/routing/route';
|
||||||
export default Route.extend({
|
export default Route.extend({
|
||||||
store: service(),
|
|
||||||
flashMessages: service(),
|
flashMessages: service(),
|
||||||
|
router: service(),
|
||||||
secretMountPath: service(),
|
secretMountPath: service(),
|
||||||
|
store: service(),
|
||||||
oldModel: null,
|
oldModel: null,
|
||||||
|
|
||||||
model(params) {
|
model(params) {
|
||||||
@@ -28,7 +29,7 @@ export default Route.extend({
|
|||||||
afterModel(model, transition) {
|
afterModel(model, transition) {
|
||||||
const path = model && model.get('path');
|
const path = model && model.get('path');
|
||||||
if (transition.targetName === this.routeName) {
|
if (transition.targetName === this.routeName) {
|
||||||
return this.replaceWith('vault.cluster.secrets.backend.list-root', path);
|
return this.router.replaceWith('vault.cluster.secrets.backend.list-root', path);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -21,9 +21,9 @@ export default EditBase.extend({
|
|||||||
const { backend } = this.paramsFor('vault.cluster.secrets.backend');
|
const { backend } = this.paramsFor('vault.cluster.secrets.backend');
|
||||||
if (this.backendType(backend) !== 'transit') {
|
if (this.backendType(backend) !== 'transit') {
|
||||||
if (parentKey) {
|
if (parentKey) {
|
||||||
return this.transitionTo('vault.cluster.secrets.backend.show', parentKey);
|
return this.router.transitionTo('vault.cluster.secrets.backend.show', parentKey);
|
||||||
} else {
|
} else {
|
||||||
return this.transitionTo('vault.cluster.secrets.backend.show-root');
|
return this.router.transitionTo('vault.cluster.secrets.backend.show-root');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -4,13 +4,16 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import Route from '@ember/routing/route';
|
import Route from '@ember/routing/route';
|
||||||
|
import { service } from '@ember/service';
|
||||||
|
|
||||||
|
export default class SecretsBackendCreateRoute extends Route {
|
||||||
|
@service router;
|
||||||
|
|
||||||
export default Route.extend({
|
|
||||||
beforeModel() {
|
beforeModel() {
|
||||||
const { secret, initialKey } = this.paramsFor(this.routeName);
|
const { secret, initialKey } = this.paramsFor(this.routeName);
|
||||||
const qp = initialKey || secret;
|
const qp = initialKey || secret;
|
||||||
return this.transitionTo('vault.cluster.secrets.backend.create-root', {
|
return this.router.transitionTo('vault.cluster.secrets.backend.create-root', {
|
||||||
queryParams: { initialKey: qp },
|
queryParams: { initialKey: qp },
|
||||||
});
|
});
|
||||||
},
|
}
|
||||||
});
|
}
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ const SUPPORTED_DYNAMIC_BACKENDS = ['database', 'ssh', 'aws'];
|
|||||||
export default Route.extend({
|
export default Route.extend({
|
||||||
templateName: 'vault/cluster/secrets/backend/credentials',
|
templateName: 'vault/cluster/secrets/backend/credentials',
|
||||||
pathHelp: service('path-help'),
|
pathHelp: service('path-help'),
|
||||||
|
router: service(),
|
||||||
store: service(),
|
store: service(),
|
||||||
|
|
||||||
backendModel() {
|
backendModel() {
|
||||||
@@ -65,7 +66,7 @@ export default Route.extend({
|
|||||||
dbCred = await this.getDatabaseCredential(backendPath, role, roleType);
|
dbCred = await this.getDatabaseCredential(backendPath, role, roleType);
|
||||||
}
|
}
|
||||||
if (!SUPPORTED_DYNAMIC_BACKENDS.includes(backendModel.get('type'))) {
|
if (!SUPPORTED_DYNAMIC_BACKENDS.includes(backendModel.get('type'))) {
|
||||||
return this.transitionTo('vault.cluster.secrets.backend.list-root', backendPath);
|
return this.router.transitionTo('vault.cluster.secrets.backend.list-root', backendPath);
|
||||||
}
|
}
|
||||||
return resolve({
|
return resolve({
|
||||||
backendPath,
|
backendPath,
|
||||||
|
|||||||
@@ -4,9 +4,12 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import Route from '@ember/routing/route';
|
import Route from '@ember/routing/route';
|
||||||
|
import { service } from '@ember/service';
|
||||||
|
|
||||||
|
export default class BackendIndexRoute extends Route {
|
||||||
|
@service router;
|
||||||
|
|
||||||
export default Route.extend({
|
|
||||||
beforeModel() {
|
beforeModel() {
|
||||||
return this.replaceWith('vault.cluster.secrets.backend.list-root');
|
return this.router.replaceWith('vault.cluster.secrets.backend.list-root');
|
||||||
},
|
}
|
||||||
});
|
}
|
||||||
|
|||||||
@@ -83,20 +83,24 @@ export default Route.extend({
|
|||||||
if (secretEngine.type === 'kv' && secretEngine.version === 2) {
|
if (secretEngine.type === 'kv' && secretEngine.version === 2) {
|
||||||
// if no secret param redirect to the create route
|
// if no secret param redirect to the create route
|
||||||
// if secret param they are either viewing or editing secret so navigate to the details route
|
// if secret param they are either viewing or editing secret so navigate to the details route
|
||||||
return !secret
|
if (!secret) {
|
||||||
? this.router.transitionTo('vault.cluster.secrets.backend.kv.create', secretEngine.id)
|
this.router.transitionTo('vault.cluster.secrets.backend.kv.create', secretEngine.id);
|
||||||
: this.router.transitionTo(
|
} else {
|
||||||
'vault.cluster.secrets.backend.kv.secret.details',
|
this.router.transitionTo(
|
||||||
secretEngine.id,
|
'vault.cluster.secrets.backend.kv.secret.details',
|
||||||
secret
|
secretEngine.id,
|
||||||
);
|
secret
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
if (mode === 'edit' && keyIsFolder(secret)) {
|
if (mode === 'edit' && keyIsFolder(secret)) {
|
||||||
if (parentKey) {
|
if (parentKey) {
|
||||||
return this.router.transitionTo('vault.cluster.secrets.backend.list', encodePath(parentKey));
|
this.router.transitionTo('vault.cluster.secrets.backend.list', encodePath(parentKey));
|
||||||
} else {
|
} else {
|
||||||
return this.router.transitionTo('vault.cluster.secrets.backend.list-root');
|
this.router.transitionTo('vault.cluster.secrets.backend.list-root');
|
||||||
}
|
}
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import UnloadModel from 'vault/mixins/unload-model-route';
|
|||||||
import { service } from '@ember/service';
|
import { service } from '@ember/service';
|
||||||
|
|
||||||
export default Route.extend(UnloadModel, {
|
export default Route.extend(UnloadModel, {
|
||||||
|
router: service(),
|
||||||
store: service(),
|
store: service(),
|
||||||
templateName: 'vault/cluster/secrets/backend/sign',
|
templateName: 'vault/cluster/secrets/backend/sign',
|
||||||
|
|
||||||
@@ -31,11 +32,11 @@ export default Route.extend(UnloadModel, {
|
|||||||
const backend = backendModel.get('id');
|
const backend = backendModel.get('id');
|
||||||
|
|
||||||
if (backendModel.get('type') !== 'ssh') {
|
if (backendModel.get('type') !== 'ssh') {
|
||||||
return this.transitionTo('vault.cluster.secrets.backend.list-root', backend);
|
return this.router.transitionTo('vault.cluster.secrets.backend.list-root', backend);
|
||||||
}
|
}
|
||||||
return this.store.queryRecord('capabilities', this.pathQuery(role, backend)).then((capabilities) => {
|
return this.store.queryRecord('capabilities', this.pathQuery(role, backend)).then((capabilities) => {
|
||||||
if (!capabilities.get('canUpdate')) {
|
if (!capabilities.get('canUpdate')) {
|
||||||
return this.transitionTo('vault.cluster.secrets.backend.list-root', backend);
|
return this.router.transitionTo('vault.cluster.secrets.backend.list-root', backend);
|
||||||
}
|
}
|
||||||
return this.store.createRecord('ssh-sign', {
|
return this.store.createRecord('ssh-sign', {
|
||||||
role: {
|
role: {
|
||||||
|
|||||||
@@ -4,12 +4,15 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import Route from '@ember/routing/route';
|
import Route from '@ember/routing/route';
|
||||||
|
import { service } from '@ember/service';
|
||||||
import { tabsForAuthSection } from 'vault/helpers/tabs-for-auth-section';
|
import { tabsForAuthSection } from 'vault/helpers/tabs-for-auth-section';
|
||||||
|
|
||||||
export default Route.extend({
|
export default class SettingsAuthConfigureRoute extends Route {
|
||||||
|
@service router;
|
||||||
|
|
||||||
beforeModel() {
|
beforeModel() {
|
||||||
const model = this.modelFor('vault.cluster.settings.auth.configure');
|
const model = this.modelFor('vault.cluster.settings.auth.configure');
|
||||||
const section = tabsForAuthSection([model]).firstObject.routeParams.lastObject;
|
const section = tabsForAuthSection([model]).firstObject.routeParams.lastObject;
|
||||||
return this.transitionTo('vault.cluster.settings.auth.configure.section', section);
|
return this.router.transitionTo('vault.cluster.settings.auth.configure.section', section);
|
||||||
},
|
}
|
||||||
});
|
}
|
||||||
|
|||||||
@@ -4,9 +4,12 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import Route from '@ember/routing/route';
|
import Route from '@ember/routing/route';
|
||||||
|
import { service } from '@ember/service';
|
||||||
|
|
||||||
|
export default class SettingsAuthIndexRouter extends Route {
|
||||||
|
@service router;
|
||||||
|
|
||||||
export default Route.extend({
|
|
||||||
beforeModel() {
|
beforeModel() {
|
||||||
return this.replaceWith('vault.cluster.settings.auth.enable');
|
return this.router.replaceWith('vault.cluster.settings.auth.enable');
|
||||||
},
|
}
|
||||||
});
|
}
|
||||||
|
|||||||
@@ -4,12 +4,15 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import Route from '@ember/routing/route';
|
import Route from '@ember/routing/route';
|
||||||
|
import { service } from '@ember/service';
|
||||||
|
|
||||||
export default Route.extend({
|
export default class SettingsIndexRouter extends Route {
|
||||||
beforeModel: function (transition) {
|
@service router;
|
||||||
|
|
||||||
|
beforeModel(transition) {
|
||||||
if (transition.targetName === this.routeName) {
|
if (transition.targetName === this.routeName) {
|
||||||
transition.abort();
|
transition.abort();
|
||||||
return this.replaceWith('vault.cluster.settings.mount-secret-backend');
|
return this.router.replaceWith('vault.cluster.settings.mount-secret-backend');
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
});
|
}
|
||||||
|
|||||||
@@ -7,14 +7,16 @@ import { service } from '@ember/service';
|
|||||||
import Route from '@ember/routing/route';
|
import Route from '@ember/routing/route';
|
||||||
import { toolsActions } from 'vault/helpers/tools-actions';
|
import { toolsActions } from 'vault/helpers/tools-actions';
|
||||||
|
|
||||||
export default Route.extend({
|
export default class ToolsIndexRouter extends Route {
|
||||||
currentCluster: service(),
|
@service currentCluster;
|
||||||
|
@service router;
|
||||||
|
|
||||||
beforeModel(transition) {
|
beforeModel(transition) {
|
||||||
const currentCluster = this.currentCluster.cluster.name;
|
const currentCluster = this.currentCluster.cluster.name;
|
||||||
const supportedActions = toolsActions();
|
const supportedActions = toolsActions();
|
||||||
if (transition.targetName === this.routeName) {
|
if (transition.targetName === this.routeName) {
|
||||||
transition.abort();
|
transition.abort();
|
||||||
return this.replaceWith('vault.cluster.tools.tool', currentCluster, supportedActions[0]);
|
return this.router.replaceWith('vault.cluster.tools.tool', currentCluster, supportedActions[0]);
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
});
|
}
|
||||||
|
|||||||
@@ -29,7 +29,12 @@
|
|||||||
/>
|
/>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{#if @item.canDelete}}
|
{{#if @item.canDelete}}
|
||||||
<dd.Interactive @text="Remove" @color="critical" {{on "click" (fn (mut this.showConfirmModal) true)}} />
|
<dd.Interactive
|
||||||
|
@text="Remove"
|
||||||
|
@color="critical"
|
||||||
|
{{on "click" (fn (mut this.showConfirmModal) true)}}
|
||||||
|
data-test-popup-menu="delete"
|
||||||
|
/>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</Hds::Dropdown>
|
</Hds::Dropdown>
|
||||||
|
|||||||
@@ -14,4 +14,4 @@
|
|||||||
</p.levelLeft>
|
</p.levelLeft>
|
||||||
</PageHeader>
|
</PageHeader>
|
||||||
|
|
||||||
<Identity::EditForm @model={{this.model}} @onSave={{perform this.navAfterSave}} />
|
<Identity::EditForm @model={{this.model}} @onSave={{action "navAfterSave"}} />
|
||||||
@@ -12,4 +12,4 @@
|
|||||||
</p.levelLeft>
|
</p.levelLeft>
|
||||||
</PageHeader>
|
</PageHeader>
|
||||||
|
|
||||||
<Identity::EditForm @mode="edit" @model={{this.model}} @onSave={{perform this.navAfterSave}} />
|
<Identity::EditForm @mode="edit" @model={{this.model}} @onSave={{action "navAfterSave"}} />
|
||||||
@@ -11,4 +11,4 @@
|
|||||||
</h1>
|
</h1>
|
||||||
</p.levelLeft>
|
</p.levelLeft>
|
||||||
</PageHeader>
|
</PageHeader>
|
||||||
<Identity::EditForm @model={{this.model}} @onSave={{perform this.navAfterSave}} />
|
<Identity::EditForm @model={{this.model}} @onSave={{action "navAfterSave"}} />
|
||||||
@@ -12,4 +12,4 @@
|
|||||||
</p.levelLeft>
|
</p.levelLeft>
|
||||||
</PageHeader>
|
</PageHeader>
|
||||||
|
|
||||||
<Identity::EditForm @mode="edit" @model={{this.model}} @onSave={{perform this.navAfterSave}} />
|
<Identity::EditForm @mode="edit" @model={{this.model}} @onSave={{action "navAfterSave"}} />
|
||||||
@@ -11,4 +11,4 @@
|
|||||||
</p.levelLeft>
|
</p.levelLeft>
|
||||||
</PageHeader>
|
</PageHeader>
|
||||||
|
|
||||||
<Identity::EditForm @mode="merge" @model={{this.model}} @onSave={{perform this.navAfterSave}} />
|
<Identity::EditForm @mode="merge" @model={{this.model}} @onSave={{action "navAfterSave"}} />
|
||||||
@@ -3,12 +3,11 @@
|
|||||||
* SPDX-License-Identifier: BUSL-1.1
|
* SPDX-License-Identifier: BUSL-1.1
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { currentRouteName, settled } from '@ember/test-helpers';
|
import { currentRouteName, find, settled } from '@ember/test-helpers';
|
||||||
import page from 'vault/tests/pages/access/identity/aliases/add';
|
import page from 'vault/tests/pages/access/identity/aliases/add';
|
||||||
import aliasIndexPage from 'vault/tests/pages/access/identity/aliases/index';
|
import aliasIndexPage from 'vault/tests/pages/access/identity/aliases/index';
|
||||||
import aliasShowPage from 'vault/tests/pages/access/identity/aliases/show';
|
import aliasShowPage from 'vault/tests/pages/access/identity/aliases/show';
|
||||||
import createItemPage from 'vault/tests/pages/access/identity/create';
|
import createItemPage from 'vault/tests/pages/access/identity/create';
|
||||||
import showItemPage from 'vault/tests/pages/access/identity/show';
|
|
||||||
|
|
||||||
export const testAliasCRUD = async function (name, itemType, assert) {
|
export const testAliasCRUD = async function (name, itemType, assert) {
|
||||||
if (itemType === 'groups') {
|
if (itemType === 'groups') {
|
||||||
@@ -18,8 +17,8 @@ export const testAliasCRUD = async function (name, itemType, assert) {
|
|||||||
await createItemPage.createItem(itemType);
|
await createItemPage.createItem(itemType);
|
||||||
await settled();
|
await settled();
|
||||||
}
|
}
|
||||||
let idRow = showItemPage.rows.filterBy('hasLabel').filterBy('rowLabel', 'ID')[0];
|
|
||||||
const itemID = idRow.rowValue;
|
const itemID = find('[data-test-row-value="ID"]').textContent.trim();
|
||||||
await page.visit({ item_type: itemType, id: itemID });
|
await page.visit({ item_type: itemType, id: itemID });
|
||||||
await settled();
|
await settled();
|
||||||
await page.editForm.name(name).submit();
|
await page.editForm.name(name).submit();
|
||||||
@@ -29,8 +28,7 @@ export const testAliasCRUD = async function (name, itemType, assert) {
|
|||||||
`${itemType}: shows a flash message`
|
`${itemType}: shows a flash message`
|
||||||
);
|
);
|
||||||
|
|
||||||
idRow = aliasShowPage.rows.filterBy('hasLabel').filterBy('rowLabel', 'ID')[0];
|
const aliasID = find('[data-test-row-value="ID"]').textContent.trim();
|
||||||
const aliasID = idRow.rowValue;
|
|
||||||
assert.strictEqual(
|
assert.strictEqual(
|
||||||
currentRouteName(),
|
currentRouteName(),
|
||||||
'vault.cluster.access.identity.aliases.show',
|
'vault.cluster.access.identity.aliases.show',
|
||||||
@@ -73,14 +71,13 @@ export const testAliasDeleteFromForm = async function (name, itemType, assert) {
|
|||||||
await createItemPage.createItem(itemType);
|
await createItemPage.createItem(itemType);
|
||||||
await settled();
|
await settled();
|
||||||
}
|
}
|
||||||
let idRow = showItemPage.rows.filterBy('hasLabel').filterBy('rowLabel', 'ID')[0];
|
|
||||||
const itemID = idRow.rowValue;
|
const itemID = find('[data-test-row-value="ID"]').textContent.trim();
|
||||||
await page.visit({ item_type: itemType, id: itemID });
|
await page.visit({ item_type: itemType, id: itemID });
|
||||||
await settled();
|
await settled();
|
||||||
await page.editForm.name(name).submit();
|
await page.editForm.name(name).submit();
|
||||||
await settled();
|
await settled();
|
||||||
idRow = aliasShowPage.rows.filterBy('hasLabel').filterBy('rowLabel', 'ID')[0];
|
const aliasID = find('[data-test-row-value="ID"]').textContent.trim();
|
||||||
const aliasID = idRow.rowValue;
|
|
||||||
await aliasShowPage.edit();
|
await aliasShowPage.edit();
|
||||||
await settled();
|
await settled();
|
||||||
assert.strictEqual(
|
assert.strictEqual(
|
||||||
|
|||||||
@@ -3,14 +3,13 @@
|
|||||||
* SPDX-License-Identifier: BUSL-1.1
|
* SPDX-License-Identifier: BUSL-1.1
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { module, skip, test } from 'qunit';
|
import { module, test } from 'qunit';
|
||||||
import { settled } from '@ember/test-helpers';
|
import { settled } from '@ember/test-helpers';
|
||||||
import { setupApplicationTest } from 'ember-qunit';
|
import { setupApplicationTest } from 'ember-qunit';
|
||||||
import { testAliasCRUD, testAliasDeleteFromForm } from '../../_shared-alias-tests';
|
import { testAliasCRUD, testAliasDeleteFromForm } from '../../_shared-alias-tests';
|
||||||
import authPage from 'vault/tests/pages/auth';
|
import authPage from 'vault/tests/pages/auth';
|
||||||
|
|
||||||
module('Acceptance | /access/identity/entities/aliases/add', function (hooks) {
|
module('Acceptance | /access/identity/entities/aliases/add', function (hooks) {
|
||||||
// TODO come back and figure out why this is failing. Seems to be a race condition
|
|
||||||
setupApplicationTest(hooks);
|
setupApplicationTest(hooks);
|
||||||
|
|
||||||
hooks.beforeEach(async function () {
|
hooks.beforeEach(async function () {
|
||||||
@@ -18,7 +17,7 @@ module('Acceptance | /access/identity/entities/aliases/add', function (hooks) {
|
|||||||
return;
|
return;
|
||||||
});
|
});
|
||||||
|
|
||||||
skip('it allows create, list, delete of an entity alias', async function (assert) {
|
test('it allows create, list, delete of an entity alias', async function (assert) {
|
||||||
assert.expect(6);
|
assert.expect(6);
|
||||||
const name = `alias-${Date.now()}`;
|
const name = `alias-${Date.now()}`;
|
||||||
await testAliasCRUD(name, 'entities', assert);
|
await testAliasCRUD(name, 'entities', assert);
|
||||||
|
|||||||
@@ -183,6 +183,8 @@ module('Acceptance | oidc provider', function (hooks) {
|
|||||||
test('OIDC Provider redirects to auth if current token and prompt = login', async function (assert) {
|
test('OIDC Provider redirects to auth if current token and prompt = login', async function (assert) {
|
||||||
const { providerName, callback, clientId, authMethodPath } = this.oidcSetupInformation;
|
const { providerName, callback, clientId, authMethodPath } = this.oidcSetupInformation;
|
||||||
await settled();
|
await settled();
|
||||||
|
await visit('/vault/dashboard');
|
||||||
|
assert.strictEqual(currentURL(), '/vault/dashboard', 'User is logged in before oidc login attempt');
|
||||||
const url = getAuthzUrl(providerName, callback, clientId, { prompt: 'login' });
|
const url = getAuthzUrl(providerName, callback, clientId, { prompt: 'login' });
|
||||||
await visit(url);
|
await visit(url);
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,12 @@ import sinon from 'sinon';
|
|||||||
module('Unit | Mixin | cluster route', function () {
|
module('Unit | Mixin | cluster route', function () {
|
||||||
function createClusterRoute(
|
function createClusterRoute(
|
||||||
clusterModel = {},
|
clusterModel = {},
|
||||||
methods = { router: {}, hasKeyData: () => false, authToken: () => null, transitionTo: () => {} }
|
methods = {
|
||||||
|
router: { transitionTo: () => {} },
|
||||||
|
hasKeyData: () => false,
|
||||||
|
authToken: () => null,
|
||||||
|
transitionTo: () => {},
|
||||||
|
}
|
||||||
) {
|
) {
|
||||||
const ClusterRouteObject = EmberObject.extend(
|
const ClusterRouteObject = EmberObject.extend(
|
||||||
ClusterRouteMixin,
|
ClusterRouteMixin,
|
||||||
@@ -132,7 +137,7 @@ module('Unit | Mixin | cluster route', function () {
|
|||||||
const redirectRouteURL = '/vault/secrets/secret/create';
|
const redirectRouteURL = '/vault/secrets/secret/create';
|
||||||
const subject = createClusterRoute({ needsInit: false, sealed: false });
|
const subject = createClusterRoute({ needsInit: false, sealed: false });
|
||||||
subject.router.currentURL = redirectRouteURL;
|
subject.router.currentURL = redirectRouteURL;
|
||||||
const spy = sinon.spy(subject, 'transitionTo');
|
const spy = sinon.spy(subject.router, 'transitionTo');
|
||||||
subject.transitionToTargetRoute();
|
subject.transitionToTargetRoute();
|
||||||
assert.ok(
|
assert.ok(
|
||||||
spy.calledWithExactly(AUTH, { queryParams: { redirect_to: redirectRouteURL } }),
|
spy.calledWithExactly(AUTH, { queryParams: { redirect_to: redirectRouteURL } }),
|
||||||
@@ -153,7 +158,7 @@ module('Unit | Mixin | cluster route', function () {
|
|||||||
|
|
||||||
test('#transitionToTargetRoute with auth target, coming from cluster route', function (assert) {
|
test('#transitionToTargetRoute with auth target, coming from cluster route', function (assert) {
|
||||||
const subject = createClusterRoute({ needsInit: false, sealed: false });
|
const subject = createClusterRoute({ needsInit: false, sealed: false });
|
||||||
const spy = sinon.spy(subject, 'transitionTo');
|
const spy = sinon.spy(subject.router, 'transitionTo');
|
||||||
subject.transitionToTargetRoute({ targetName: CLUSTER_INDEX });
|
subject.transitionToTargetRoute({ targetName: CLUSTER_INDEX });
|
||||||
assert.ok(spy.calledWithExactly(AUTH), 'calls transitionTo without redirect_to');
|
assert.ok(spy.calledWithExactly(AUTH), 'calls transitionTo without redirect_to');
|
||||||
spy.restore();
|
spy.restore();
|
||||||
|
|||||||
Reference in New Issue
Block a user