-
Notifications
You must be signed in to change notification settings - Fork 4.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Backport 1.2.1: ui namespace fixes (#7251)
* ancestorKeysForKey always returns an array (#6205) * clear namespaces on logout and properly render nested namespaces in the namepace picker (#7186) * reset namespace cache when a user logs out * fix issue where if you log in to a namespace with an initial /, nested namespaces would not show up in the navigation * set an empty list of namespaces instead of ignoring error * add tests for namespace bugs * use this consistently in template
- Loading branch information
Showing
9 changed files
with
92 additions
and
18 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,16 +1,18 @@ | ||
{{#link-to "vault.cluster.secrets" (query-params namespace=normalizedNamespace) | ||
class=(concat "is-block " class) | ||
}} | ||
<LinkTo | ||
@params={{array "vault.cluster.secrets" (query-params namespace=this.normalizedNamespace)}} | ||
class={{concat "is-block " class}} | ||
data-test-namespace-link={{this.normalizedNamespace}} | ||
> | ||
{{#if (has-block)}} | ||
{{yield}} | ||
{{else}} | ||
<div class="level is-mobile"> | ||
<span class="level-left">{{namespaceDisplay}}</span> | ||
<span class="level-left">{{this.namespaceDisplay}}</span> | ||
<span class="level-right"> | ||
<button type="button" class="button is-ghost icon"> | ||
<Chevron @isButton={{true}} class="has-text-grey" /> | ||
</button> | ||
</span> | ||
</div> | ||
{{/if}} | ||
{{/link-to}} | ||
</LinkTo> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
import { click, currentRouteName, currentURL, visit } from '@ember/test-helpers'; | ||
import { module, test } from 'qunit'; | ||
import { setupApplicationTest } from 'ember-qunit'; | ||
import { create } from 'ember-cli-page-object'; | ||
|
||
import consoleClass from 'vault/tests/pages/components/console/ui-panel'; | ||
import authPage from 'vault/tests/pages/auth'; | ||
import logout from 'vault/tests/pages/logout'; | ||
|
||
const shell = create(consoleClass); | ||
|
||
const createNS = async name => { | ||
await shell.runCommands(`write sys/namespaces/${name} -force`); | ||
}; | ||
|
||
const switchToNS = async name => { | ||
await click('[data-test-namespace-toggle]'); | ||
await click(`[data-test-namespace-link="${name}"]`); | ||
await click('[data-test-namespace-toggle]'); | ||
}; | ||
|
||
module('Acceptance | Enterprise | namespaces', function(hooks) { | ||
setupApplicationTest(hooks); | ||
|
||
hooks.beforeEach(function() { | ||
return authPage.login(); | ||
}); | ||
|
||
test('it clears namespaces when you log out', async function(assert) { | ||
let ns = 'foo'; | ||
await createNS(ns); | ||
await shell.runCommands(`write -field=client_token auth/token/create policies=default`); | ||
let token = shell.lastLogOutput; | ||
await logout.visit(); | ||
await authPage.login(token); | ||
assert.dom('[data-test-namespace-toggle]').doesNotExist('does not show the namespace picker'); | ||
await logout.visit(); | ||
}); | ||
|
||
test('it shows nested namespaces if you log in with a namspace starting with a /', async function(assert) { | ||
let nses = ['beep', 'boop', 'bop']; | ||
for (let [i, ns] of nses.entries()) { | ||
await createNS(ns); | ||
// this is usually triggered when creating a ns in the form, here we'll trigger a reload of the | ||
// namespaces manually | ||
await this.owner.lookup('service:namespace').findNamespacesForUser.perform(); | ||
if (i === nses.length - 1) { | ||
break; | ||
} | ||
// the namespace path will include all of the namespaces up to this point | ||
let targetNamespace = nses.slice(0, i + 1).join('/'); | ||
await switchToNS(targetNamespace); | ||
} | ||
await logout.visit(); | ||
await authPage.visit({ with: 'token', namespace: '/beep/boop' }); | ||
await authPage.tokenInput('root').submit(); | ||
await click('[data-test-namespace-toggle]'); | ||
assert.dom('[data-test-current-namespace]').hasText('/beep/boop/', 'current namespace begins with a /'); | ||
assert | ||
.dom('[data-test-namespace-link="beep/boop/bop"]') | ||
.exists('renders the link to the nested namespace'); | ||
}); | ||
}); |