|
2 | 2 |
|
3 | 3 | // Roles are not accessible without the master key, so they are not intended
|
4 | 4 | // for use by clients. We can manually test them using the master key.
|
| 5 | +var Auth = require("../src/Auth").Auth; |
| 6 | +var Config = require("../src/Config"); |
5 | 7 |
|
6 | 8 | describe('Parse Role testing', () => {
|
7 | 9 |
|
@@ -57,6 +59,48 @@ describe('Parse Role testing', () => {
|
57 | 59 | });
|
58 | 60 |
|
59 | 61 | });
|
| 62 | + |
| 63 | + it("should recursively load roles", (done) => { |
| 64 | + |
| 65 | + var rolesNames = ["FooRole", "BarRole", "BazRole"]; |
| 66 | + |
| 67 | + var createRole = function(name, parent, user) { |
| 68 | + var role = new Parse.Object("_Role") |
| 69 | + role.set("name", name); |
| 70 | + if (user) { |
| 71 | + var users = role.relation('users'); |
| 72 | + users.add(user); |
| 73 | + } |
| 74 | + if (parent) { |
| 75 | + role.relation('roles').add(parent); |
| 76 | + } |
| 77 | + return role.save({}, { useMasterKey: true }); |
| 78 | + } |
| 79 | + var roleIds = {}; |
| 80 | + createTestUser().then( (user) => { |
| 81 | + |
| 82 | + return createRole(rolesNames[0], null, null).then( (aRole) => { |
| 83 | + roleIds[aRole.get("name")] = aRole.id; |
| 84 | + return createRole(rolesNames[1], aRole, null); |
| 85 | + }).then( (anotherRole) => { |
| 86 | + roleIds[anotherRole.get("name")] = anotherRole.id; |
| 87 | + return createRole(rolesNames[2], anotherRole, user); |
| 88 | + }).then( (lastRole) => { |
| 89 | + roleIds[lastRole.get("name")] = lastRole.id; |
| 90 | + var auth = new Auth(new Config("test") , true, user); |
| 91 | + return auth._loadRoles(); |
| 92 | + }) |
| 93 | + }).then( (roles) => { |
| 94 | + expect(roles.length).toEqual(3); |
| 95 | + rolesNames.forEach( (name) => { |
| 96 | + expect(roles.indexOf('role:'+name)).not.toBe(-1); |
| 97 | + }) |
| 98 | + done(); |
| 99 | + }, function(err){ |
| 100 | + fail("should succeed") |
| 101 | + done(); |
| 102 | + }); |
| 103 | + }); |
60 | 104 |
|
61 | 105 | });
|
62 | 106 |
|
0 commit comments