github.com/hernad/nomad@v1.6.112/ui/tests/acceptance/servers-list-test.js (about)

     1  /**
     2   * Copyright (c) HashiCorp, Inc.
     3   * SPDX-License-Identifier: MPL-2.0
     4   */
     5  
     6  /* eslint-disable qunit/require-expect */
     7  import { currentURL } from '@ember/test-helpers';
     8  import { module, test } from 'qunit';
     9  import { setupApplicationTest } from 'ember-qunit';
    10  import { setupMirage } from 'ember-cli-mirage/test-support';
    11  import a11yAudit from 'nomad-ui/tests/helpers/a11y-audit';
    12  import { findLeader } from '../../mirage/config';
    13  import ServersList from 'nomad-ui/tests/pages/servers/list';
    14  import formatHost from 'nomad-ui/utils/format-host';
    15  import percySnapshot from '@percy/ember';
    16  import faker from 'nomad-ui/mirage/faker';
    17  
    18  const minimumSetup = () => {
    19    faker.seed(1);
    20    server.createList('node-pool', 1);
    21    server.createList('node', 1);
    22    server.createList('agent', 1);
    23  };
    24  
    25  const agentSort = (leader) => (a, b) => {
    26    if (formatHost(a.member.Address, a.member.Tags.port) === leader) {
    27      return 1;
    28    } else if (formatHost(b.member.Address, b.member.Tags.port) === leader) {
    29      return -1;
    30    }
    31    return 0;
    32  };
    33  
    34  module('Acceptance | servers list', function (hooks) {
    35    setupApplicationTest(hooks);
    36    setupMirage(hooks);
    37  
    38    test('it passes an accessibility audit', async function (assert) {
    39      minimumSetup();
    40      await ServersList.visit();
    41      await a11yAudit(assert);
    42    });
    43  
    44    test('/servers should list all servers', async function (assert) {
    45      faker.seed(1);
    46      server.createList('node-pool', 1);
    47      server.createList('node', 1);
    48      server.createList('agent', 10);
    49  
    50      const leader = findLeader(server.schema);
    51      const sortedAgents = server.db.agents.sort(agentSort(leader)).reverse();
    52  
    53      await ServersList.visit();
    54  
    55      await percySnapshot(assert);
    56  
    57      assert.equal(
    58        ServersList.servers.length,
    59        ServersList.pageSize,
    60        'List is stopped at pageSize'
    61      );
    62  
    63      ServersList.servers.forEach((server, index) => {
    64        assert.equal(
    65          server.name,
    66          sortedAgents[index].name,
    67          'Servers are ordered'
    68        );
    69      });
    70  
    71      assert.ok(document.title.includes('Servers'));
    72    });
    73  
    74    test('each server should show high-level info of the server', async function (assert) {
    75      minimumSetup();
    76      const agent = server.db.agents[0];
    77  
    78      await ServersList.visit();
    79  
    80      const agentRow = ServersList.servers.objectAt(0);
    81  
    82      assert.equal(agentRow.name, agent.name, 'Name');
    83      assert.equal(agentRow.status, agent.member.Status, 'Status');
    84      assert.equal(agentRow.leader, 'True', 'Leader?');
    85      assert.equal(agentRow.address, agent.member.Address, 'Address');
    86      assert.equal(agentRow.serfPort, agent.member.Port, 'Serf Port');
    87      assert.equal(agentRow.datacenter, agent.member.Tags.dc, 'Datacenter');
    88      assert.equal(agentRow.version, agent.version, 'Version');
    89    });
    90  
    91    test('each server should link to the server detail page', async function (assert) {
    92      minimumSetup();
    93      const agent = server.db.agents[0];
    94  
    95      await ServersList.visit();
    96      await ServersList.servers.objectAt(0).clickRow();
    97  
    98      assert.equal(
    99        currentURL(),
   100        `/servers/${agent.name}`,
   101        'Now at the server detail page'
   102      );
   103    });
   104  
   105    test('when accessing servers is forbidden, show a message with a link to the tokens page', async function (assert) {
   106      server.create('agent');
   107      server.pretender.get('/v1/agent/members', () => [403, {}, null]);
   108  
   109      await ServersList.visit();
   110      assert.equal(ServersList.error.title, 'Not Authorized');
   111  
   112      await ServersList.error.seekHelp();
   113      assert.equal(currentURL(), '/settings/tokens');
   114    });
   115  });