Skip to content

Commit c240099

Browse files
committed
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 aea1ea6 commit c240099

File tree

4 files changed

+32
-2
lines changed

4 files changed

+32
-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().findBy('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
@@ -82,6 +82,9 @@ export default Route.extend({
8282
return this.router.transitionTo('vault.cluster.secrets.backend.kv.list-directory', backend, secret);
8383
}
8484
return this.router.transitionTo(`vault.cluster.secrets.backend.${engineRoute}`, backend);
85+
} else if (secretEngine.isV2KV) {
86+
// if it's KV v2 but not registered as an addon, it's type generic
87+
return this.router.transitionTo('vault.cluster.secrets.backend.kv.list', backend);
8588
}
8689
const modelType = this.getModelType(backend, tab);
8790
return this.pathHelp.getNewModel(modelType, backend).then(() => {

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

Lines changed: 22 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';
@@ -19,6 +20,7 @@ import { PAGE } from 'vault/tests/helpers/kv/kv-selectors';
1920
import { create } from 'ember-cli-page-object';
2021

2122
import apiStub from 'vault/tests/helpers/noop-all-api-requests';
23+
import { deleteEngineCmd, runCmd } from 'vault/tests/helpers/commands';
2224

2325
const cli = create(consolePanel);
2426

@@ -65,7 +67,15 @@ module('Acceptance | secrets/generic/create', function (hooks) {
6567
// upgrade to version 2 generic mount
6668
`write sys/mounts/${path}/tune options=version=2`,
6769
]);
68-
await visit(`/vault/secrets/${path}/kv/list`);
70+
await visit('/vault/secrets');
71+
await selectChoose('[data-test-component="search-select"]#filter-by-engine-name', path);
72+
await settled();
73+
await click(`[data-test-secrets-backend-link="${path}"]`);
74+
assert.strictEqual(
75+
currentRouteName(),
76+
'vault.cluster.secrets.backend.kv.list',
77+
'navigates to the KV engine list page'
78+
);
6979

7080
assert
7181
.dom(PAGE.list.item('foo'))
@@ -78,5 +88,15 @@ module('Acceptance | secrets/generic/create', function (hooks) {
7888
assert.dom(PAGE.list.item(secret.path)).exists('lists both records');
7989
});
8090
assert.dom(PAGE.list.item()).exists({ count: 2 }, 'lists only the two secrets');
91+
92+
await visit(`/vault/secrets/${path}/list`);
93+
assert.strictEqual(
94+
currentRouteName(),
95+
'vault.cluster.secrets.backend.kv.list',
96+
'redirects to the KV engine list page from generic list'
97+
);
98+
99+
// Clean up
100+
await runCmd(deleteEngineCmd(path));
81101
});
82102
});

0 commit comments

Comments
 (0)