github.com/hernad/nomad@v1.6.112/ui/tests/acceptance/policies-test.js (about) 1 /** 2 * Copyright (c) HashiCorp, Inc. 3 * SPDX-License-Identifier: MPL-2.0 4 */ 5 6 import { module, test } from 'qunit'; 7 import { visit, currentURL, click, typeIn, findAll } from '@ember/test-helpers'; 8 import { setupApplicationTest } from 'ember-qunit'; 9 import { allScenarios } from '../../mirage/scenarios/default'; 10 import { setupMirage } from 'ember-cli-mirage/test-support'; 11 import percySnapshot from '@percy/ember'; 12 import a11yAudit from 'nomad-ui/tests/helpers/a11y-audit'; 13 14 module('Acceptance | policies', function (hooks) { 15 setupApplicationTest(hooks); 16 setupMirage(hooks); 17 18 test('Policies index route looks good', async function (assert) { 19 assert.expect(4); 20 allScenarios.policiesTestCluster(server); 21 window.localStorage.nomadTokenSecret = server.db.tokens[0].secretId; 22 await visit('/policies'); 23 assert.dom('[data-test-gutter-link="policies"]').exists(); 24 assert.equal(currentURL(), '/policies'); 25 assert 26 .dom('[data-test-policy-row]') 27 .exists({ count: server.db.policies.length }); 28 await a11yAudit(assert); 29 await percySnapshot(assert); 30 // Reset Token 31 window.localStorage.nomadTokenSecret = null; 32 }); 33 34 test('Prevents policies access if you lack a management token', async function (assert) { 35 allScenarios.policiesTestCluster(server); 36 window.localStorage.nomadTokenSecret = server.db.tokens[1].secretId; 37 await visit('/policies'); 38 assert.equal(currentURL(), '/jobs'); 39 assert.dom('[data-test-gutter-link="policies"]').doesNotExist(); 40 // Reset Token 41 window.localStorage.nomadTokenSecret = null; 42 }); 43 44 test('Modifying an existing policy', async function (assert) { 45 allScenarios.policiesTestCluster(server); 46 window.localStorage.nomadTokenSecret = server.db.tokens[0].secretId; 47 await visit('/policies'); 48 await click('[data-test-policy-row]:first-child'); 49 assert.equal(currentURL(), `/policies/${server.db.policies[0].name}`); 50 assert.dom('[data-test-policy-editor]').exists(); 51 assert.dom('[data-test-title]').includesText(server.db.policies[0].name); 52 await click('button[type="submit"]'); 53 assert.dom('.flash-message.alert-success').exists(); 54 assert.equal( 55 currentURL(), 56 `/policies/${server.db.policies[0].name}`, 57 'remain on page after save' 58 ); 59 // Reset Token 60 window.localStorage.nomadTokenSecret = null; 61 }); 62 63 test('Creating a new policy', async function (assert) { 64 assert.expect(7); 65 allScenarios.policiesTestCluster(server); 66 window.localStorage.nomadTokenSecret = server.db.tokens[0].secretId; 67 await visit('/policies'); 68 await click('[data-test-create-policy]'); 69 assert.equal(currentURL(), '/policies/new'); 70 await typeIn('[data-test-policy-name-input]', 'My Fun Policy'); 71 await click('button[type="submit"]'); 72 assert 73 .dom('.flash-message.alert-critical') 74 .exists('Doesnt let you save a bad name'); 75 assert.equal(currentURL(), '/policies/new'); 76 document.querySelector('[data-test-policy-name-input]').value = ''; // clear 77 await typeIn('[data-test-policy-name-input]', 'My-Fun-Policy'); 78 await click('button[type="submit"]'); 79 assert.dom('.flash-message.alert-success').exists(); 80 assert.equal( 81 currentURL(), 82 '/policies/My-Fun-Policy', 83 'redirected to the now-created policy' 84 ); 85 await visit('/policies'); 86 const newPolicy = [...findAll('[data-test-policy-name]')].filter((a) => 87 a.textContent.includes('My-Fun-Policy') 88 )[0]; 89 assert.ok(newPolicy, 'Policy is in the list'); 90 await click(newPolicy); 91 assert.equal(currentURL(), '/policies/My-Fun-Policy'); 92 await percySnapshot(assert); 93 // Reset Token 94 window.localStorage.nomadTokenSecret = null; 95 }); 96 97 test('Deleting a policy', async function (assert) { 98 allScenarios.policiesTestCluster(server); 99 window.localStorage.nomadTokenSecret = server.db.tokens[0].secretId; 100 await visit('/policies'); 101 const firstPolicyName = server.db.policies[0].name; 102 const firstPolicyRow = [...findAll('[data-test-policy-name]')].filter( 103 (row) => row.textContent.includes(firstPolicyName) 104 )[0]; 105 await click(firstPolicyRow); 106 assert.equal(currentURL(), `/policies/${firstPolicyName}`); 107 await click('[data-test-delete-button] button'); 108 assert.dom('[data-test-confirm-button]').exists(); 109 await click('[data-test-confirm-button]'); 110 assert.dom('.flash-message.alert-success').exists(); 111 assert.equal(currentURL(), '/policies'); 112 assert.dom(`[data-test-policy-name="${firstPolicyName}"]`).doesNotExist(); 113 // Reset Token 114 window.localStorage.nomadTokenSecret = null; 115 }); 116 });