diff --git a/ui/app/templates/servers.hbs b/ui/app/templates/servers.hbs index e4d12d28b..3244a306e 100644 --- a/ui/app/templates/servers.hbs +++ b/ui/app/templates/servers.hbs @@ -1,6 +1,6 @@
{{#global-header class="page-header"}} - Nodes + Servers {{/global-header}} {{#gutter-menu class="page-body"}}
@@ -35,6 +35,17 @@
+ {{else}} +
+

Invalid Permissions

+

+ {{#if token.secret}} + Your ACL token does not grant access to see servers. + {{else}} + You have no ACL token set. {{#link-to "settings.tokens"}}Provide a token{{/link-to}} with the appropriate permissions to see servers. + {{/if}} +

+
{{/list-pagination}} {{outlet}} diff --git a/ui/tests/acceptance/nodes-list-test.js b/ui/tests/acceptance/nodes-list-test.js index 81cb509e6..23e1b10ed 100644 --- a/ui/tests/acceptance/nodes-list-test.js +++ b/ui/tests/acceptance/nodes-list-test.js @@ -170,3 +170,24 @@ test('each server should link to the server detail page', function(assert) { assert.equal(currentURL(), `/servers/${agent.name}`); }); }); + +test('when the API returns no agents, show an empty message', function(assert) { + minimumSetup(); + + // Override the members handler to act as if server-side permissions + // are preventing a qualified response. + server.pretender.get('/v1/agent/members', () => [ + 200, + {}, + JSON.stringify({ + Members: [], + }), + ]); + + visit('/servers'); + + andThen(() => { + assert.ok(find('.empty-message')); + assert.equal(find('.empty-message-headline').textContent, 'Invalid Permissions'); + }); +});