/
open-id-connect-navigation-filter.spec.ts
71 lines (61 loc) · 2.13 KB
/
open-id-connect-navigation-filter.spec.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
import { NavModel } from 'aurelia-router';
import { assert } from 'chai';
import sinon = require('sinon');
import { OpenIdConnectRoles } from '../src';
import { OpenIdConnectNavigationFilter } from '../src/index-internal';
describe('open-id-connect-navigation-filter', () => {
const createNavModelsWithEmptySettings = (count: number) => Array
.apply(null, Array(count))
.map(() => {
const model = sinon.createStubInstance(NavModel);
model.settings = {};
return model;
});
const filter = new OpenIdConnectNavigationFilter();
context('toView', () => {
[undefined, null].forEach((rolesValue) => {
it(`should include all navModels that have ${rolesValue} roles `, () => {
// arrange
const user = {} as any;
const total = 5;
const navModels = createNavModelsWithEmptySettings(total)
.map((navModel: NavModel, index: number) => {
navModel.settings.roles = rolesValue;
return navModel;
});
// act
const result = filter.toView(navModels, user);
// assert
assert.equal(result.length, total);
});
});
context(`if some navModels require the Authenticated role`, () => {
// arrange
const total = 10;
const requiresAuthenticated = 5;
const navModels = createNavModelsWithEmptySettings(total)
.map((navModel: NavModel, index: number) => {
if (index < requiresAuthenticated) {
navModel.settings.roles = [OpenIdConnectRoles.Authenticated];
}
return navModel;
});
it(`should include all navModels when the user is not null`, () => {
// arrange
const user = {} as any;
// act
const result = filter.toView(navModels, user);
// assert
assert.equal(result.length, total);
});
it(`should filter restricted navModels when the user is null`, () => {
// arrange
const user: any = null;
// act
const result = filter.toView(navModels, user);
// assert
assert.equal(result.length, requiresAuthenticated);
});
});
});
});