Improves tests, ensure unicity of roleIds
This commit is contained in:
@@ -126,20 +126,23 @@ describe('Parse Role testing', () => {
|
|||||||
it("Should properly resolve roles", (done) => {
|
it("Should properly resolve roles", (done) => {
|
||||||
let admin = new Parse.Role("Admin", new Parse.ACL());
|
let admin = new Parse.Role("Admin", new Parse.ACL());
|
||||||
let moderator = new Parse.Role("Moderator", new Parse.ACL());
|
let moderator = new Parse.Role("Moderator", new Parse.ACL());
|
||||||
let contentCreator = new Parse.Role('ContentManager', new Parse.ACL());
|
let superModerator = new Parse.Role("SuperModerator", new Parse.ACL());
|
||||||
|
let contentManager = new Parse.Role('ContentManager', new Parse.ACL());
|
||||||
Parse.Object.saveAll([admin, moderator, contentCreator], {useMasterKey: true}).then(() => {
|
let superContentManager = new Parse.Role('SuperContentManager', new Parse.ACL());
|
||||||
contentCreator.getRoles().add(moderator);
|
Parse.Object.saveAll([admin, moderator, contentManager, superModerator, superContentManager], {useMasterKey: true}).then(() => {
|
||||||
moderator.getRoles().add(admin);
|
contentManager.getRoles().add([moderator, superContentManager]);
|
||||||
return Parse.Object.saveAll([admin, moderator, contentCreator], {useMasterKey: true});
|
moderator.getRoles().add([admin, superModerator]);
|
||||||
|
superContentManager.getRoles().add(superModerator);
|
||||||
|
return Parse.Object.saveAll([admin, moderator, contentManager, superModerator, superContentManager], {useMasterKey: true});
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
var auth = new Auth({ config: new Config("test"), isMaster: true });
|
var auth = new Auth({ config: new Config("test"), isMaster: true });
|
||||||
// For each role, fetch their sibling, what they inherit
|
// For each role, fetch their sibling, what they inherit
|
||||||
// return with result and roleId for later comparison
|
// return with result and roleId for later comparison
|
||||||
let promises = [admin, moderator, contentCreator].map((role) => {
|
let promises = [admin, moderator, contentManager, superModerator].map((role) => {
|
||||||
return auth._getAllRoleNamesForId(role.id).then((result) => {
|
return auth._getAllRoleNamesForId(role.id).then((result) => {
|
||||||
return Parse.Promise.as({
|
return Parse.Promise.as({
|
||||||
id: role.id,
|
id: role.id,
|
||||||
|
name: role.get('name'),
|
||||||
roleIds: result
|
roleIds: result
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
@@ -147,19 +150,23 @@ describe('Parse Role testing', () => {
|
|||||||
|
|
||||||
return Parse.Promise.when(promises);
|
return Parse.Promise.when(promises);
|
||||||
}).then((results) => {
|
}).then((results) => {
|
||||||
|
|
||||||
results.forEach((result) => {
|
results.forEach((result) => {
|
||||||
let id = result.id;
|
let id = result.id;
|
||||||
let roleIds = result.roleIds;
|
let roleIds = result.roleIds;
|
||||||
if (id == admin.id) {
|
if (id == admin.id) {
|
||||||
expect(roleIds.length).toBe(2);
|
expect(roleIds.length).toBe(2);
|
||||||
expect(roleIds.indexOf(moderator.id)).not.toBe(-1);
|
expect(roleIds.indexOf(moderator.id)).not.toBe(-1);
|
||||||
expect(roleIds.indexOf(contentCreator.id)).not.toBe(-1);
|
expect(roleIds.indexOf(contentManager.id)).not.toBe(-1);
|
||||||
} else if (id == moderator.id) {
|
} else if (id == moderator.id) {
|
||||||
expect(roleIds.length).toBe(1);
|
expect(roleIds.length).toBe(1);
|
||||||
expect(roleIds.indexOf(contentCreator.id)).toBe(0);
|
expect(roleIds.indexOf(contentManager.id)).toBe(0);
|
||||||
} else if (id == contentCreator.id) {
|
} else if (id == contentManager.id) {
|
||||||
expect(roleIds.length).toBe(0);
|
expect(roleIds.length).toBe(0);
|
||||||
|
} else if (id == superModerator.id) {
|
||||||
|
expect(roleIds.length).toBe(3);
|
||||||
|
expect(roleIds.indexOf(moderator.id)).not.toBe(-1);
|
||||||
|
expect(roleIds.indexOf(contentManager.id)).not.toBe(-1);
|
||||||
|
expect(roleIds.indexOf(superContentManager.id)).not.toBe(-1);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
done();
|
done();
|
||||||
|
|||||||
@@ -173,14 +173,9 @@ Auth.prototype._getAllRoleNamesForId = function(roleID) {
|
|||||||
}).then(function(results){
|
}).then(function(results){
|
||||||
// Flatten
|
// Flatten
|
||||||
let roleIDs = results.reduce( (memo, result) => {
|
let roleIDs = results.reduce( (memo, result) => {
|
||||||
if (typeof result == "object") {
|
return memo.concat(result);
|
||||||
memo = memo.concat(result);
|
|
||||||
} else {
|
|
||||||
memo.push(result);
|
|
||||||
}
|
|
||||||
return memo;
|
|
||||||
}, []);
|
}, []);
|
||||||
return Promise.resolve(roleIDs);
|
return Promise.resolve([...new Set(roleIDs)]);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user