github.com/Ilhicas/nomad@v1.0.4-0.20210304152020-e86851182bc3/ui/tests/unit/abilities/recommendation-test.js (about) 1 /* eslint-disable ember/avoid-leaking-state-in-ember-objects */ 2 import { module, test } from 'qunit'; 3 import { setupTest } from 'ember-qunit'; 4 import Service from '@ember/service'; 5 import setupAbility from 'nomad-ui/tests/helpers/setup-ability'; 6 7 module('Unit | Ability | recommendation', function(hooks) { 8 setupTest(hooks); 9 setupAbility('recommendation')(hooks); 10 11 module('when the Dynamic Application Sizing feature is present', function(hooks) { 12 hooks.beforeEach(function() { 13 const mockSystem = Service.extend({ 14 features: ['Dynamic Application Sizing'], 15 }); 16 17 this.owner.register('service:system', mockSystem); 18 }); 19 20 test('it permits accepting recommendations when ACLs are disabled', function(assert) { 21 const mockToken = Service.extend({ 22 aclEnabled: false, 23 }); 24 25 this.owner.register('service:token', mockToken); 26 27 assert.ok(this.ability.canAccept); 28 }); 29 30 test('it permits accepting recommendations for client tokens where any namespace has submit-job capabilities', function(assert) { 31 this.owner.lookup('service:system').set('activeNamespace', { 32 name: 'anotherNamespace', 33 }); 34 35 const mockToken = Service.extend({ 36 aclEnabled: true, 37 selfToken: { type: 'client' }, 38 selfTokenPolicies: [ 39 { 40 rulesJSON: { 41 Namespaces: [ 42 { 43 Name: 'aNamespace', 44 Capabilities: [], 45 }, 46 { 47 Name: 'bNamespace', 48 Capabilities: ['submit-job'], 49 }, 50 ], 51 }, 52 }, 53 ], 54 }); 55 56 this.owner.register('service:token', mockToken); 57 58 assert.ok(this.ability.canAccept); 59 }); 60 }); 61 62 module('when the Dynamic Application Sizing feature is not present', function(hooks) { 63 hooks.beforeEach(function() { 64 const mockSystem = Service.extend({ 65 features: [], 66 }); 67 68 this.owner.register('service:system', mockSystem); 69 }); 70 71 test('it does not permit accepting recommendations regardless of ACL status', function(assert) { 72 const mockToken = Service.extend({ 73 aclEnabled: false, 74 }); 75 76 this.owner.register('service:token', mockToken); 77 78 assert.notOk(this.ability.canAccept); 79 }); 80 }); 81 });