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