UI: Fix generic v2 secret engine links (#27019)

* Update generic upgrade test to reflect user behavior

* Fix backend link for generic v2

* Add redirect for generic v2

* more test coverage

* Add changelog
This commit is contained in:
Chelsea Shaw 2024-05-14 11:41:07 -05:00 committed by GitHub
parent ed3b3250c2
commit f19e43f84d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 28 additions and 2 deletions

3
changelog/27019.txt Normal file
View file

@ -0,0 +1,3 @@
```release-note:bug
ui: Fix link to v2 generic secrets engine from secrets list page.
```

View file

@ -148,6 +148,10 @@ export default class SecretEngineModel extends Model {
const { engineRoute } = allEngines().find((engine) => engine.type === this.engineType);
return `vault.cluster.secrets.backend.${engineRoute}`;
}
if (this.isV2KV) {
// if it's KV v2 but not registered as an addon, it's type generic
return 'vault.cluster.secrets.backend.kv.list';
}
return `vault.cluster.secrets.backend.list-root`;
}

View file

@ -96,6 +96,9 @@ export default Route.extend({
return this.router.transitionTo('vault.cluster.secrets.backend.kv.list-directory', backend, secret);
}
return this.router.transitionTo(`vault.cluster.secrets.backend.${engineRoute}`, backend);
} else if (secretEngine.isV2KV) {
// if it's KV v2 but not registered as an addon, it's type generic
return this.router.transitionTo('vault.cluster.secrets.backend.kv.list', backend);
}
const modelType = this.getModelType(backend, tab);
return this.pathHelp.getNewModel(modelType, backend).then(() => {

View file

@ -3,7 +3,8 @@
* SPDX-License-Identifier: BUSL-1.1
*/
import { currentRouteName, visit } from '@ember/test-helpers';
import { click, currentRouteName, settled, visit } from '@ember/test-helpers';
import { selectChoose } from 'ember-power-select/test-support';
import { module, test } from 'qunit';
import { setupApplicationTest } from 'ember-qunit';
import { v4 as uuidv4 } from 'uuid';
@ -63,7 +64,15 @@ module('Acceptance | secrets/generic/create', function (hooks) {
// upgrade to version 2 generic mount
`write sys/mounts/${path}/tune options=version=2`,
]);
await visit(`/vault/secrets/${path}/kv/list`);
await visit('/vault/secrets');
await selectChoose('[data-test-component="search-select"]#filter-by-engine-name', path);
await settled();
await click(`[data-test-secrets-backend-link="${path}"]`);
assert.strictEqual(
currentRouteName(),
'vault.cluster.secrets.backend.kv.list',
'navigates to the KV engine list page'
);
assert
.dom(PAGE.list.item('foo'))
@ -77,6 +86,13 @@ module('Acceptance | secrets/generic/create', function (hooks) {
});
assert.dom(PAGE.list.item()).exists({ count: 2 }, 'lists only the two secrets');
await visit(`/vault/secrets/${path}/list`);
assert.strictEqual(
currentRouteName(),
'vault.cluster.secrets.backend.kv.list',
'redirects to the KV engine list page from generic list'
);
// Clean up
await runCmd(deleteEngineCmd(path));
});