/** * Returns true iff the object is visible based on its read ACL and the given user objectId. */ /* package */ static <T extends ParseObject> boolean hasWriteAccess(ParseUser user, T object) { if (user == object) { return true; } ParseACL acl = object.getACL(); if (acl == null) { return true; } if (acl.getPublicWriteAccess()) { return true; } return user != null && acl.getWriteAccess(user); // TODO: Implement roles. }
@Test public void testHasWriteAccessWithPublicWriteAccess() { ParseACL acl = mock(ParseACL.class); when(acl.getPublicWriteAccess()).thenReturn(true); ParseObject object = mock(ParseObject.class); when(object.getACL()).thenReturn(acl); assertTrue(OfflineQueryLogic.hasWriteAccess(null, object)); }
@Test public void testGetPublicReadAccess() { ParseACL acl = new ParseACL(); acl.setPublicWriteAccess(true); assertTrue(acl.getPublicWriteAccess()); }
@Test public void testGetPublicWriteAccess() { ParseACL acl = new ParseACL(); acl.setPublicWriteAccess(true); assertTrue(acl.getPublicWriteAccess()); }
@Test public void testSetPublicWriteAccessAllowed() { ParseACL acl = new ParseACL(); acl.setPublicWriteAccess(true); assertTrue(acl.getPublicWriteAccess()); assertEquals(1, acl.getPermissionsById().size()); }
@Test public void testParcelable() { ParseACL acl = new ParseACL(); acl.setReadAccess("userId", true); ParseUser user = new ParseUser(); user.setObjectId("userId2"); acl.setReadAccess(user, true); acl.setRoleWriteAccess("role", true); acl.setShared(true); Parcel parcel = Parcel.obtain(); acl.writeToParcel(parcel, 0); parcel.setDataPosition(0); acl = ParseACL.CREATOR.createFromParcel(parcel); assertTrue(acl.getReadAccess("userId")); assertTrue(acl.getReadAccess(user)); assertTrue(acl.getRoleWriteAccess("role")); assertTrue(acl.isShared()); assertFalse(acl.getPublicReadAccess()); assertFalse(acl.getPublicWriteAccess()); }