github.com/anth0d/nomad@v0.0.0-20221214183521-ae3a0a2cad06/ui/tests/acceptance/server-monitor-test.js (about) 1 import { currentURL } from '@ember/test-helpers'; 2 import { run } from '@ember/runloop'; 3 import { module, test } from 'qunit'; 4 import { setupApplicationTest } from 'ember-qunit'; 5 import { setupMirage } from 'ember-cli-mirage/test-support'; 6 import a11yAudit from 'nomad-ui/tests/helpers/a11y-audit'; 7 import ServerMonitor from 'nomad-ui/tests/pages/servers/monitor'; 8 import Layout from 'nomad-ui/tests/pages/layout'; 9 10 let agent; 11 let managementToken; 12 let clientToken; 13 14 module('Acceptance | server monitor', function (hooks) { 15 setupApplicationTest(hooks); 16 setupMirage(hooks); 17 18 hooks.beforeEach(function () { 19 agent = server.create('agent'); 20 21 managementToken = server.create('token'); 22 clientToken = server.create('token'); 23 24 window.localStorage.nomadTokenSecret = managementToken.secretId; 25 26 run.later(run, run.cancelTimers, 500); 27 }); 28 29 test('it passes an accessibility audit', async function (assert) { 30 assert.expect(1); 31 32 await ServerMonitor.visit({ name: agent.name }); 33 await a11yAudit(assert); 34 }); 35 36 test('/servers/:id/monitor should have a breadcrumb trail linking back to servers', async function (assert) { 37 await ServerMonitor.visit({ name: agent.name }); 38 assert.equal( 39 Layout.breadcrumbFor('servers.index').text, 40 'Servers', 41 'The page should read the breadcrumb Servers' 42 ); 43 assert.equal( 44 Layout.breadcrumbFor('servers.server').text, 45 `Server ${agent.name}` 46 ); 47 48 await Layout.breadcrumbFor('servers.index').visit(); 49 assert.equal(currentURL(), '/servers'); 50 }); 51 52 test('the monitor page immediately streams agent monitor output at the info level', async function (assert) { 53 await ServerMonitor.visit({ name: agent.name }); 54 55 const logRequest = server.pretender.handledRequests.find((req) => 56 req.url.startsWith('/v1/agent/monitor') 57 ); 58 assert.ok(ServerMonitor.logsArePresent); 59 assert.ok(logRequest); 60 assert.ok(logRequest.url.includes('log_level=info')); 61 }); 62 63 test('switching the log level persists the new log level as a query param', async function (assert) { 64 await ServerMonitor.visit({ name: agent.name }); 65 await ServerMonitor.selectLogLevel('Debug'); 66 assert.equal(currentURL(), `/servers/${agent.name}/monitor?level=debug`); 67 }); 68 69 test('when the current access token does not include the agent:read rule, a descriptive error message is shown', async function (assert) { 70 window.localStorage.nomadTokenSecret = clientToken.secretId; 71 72 await ServerMonitor.visit({ name: agent.name }); 73 assert.notOk(ServerMonitor.logsArePresent); 74 assert.ok(ServerMonitor.error.isShown); 75 assert.equal(ServerMonitor.error.title, 'Not Authorized'); 76 assert.ok(ServerMonitor.error.message.includes('agent:read')); 77 78 await ServerMonitor.error.seekHelp(); 79 assert.equal(currentURL(), '/settings/tokens'); 80 }); 81 });