github.com/zoomfoo/nomad@v0.8.5-0.20180907175415-f28fd3a1a056/ui/tests/acceptance/servers-list-test.js (about) 1 import { currentURL } from 'ember-native-dom-helpers'; 2 import { test } from 'qunit'; 3 import moduleForAcceptance from 'nomad-ui/tests/helpers/module-for-acceptance'; 4 import { findLeader } from '../../mirage/config'; 5 import ServersList from 'nomad-ui/tests/pages/servers/list'; 6 7 const minimumSetup = () => { 8 server.createList('node', 1); 9 server.createList('agent', 1); 10 }; 11 12 const agentSort = leader => (a, b) => { 13 if (`${a.address}:${a.tags.port}` === leader) { 14 return 1; 15 } else if (`${b.address}:${b.tags.port}` === leader) { 16 return -1; 17 } 18 return 0; 19 }; 20 21 moduleForAcceptance('Acceptance | servers list'); 22 23 test('/servers should list all servers', function(assert) { 24 server.createList('node', 1); 25 server.createList('agent', 10); 26 27 const leader = findLeader(server.schema); 28 const sortedAgents = server.db.agents.sort(agentSort(leader)).reverse(); 29 30 ServersList.visit(); 31 32 andThen(() => { 33 assert.equal(ServersList.servers.length, ServersList.pageSize, 'List is stopped at pageSize'); 34 35 ServersList.servers.forEach((server, index) => { 36 assert.equal(server.name, sortedAgents[index].name, 'Servers are ordered'); 37 }); 38 }); 39 }); 40 41 test('each server should show high-level info of the server', function(assert) { 42 minimumSetup(); 43 const agent = server.db.agents[0]; 44 45 ServersList.visit(); 46 47 andThen(() => { 48 const agentRow = ServersList.servers.objectAt(0); 49 50 assert.equal(agentRow.name, agent.name, 'Name'); 51 assert.equal(agentRow.status, agent.status, 'Status'); 52 assert.equal(agentRow.leader, 'True', 'Leader?'); 53 assert.equal(agentRow.address, agent.address, 'Address'); 54 assert.equal(agentRow.serfPort, agent.serf_port, 'Serf Port'); 55 assert.equal(agentRow.datacenter, agent.tags.dc, 'Datacenter'); 56 }); 57 }); 58 59 test('each server should link to the server detail page', function(assert) { 60 minimumSetup(); 61 const agent = server.db.agents[0]; 62 63 ServersList.visit(); 64 65 andThen(() => { 66 ServersList.servers.objectAt(0).clickRow(); 67 }); 68 69 andThen(() => { 70 assert.equal(currentURL(), `/servers/${agent.name}`, 'Now at the server detail page'); 71 }); 72 }); 73 74 test('when accessing servers is forbidden, show a message with a link to the tokens page', function(assert) { 75 server.create('agent'); 76 server.pretender.get('/v1/agent/members', () => [403, {}, null]); 77 78 ServersList.visit(); 79 80 andThen(() => { 81 assert.equal(ServersList.error.title, 'Not Authorized'); 82 }); 83 84 andThen(() => { 85 ServersList.error.seekHelp(); 86 }); 87 88 andThen(() => { 89 assert.equal(currentURL(), '/settings/tokens'); 90 }); 91 });