Example #1
0
  skip('the X-Nomad-Token header gets sent with requests once it is set', async function(assert) {
    const { secretId } = managementToken;

    await JobDetail.visit({ id: job.id });
    await ClientDetail.visit({ id: node.id });

    assert.ok(server.pretender.handledRequests.length > 1, 'Requests have been made');

    server.pretender.handledRequests.forEach(req => {
      assert.notOk(getHeader(req, 'X-Nomad-Token'), `No token for ${req.url}`);
    });

    const requestPosition = server.pretender.handledRequests.length;

    await Tokens.visit();
    await Tokens.secret(secretId).submit();

    await JobDetail.visit({ id: job.id });
    await ClientDetail.visit({ id: node.id });

    const newRequests = server.pretender.handledRequests.slice(requestPosition);
    assert.ok(newRequests.length > 1, 'New requests have been made');

    // Cross-origin requests can't have a token
    newRequests.forEach(req => {
      assert.equal(getHeader(req, 'X-Nomad-Token'), secretId, `Token set for ${req.url}`);
    });
  });
Example #2
0
export default function moduleForJob(title, jobFactory, additionalTests) {
  let job;

  moduleForAcceptance(title, {
    beforeEach() {
      server.create('node');
      job = jobFactory();
      JobDetail.visit({ id: job.id });
    },
  });

  test('visiting /jobs/:job_id', function(assert) {
    assert.equal(currentURL(), `/jobs/${job.id}`);
  });

  test('the subnav links to overview', function(assert) {
    JobDetail.tabFor('overview').visit();
    andThen(() => {
      assert.equal(currentURL(), `/jobs/${job.id}`);
    });
  });

  test('the subnav links to definition', function(assert) {
    JobDetail.tabFor('definition').visit();
    andThen(() => {
      assert.equal(currentURL(), `/jobs/${job.id}/definition`);
    });
  });

  test('the subnav links to versions', function(assert) {
    JobDetail.tabFor('versions').visit();
    andThen(() => {
      assert.equal(currentURL(), `/jobs/${job.id}/versions`);
    });
  });

  test('the subnav links to evaluations', function(assert) {
    JobDetail.tabFor('evaluations').visit();
    andThen(() => {
      assert.equal(currentURL(), `/jobs/${job.id}/evaluations`);
    });
  });

  for (var testName in additionalTests) {
    test(testName, function(assert) {
      additionalTests[testName](job, assert);
    });
  }
}
  test('the 403 error page links to the ACL tokens page', async function(assert) {
    const job = server.db.jobs[0];

    server.pretender.get(`/v1/job/${job.id}`, () => [403, {}, null]);

    await Job.visit({ id: job.id });

    assert.ok(Job.error.isPresent, 'Error message is shown');
    assert.equal(Job.error.title, 'Not Authorized', 'Error message is for 403');

    await Job.error.seekHelp();
    assert.equal(
      currentURL(),
      '/settings/tokens',
      'Error message contains a link to the tokens page'
    );
  });