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  });