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"}}
+ {{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');
+ });
+});