it('can match ACL with subscription sessionToken checking error', function (done) { const parseLiveQueryServer = new ParseLiveQueryServer({}); const acl = new Parse.ACL(); acl.setReadAccess(testUserId, true); // Mock sessionTokenCache will return error when sessionToken is null, this is just // the behaviour of our mock sessionTokenCache, not real sessionTokenCache const client = { getSubscriptionInfo: jasmine .createSpy('getSubscriptionInfo') .and.returnValue({ sessionToken: null, }), }; const requestId = 0; parseLiveQueryServer ._matchesACL(acl, client, requestId) .then(function (isMatched) { expect(isMatched).toBe(false); done(); }); });
it('acl sharing with another user and update', async done => { // Sign in as Bob. const bob = await Parse.User.signUp('bob', 'pass'); await Parse.User.logOut(); // Sign in as Alice. const alice = await Parse.User.signUp('alice', 'wonderland'); // Create an object shared by Bob and Alice. const object = new TestObject(); const acl = new Parse.ACL(alice); acl.setWriteAccess(bob, true); acl.setReadAccess(bob, true); object.setACL(acl); await object.save(); equal(object.getACL().getReadAccess(alice), true); equal(object.getACL().getWriteAccess(alice), true); equal(object.getACL().getReadAccess(bob), true); equal(object.getACL().getWriteAccess(bob), true); equal(object.getACL().getPublicReadAccess(), false); equal(object.getACL().getPublicWriteAccess(), false); // Sign in as Bob again. await Parse.User.logIn('bob', 'pass'); object.set('foo', 'bar'); object.save().then(done); });
ACL.setReadAccess(user, true); ACL.setWriteAccess(user, true); obj.setACL(ACL);
const acl = new Parse.ACL(alice); acl.setWriteAccess(bob, true); acl.setReadAccess(bob, true); object.setACL(acl); await object.save();
const acl = new Parse.ACL(alice); acl.setWriteAccess(bob, true); acl.setReadAccess(bob, true); object.setACL(acl); await object.save();
ACL.setReadAccess(user, true); ACL.setWriteAccess(user, true); obj.setACL(ACL);
const acl = new Parse.ACL(alice); acl.setWriteAccess(bob, true); acl.setReadAccess(bob, true); object.setACL(acl); await object.save();
it('acl sharing with another user and public find', async done => { const bob = await Parse.User.signUp('bob', 'pass'); await Parse.User.logOut(); // Sign in as Alice. const alice = await Parse.User.signUp('alice', 'wonderland'); // Create an object shared by Bob and Alice. const object = new TestObject(); const acl = new Parse.ACL(alice); acl.setWriteAccess(bob, true); acl.setReadAccess(bob, true); object.setACL(acl); await object.save(); equal(object.getACL().getReadAccess(alice), true); equal(object.getACL().getWriteAccess(alice), true); equal(object.getACL().getReadAccess(bob), true); equal(object.getACL().getWriteAccess(bob), true); equal(object.getACL().getPublicReadAccess(), false); equal(object.getACL().getPublicWriteAccess(), false); // Start making requests by the public. Parse.User.logOut().then(() => { const query = new Parse.Query(TestObject); query.find().then(function(results) { equal(results.length, 0); done(); }); }); });
it('acl sharing with another user and get', async done => { // Sign in as Bob. const bob = await Parse.User.signUp('bob', 'pass'); await Parse.User.logOut(); const alice = await Parse.User.signUp('alice', 'wonderland'); // Create an object shared by Bob and Alice. const object = new TestObject(); const acl = new Parse.ACL(alice); acl.setWriteAccess(bob, true); acl.setReadAccess(bob, true); object.setACL(acl); await object.save(); equal(object.getACL().getReadAccess(alice), true); equal(object.getACL().getWriteAccess(alice), true); equal(object.getACL().getReadAccess(bob), true); equal(object.getACL().getWriteAccess(bob), true); equal(object.getACL().getPublicReadAccess(), false); equal(object.getACL().getPublicWriteAccess(), false); // Sign in as Bob again. await Parse.User.logIn('bob', 'pass'); const query = new Parse.Query(TestObject); query.get(object.id).then(result => { ok(result); equal(result.id, object.id); done(); }); });
const acl = new Parse.ACL(alice); acl.setWriteAccess(bob, true); acl.setReadAccess(bob, true); object.setACL(acl); await object.save();
it('acl sharing with another user and delete', async done => { // Sign in as Bob. const bob = await Parse.User.signUp('bob', 'pass'); await Parse.User.logOut(); // Sign in as Alice. const alice = await Parse.User.signUp('alice', 'wonderland'); // Create an object shared by Bob and Alice. const object = new TestObject(); const acl = new Parse.ACL(alice); acl.setWriteAccess(bob, true); acl.setReadAccess(bob, true); object.setACL(acl); await object.save(); equal(object.getACL().getReadAccess(alice), true); equal(object.getACL().getWriteAccess(alice), true); equal(object.getACL().getReadAccess(bob), true); equal(object.getACL().getWriteAccess(bob), true); equal(object.getACL().getPublicReadAccess(), false); equal(object.getACL().getPublicWriteAccess(), false); // Sign in as Bob again. await Parse.User.logIn('bob', 'pass'); object.set('foo', 'bar'); object.destroy().then(done); });
it('can match ACL with valid client sessionToken', function (done) { const parseLiveQueryServer = new ParseLiveQueryServer({}); const acl = new Parse.ACL(); acl.setReadAccess(testUserId, true); // Mock sessionTokenCache will return false when sessionToken is undefined const client = { sessionToken: 'sessionToken', getSubscriptionInfo: jasmine .createSpy('getSubscriptionInfo') .and.returnValue({ sessionToken: undefined, }), }; const requestId = 0; parseLiveQueryServer ._matchesACL(acl, client, requestId) .then(function (isMatched) { expect(isMatched).toBe(true); done(); }); });
it('can match ACL with valid subscription sessionToken', function (done) { const parseLiveQueryServer = new ParseLiveQueryServer({}); const acl = new Parse.ACL(); acl.setReadAccess(testUserId, true); const client = { getSubscriptionInfo: jasmine .createSpy('getSubscriptionInfo') .and.returnValue({ sessionToken: 'sessionToken', }), }; const requestId = 0; parseLiveQueryServer ._matchesACL(acl, client, requestId) .then(function (isMatched) { expect(isMatched).toBe(true); done(); }); });
it('can match ACL with invalid subscription and client sessionToken', function (done) { const parseLiveQueryServer = new ParseLiveQueryServer({}); const acl = new Parse.ACL(); acl.setReadAccess(testUserId, true); // Mock sessionTokenCache will return false when sessionToken is undefined const client = { sessionToken: undefined, getSubscriptionInfo: jasmine .createSpy('getSubscriptionInfo') .and.returnValue({ sessionToken: undefined, }), }; const requestId = 0; parseLiveQueryServer ._matchesACL(acl, client, requestId) .then(function (isMatched) { expect(isMatched).toBe(false); done(); }); });
it('can match ACL with client sessionToken checking error', function (done) { const parseLiveQueryServer = new ParseLiveQueryServer({}); const acl = new Parse.ACL(); acl.setReadAccess(testUserId, true); // Mock sessionTokenCache will return error when sessionToken is null const client = { sessionToken: null, getSubscriptionInfo: jasmine .createSpy('getSubscriptionInfo') .and.returnValue({ sessionToken: null, }), }; const requestId = 0; parseLiveQueryServer ._matchesACL(acl, client, requestId) .then(function (isMatched) { expect(isMatched).toBe(false); done(); }); });