Skip to content

Commit 852d0b6

Browse files
committed
Spec
Fix Spec
1 parent a368995 commit 852d0b6

File tree

1 file changed

+132
-0
lines changed

1 file changed

+132
-0
lines changed

spec/ParseGraphQLServer.spec.js

Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4906,6 +4906,138 @@ describe('ParseGraphQLServer', () => {
49064906
expect(Date.parse(getResult.data.get.updatedAt)).not.toEqual(NaN);
49074907
});
49084908

4909+
it('should support ACL', async () => {
4910+
const someClass = new Parse.Object('SomeClass');
4911+
await someClass.save();
4912+
4913+
const user = new Parse.User();
4914+
user.set('username', 'username');
4915+
user.set('password', 'password');
4916+
await user.signUp();
4917+
4918+
const role = new Parse.Role();
4919+
role.set('name', 'aRole');
4920+
await role.save();
4921+
4922+
await parseGraphQLServer.parseGraphQLSchema.databaseController.schemaCache.clear();
4923+
4924+
const {
4925+
data: { createSomeClass },
4926+
} = await apolloClient.mutate({
4927+
mutation: gql`
4928+
mutation Create($fields: CreateSomeClassFieldsInput) {
4929+
createSomeClass(fields: $fields) {
4930+
objectId
4931+
ACL {
4932+
users {
4933+
userId
4934+
read
4935+
write
4936+
}
4937+
roles {
4938+
roleName
4939+
read
4940+
write
4941+
}
4942+
public {
4943+
read
4944+
write
4945+
}
4946+
}
4947+
}
4948+
}
4949+
`,
4950+
variables: {
4951+
fields: {
4952+
ACL: {
4953+
users: [{ userId: user.id, read: true, write: true }],
4954+
roles: [{ roleName: 'aRole', read: true }],
4955+
public: { read: true },
4956+
},
4957+
},
4958+
},
4959+
});
4960+
4961+
const expectedCreateACL = {
4962+
users: [{ userId: user.id, read: true, write: true }],
4963+
roles: [{ roleName: 'aRole', read: true, write: null }],
4964+
public: { read: true, write: null },
4965+
};
4966+
4967+
const query1 = new Parse.Query('SomeClass');
4968+
const obj1 = (await query1.get(createSomeClass.objectId, {
4969+
useMasterKey: true,
4970+
})).toJSON();
4971+
4972+
expect(obj1.ACL['role:aRole']).toBeDefined();
4973+
expect(obj1.ACL['role:aRole']).toEqual({ read: true });
4974+
expect(obj1.ACL[user.id]).toBeDefined();
4975+
expect(obj1.ACL[user.id]).toEqual({ read: true, write: true });
4976+
expect(obj1.ACL['*']).toBeDefined();
4977+
expect(obj1.ACL['*']).toEqual({ read: true });
4978+
4979+
expect(createSomeClass.objectId).toBeDefined();
4980+
expect(createSomeClass.ACL).toEqual(expectedCreateACL);
4981+
4982+
const {
4983+
data: { updateSomeClass },
4984+
} = await apolloClient.mutate({
4985+
mutation: gql`
4986+
mutation Update(
4987+
$objectId: ID
4988+
$fields: CreateSomeClassFieldsInput
4989+
) {
4990+
updateSomeClass(objectId: $objectId, fields: $fields) {
4991+
objectId
4992+
ACL {
4993+
users {
4994+
userId
4995+
read
4996+
write
4997+
}
4998+
roles {
4999+
roleName
5000+
read
5001+
write
5002+
}
5003+
public {
5004+
read
5005+
write
5006+
}
5007+
}
5008+
}
5009+
}
5010+
`,
5011+
variables: {
5012+
objectId: createSomeClass.objectId,
5013+
fields: {
5014+
ACL: {
5015+
roles: [{ roleName: 'aRole', read: true, write: true }],
5016+
},
5017+
},
5018+
},
5019+
});
5020+
5021+
const expectedUpdateACL = {
5022+
users: null,
5023+
roles: [{ roleName: 'aRole', read: true, write: true }],
5024+
public: null,
5025+
};
5026+
5027+
const query2 = new Parse.Query('SomeClass');
5028+
const obj2 = (await query2.get(createSomeClass.objectId, {
5029+
useMasterKey: true,
5030+
})).toJSON();
5031+
5032+
expect(obj2.ACL['role:aRole']).toBeDefined();
5033+
expect(obj2.ACL['role:aRole']).toEqual({ read: true, write: true });
5034+
expect(obj2.ACL[user.id]).toBeUndefined();
5035+
expect(obj2.ACL['*']).toBeUndefined();
5036+
5037+
expect(updateSomeClass.objectId).toBeDefined();
5038+
expect(updateSomeClass.ACL).toEqual(expectedUpdateACL);
5039+
});
5040+
49095041
it('should support pointer on create', async () => {
49105042
const company = new Parse.Object('Company');
49115043
company.set('name', 'imACompany1');

0 commit comments

Comments
 (0)