@superawesome/permissions
Version:
Fine grained permissions / access control with ownerships & attribute picking, done right.
64 lines • 4.33 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
// note: so we can require this / execute inline code while dev :-)
const _ = require("lodash");
const _f = require("lodash/fp");
const data_fixtures_1 = require("./data.fixtures");
describe('Fixtures tests', () => {
// prettier-ignore
describe('listOwned', () => {
it('lists documentIds created by user', async () => {
expect(await data_fixtures_1.listOwned_listUserCreatedDocuments(data_fixtures_1.USERS.employee1)).toIncludeSameMembers([1, 10, 100]);
});
it('lists documentIds created by User and created by all managed Users', async () => {
expect(await data_fixtures_1.listOwned_DocsOfMeAndMyManagedUsers(data_fixtures_1.USERS.employee1)).toIncludeSameMembers([1, 10, 100]);
expect(await data_fixtures_1.listOwned_DocsOfMeAndMyManagedUsers(data_fixtures_1.USERS.employeeManager2)).toIncludeSameMembers([1, 10, 100, 2, 20, 200, 4, 40, 400]);
expect(await data_fixtures_1.listOwned_DocsOfMeAndMyManagedUsers(data_fixtures_1.USERS.qaManager3)).toIncludeSameMembers([2, 20, 200, 3, 30, 300, 5, 50, 500]);
});
it('list Docs Of User and of all users in user`s Company ', async () => {
expect(await data_fixtures_1.listOwned_DocsOfMeAndMyCompanyUsers(data_fixtures_1.USERS.employee1)).toIncludeSameMembers([1, 10, 100, 2, 20, 200, 3, 30, 300, 7, 70, 700]);
expect(await data_fixtures_1.listOwned_DocsOfMeAndMyCompanyUsers(data_fixtures_1.USERS.companyAdmin4)).toIncludeSameMembers([4, 40, 400, 5, 50, 500, 6, 60, 600]);
});
it('list Docs Of User + of users managed by User + of all users in user`s Company', async () => {
const allowedDocIds = _.uniq([
...(await data_fixtures_1.listOwned_DocsOfMeAndMyManagedUsers(data_fixtures_1.USERS.managerAndCompanyAdmin7)),
...(await data_fixtures_1.listOwned_DocsOfMeAndMyCompanyUsers(data_fixtures_1.USERS.managerAndCompanyAdmin7)),
]);
expect(allowedDocIds).toIncludeSameMembers([1, 10, 100, 2, 20, 200, 3, 30, 300, 5, 50, 500, 6, 60, 600, 7, 70, 700]);
});
});
describe('limitOwned', () => {
it('filters documentIds created by user', async () => {
const limitOwnDocs = data_fixtures_1.limitOwned_listUserCreatedDocuments({ user: data_fixtures_1.USERS.employee1 });
expect(_f
.filter(limitOwnDocs)(data_fixtures_1.ALL_DOCUMENTS)
.map((doc) => doc.id)).toIncludeSameMembers([1, 10, 100]);
});
it('filters documentIds created by User and created by all managed Users', () => {
const getFilteredDocumentIdsForUser = (user) => {
const limitOwnDocs = data_fixtures_1.limitOwned_DocsOfMeAndMyManagedUsers({ user });
return _f
.filter(limitOwnDocs)(data_fixtures_1.ALL_DOCUMENTS)
.map((doc) => doc.id);
};
expect(getFilteredDocumentIdsForUser(data_fixtures_1.USERS.employee1)).toIncludeSameMembers([1, 10, 100]);
// prettier-ignore
expect(getFilteredDocumentIdsForUser(data_fixtures_1.USERS.employeeManager2)).toIncludeSameMembers([1, 10, 100, 2, 20, 200, 4, 40, 400]);
// prettier-ignore
expect(getFilteredDocumentIdsForUser(data_fixtures_1.USERS.qaManager3)).toIncludeSameMembers([2, 20, 200, 3, 30, 300, 5, 50, 500]);
});
it('filters Docs Of User and of all users in user`s Company ', () => {
const getFilteredDocumentIdsForUser = (user) => {
const limitOwnDocs = data_fixtures_1.limitOwned_DocsOfMeAndMyCompanyUsers({ user });
return _f
.filter(limitOwnDocs)(data_fixtures_1.ALL_DOCUMENTS)
.map((doc) => doc.id);
};
// prettier-ignore
expect(getFilteredDocumentIdsForUser(data_fixtures_1.USERS.employee1)).toIncludeSameMembers([1, 10, 100, 2, 20, 200, 3, 30, 300, 7, 70, 700,]);
// prettier-ignore
expect(getFilteredDocumentIdsForUser(data_fixtures_1.USERS.companyAdmin4)).toIncludeSameMembers([4, 40, 400, 5, 50, 500, 6, 60, 600,]);
});
});
});
//# sourceMappingURL=data.fixtures.spec.js.map