107 lines
2.9 KiB
JavaScript
107 lines
2.9 KiB
JavaScript
describe('Directive acl', () => {
|
|
let $scope;
|
|
let $element;
|
|
let element;
|
|
let compile;
|
|
|
|
beforeEach(ngModule('vnCore'));
|
|
|
|
beforeEach(inject(($httpBackend, aclService) => {
|
|
$httpBackend.whenGET('VnUsers/acl')
|
|
.respond({
|
|
user: {id: 1, name: 'myUser'},
|
|
roles: [
|
|
{role: {name: 'myRole'}},
|
|
{role: {name: 'myOtherRole'}}
|
|
]
|
|
});
|
|
$httpBackend.whenGET('VnUsers/acls').respond([
|
|
{
|
|
id: 1,
|
|
model: 'ModelExample',
|
|
property: '*',
|
|
accessType: '*',
|
|
permission: 'ALLOW',
|
|
principalType: 'ROLE',
|
|
principalId: 'employee'
|
|
}
|
|
]);
|
|
aclService.load();
|
|
$httpBackend.flush();
|
|
}));
|
|
|
|
afterEach(() => {
|
|
$element.remove();
|
|
$scope.$destroy();
|
|
});
|
|
|
|
compile = html => {
|
|
inject(($compile, $rootScope) => {
|
|
$scope = $rootScope.$new();
|
|
$element = $compile(html)($scope);
|
|
$scope.$digest();
|
|
element = $element[0];
|
|
});
|
|
};
|
|
|
|
it('should not disable the input element as the user owns the role', () => {
|
|
let html = `
|
|
<div
|
|
vn-acl="randomRole, myRole"
|
|
vn-acl-action="disable">
|
|
<input/>
|
|
</div>
|
|
`;
|
|
compile(html);
|
|
let input = element.querySelector('input');
|
|
|
|
expect(input.disabled).toBeFalsy();
|
|
});
|
|
|
|
it('should disable the element as the action is to disable and the user does not own the role', () => {
|
|
let html = `
|
|
<div
|
|
vn-acl="unownedRole, randomRole"
|
|
vn-acl-action="disable">
|
|
<input/>
|
|
</div>
|
|
`;
|
|
compile(html);
|
|
let input = element.querySelector('input');
|
|
|
|
expect(input.disabled).toBeTruthy();
|
|
});
|
|
|
|
it('should keep the element as the action is to remove and the user owns the role', () => {
|
|
let html = `
|
|
<section>
|
|
<div
|
|
vn-acl="myOtherRole, randomRole"
|
|
vn-acl-action="remove">
|
|
<input/>
|
|
</div>
|
|
</section>
|
|
`;
|
|
compile(html);
|
|
let div = element.querySelector('div');
|
|
|
|
expect(div).not.toBeNull();
|
|
});
|
|
|
|
it('should delete the element as the action is to remove and the user does not own the role', () => {
|
|
let html = `
|
|
<section>
|
|
<div
|
|
vn-acl="unownedRole, randomRole"
|
|
vn-acl-action="remove">
|
|
<input/>
|
|
</div>
|
|
</section>
|
|
`;
|
|
compile(html);
|
|
let div = element.querySelector('div');
|
|
|
|
expect(div).toBeNull();
|
|
});
|
|
});
|