You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
consul/ui-v2/tests/unit/utils/acls-status-test.js

90 lines
3.1 KiB

import { module } from 'qunit';
import test from 'ember-sinon-qunit/test-support/test';
import aclsStatus from 'consul-ui/utils/acls-status';
module('Unit | Utility | acls status', function() {
test('it rejects and nothing is enabled or authorized', function(assert) {
const isValidServerError = this.stub().returns(false);
const status = aclsStatus(isValidServerError);
[
this.stub().rejects(),
this.stub().rejects({ errors: [] }),
this.stub().rejects({ errors: [{ status: '404' }] }),
].forEach(function(reject) {
const actual = status({
response: reject(),
});
assert.rejects(actual.response);
['isAuthorized', 'isEnabled'].forEach(function(prop) {
actual[prop].then(function(actual) {
assert.notOk(actual);
});
});
});
});
test('with a 401 it resolves with an empty array and nothing is enabled or authorized', function(assert) {
assert.expect(3);
const isValidServerError = this.stub().returns(false);
const status = aclsStatus(isValidServerError);
const actual = status({
response: this.stub().rejects({ errors: [{ status: '401' }] })(),
});
actual.response.then(function(actual) {
assert.deepEqual(actual, []);
});
['isAuthorized', 'isEnabled'].forEach(function(prop) {
actual[prop].then(function(actual) {
assert.notOk(actual);
});
});
});
test("with a 403 it resolves with an empty array and it's enabled but not authorized", function(assert) {
assert.expect(3);
const isValidServerError = this.stub().returns(false);
const status = aclsStatus(isValidServerError);
const actual = status({
response: this.stub().rejects({ errors: [{ status: '403' }] })(),
});
actual.response.then(function(actual) {
assert.deepEqual(actual, []);
});
actual.isEnabled.then(function(actual) {
assert.ok(actual);
});
actual.isAuthorized.then(function(actual) {
assert.notOk(actual);
});
});
test("with a 500 (but not a 'valid' error) it rejects and nothing is enabled or authorized", function(assert) {
assert.expect(3);
const isValidServerError = this.stub().returns(false);
const status = aclsStatus(isValidServerError);
const actual = status({
response: this.stub().rejects({ errors: [{ status: '500' }] })(),
});
assert.rejects(actual.response);
['isAuthorized', 'isEnabled'].forEach(function(prop) {
actual[prop].then(function(actual) {
assert.notOk(actual);
});
});
});
test("with a 500 and a 'valid' error, it resolves with an empty array and it's enabled but not authorized", function(assert) {
assert.expect(3);
const isValidServerError = this.stub().returns(true);
const status = aclsStatus(isValidServerError);
const actual = status({
response: this.stub().rejects({ errors: [{ status: '500' }] })(),
});
actual.response.then(function(actual) {
assert.deepEqual(actual, []);
});
actual.isEnabled.then(function(actual) {
assert.ok(actual);
});
actual.isAuthorized.then(function(actual) {
assert.notOk(actual);
});
});
});