Skip to content

Commit f19e43f

Browse files
authored
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
1 parent ed3b325 commit f19e43f

File tree

4 files changed

+28
-2
lines changed

4 files changed

+28
-2
lines changed

changelog/27019.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:bug
2+
ui: Fix link to v2 generic secrets engine from secrets list page.
3+
```

ui/app/models/secret-engine.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,10 @@ export default class SecretEngineModel extends Model {
148148
const { engineRoute } = allEngines().find((engine) => engine.type === this.engineType);
149149
return `vault.cluster.secrets.backend.${engineRoute}`;
150150
}
151+
if (this.isV2KV) {
152+
// if it's KV v2 but not registered as an addon, it's type generic
153+
return 'vault.cluster.secrets.backend.kv.list';
154+
}
151155
return `vault.cluster.secrets.backend.list-root`;
152156
}
153157

ui/app/routes/vault/cluster/secrets/backend/list.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,9 @@ export default Route.extend({
9696
return this.router.transitionTo('vault.cluster.secrets.backend.kv.list-directory', backend, secret);
9797
}
9898
return this.router.transitionTo(`vault.cluster.secrets.backend.${engineRoute}`, backend);
99+
} else if (secretEngine.isV2KV) {
100+
// if it's KV v2 but not registered as an addon, it's type generic
101+
return this.router.transitionTo('vault.cluster.secrets.backend.kv.list', backend);
99102
}
100103
const modelType = this.getModelType(backend, tab);
101104
return this.pathHelp.getNewModel(modelType, backend).then(() => {

ui/tests/acceptance/secrets/backend/generic/secret-test.js

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
* SPDX-License-Identifier: BUSL-1.1
44
*/
55

6-
import { currentRouteName, visit } from '@ember/test-helpers';
6+
import { click, currentRouteName, settled, visit } from '@ember/test-helpers';
7+
import { selectChoose } from 'ember-power-select/test-support';
78
import { module, test } from 'qunit';
89
import { setupApplicationTest } from 'ember-qunit';
910
import { v4 as uuidv4 } from 'uuid';
@@ -63,7 +64,15 @@ module('Acceptance | secrets/generic/create', function (hooks) {
6364
// upgrade to version 2 generic mount
6465
`write sys/mounts/${path}/tune options=version=2`,
6566
]);
66-
await visit(`/vault/secrets/${path}/kv/list`);
67+
await visit('/vault/secrets');
68+
await selectChoose('[data-test-component="search-select"]#filter-by-engine-name', path);
69+
await settled();
70+
await click(`[data-test-secrets-backend-link="${path}"]`);
71+
assert.strictEqual(
72+
currentRouteName(),
73+
'vault.cluster.secrets.backend.kv.list',
74+
'navigates to the KV engine list page'
75+
);
6776

6877
assert
6978
.dom(PAGE.list.item('foo'))
@@ -77,6 +86,13 @@ module('Acceptance | secrets/generic/create', function (hooks) {
7786
});
7887
assert.dom(PAGE.list.item()).exists({ count: 2 }, 'lists only the two secrets');
7988

89+
await visit(`/vault/secrets/${path}/list`);
90+
assert.strictEqual(
91+
currentRouteName(),
92+
'vault.cluster.secrets.backend.kv.list',
93+
'redirects to the KV engine list page from generic list'
94+
);
95+
8096
// Clean up
8197
await runCmd(deleteEngineCmd(path));
8298
});

0 commit comments

Comments
 (0)