github.com/anth0d/nomad@v0.0.0-20221214183521-ae3a0a2cad06/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(
    12      'when the Dynamic Application Sizing feature is present',
    13      function (hooks) {
    14        hooks.beforeEach(function () {
    15          const mockSystem = Service.extend({
    16            features: ['Dynamic Application Sizing'],
    17          });
    18  
    19          this.owner.register('service:system', mockSystem);
    20        });
    21  
    22        test('it permits accepting recommendations when ACLs are disabled', function (assert) {
    23          const mockToken = Service.extend({
    24            aclEnabled: false,
    25          });
    26  
    27          this.owner.register('service:token', mockToken);
    28  
    29          assert.ok(this.ability.canAccept);
    30        });
    31  
    32        test('it permits accepting recommendations for client tokens where any namespace has submit-job capabilities', function (assert) {
    33          this.owner.lookup('service:system').set('activeNamespace', {
    34            name: 'anotherNamespace',
    35          });
    36  
    37          const mockToken = Service.extend({
    38            aclEnabled: true,
    39            selfToken: { type: 'client' },
    40            selfTokenPolicies: [
    41              {
    42                rulesJSON: {
    43                  Namespaces: [
    44                    {
    45                      Name: 'aNamespace',
    46                      Capabilities: [],
    47                    },
    48                    {
    49                      Name: 'bNamespace',
    50                      Capabilities: ['submit-job'],
    51                    },
    52                  ],
    53                },
    54              },
    55            ],
    56          });
    57  
    58          this.owner.register('service:token', mockToken);
    59  
    60          assert.ok(this.ability.canAccept);
    61        });
    62      }
    63    );
    64  
    65    module(
    66      'when the Dynamic Application Sizing feature is not present',
    67      function (hooks) {
    68        hooks.beforeEach(function () {
    69          const mockSystem = Service.extend({
    70            features: [],
    71          });
    72  
    73          this.owner.register('service:system', mockSystem);
    74        });
    75  
    76        test('it does not permit accepting recommendations regardless of ACL status', function (assert) {
    77          const mockToken = Service.extend({
    78            aclEnabled: false,
    79          });
    80  
    81          this.owner.register('service:token', mockToken);
    82  
    83          assert.notOk(this.ability.canAccept);
    84        });
    85      }
    86    );
    87  });