ParseUser user = acl.getUnresolvedUser(); if (user != null && user.isCurrentUser()) { traverseInternal(user, true, seen);
@Override public Task<Void> then(Task<Void> task) { if (!object.isDataAvailable(KEY_ACL)) { return Task.forResult(null); } final ParseACL acl = object.getACL(false); if (acl == null) { return Task.forResult(null); } ParseUser user = acl.getUnresolvedUser(); if (user == null || !user.isCurrentUser()) { return Task.forResult(null); } return ParseUser.pinCurrentUserIfNeededAsync(user); } });
@Test public void testSetUserReadAccessWithLazyUser() { ParseUser unresolvedUser = mock(ParseUser.class); when(unresolvedUser.isLazy()).thenReturn(true); ParseACL acl = new ParseACL(); acl.setReadAccess(unresolvedUser, true); assertSame(unresolvedUser, acl.getUnresolvedUser()); verify(unresolvedUser, times(1)).registerSaveListener(any(GetCallback.class)); assertTrue(acl.getPermissionsById().containsKey(UNRESOLVED_KEY)); assertTrue(acl.getReadAccess(unresolvedUser)); assertEquals(1, acl.getPermissionsById().size()); }
@Test public void testCreateACLFromJSONObject() throws Exception { JSONObject aclJson = new JSONObject(); JSONObject permission = new JSONObject(); permission.put(READ_PERMISSION, true); permission.put(WRITE_PERMISSION, true); aclJson.put("userId", permission); ParseUser unresolvedUser = new ParseUser(); JSONObject unresolvedUserJson = new JSONObject(); aclJson.put("unresolvedUser", unresolvedUserJson); // Mock decoder ParseDecoder mockDecoder = mock(ParseDecoder.class); when(mockDecoder.decode(eq(unresolvedUserJson))).thenReturn(unresolvedUser); ParseACL acl = ParseACL.createACLFromJSONObject(aclJson, mockDecoder); assertSame(unresolvedUser, acl.getUnresolvedUser()); assertTrue(acl.getReadAccess("userId")); assertTrue(acl.getWriteAccess("userId")); assertEquals(1, acl.getPermissionsById().size()); }
@Test public void testSetUserWriteAccessWithLazyUser() { ParseUser user = mock(ParseUser.class); when(user.isLazy()).thenReturn(true); ParseACL acl = new ParseACL(); acl.setWriteAccess(user, true); assertSame(user, acl.getUnresolvedUser()); verify(user, times(1)).registerSaveListener(any(GetCallback.class)); assertTrue(acl.getPermissionsById().containsKey(UNRESOLVED_KEY)); assertTrue(acl.getWriteAccess(user)); assertEquals(1, acl.getPermissionsById().size()); } //endregion
assertNull(copiedACL.getUnresolvedUser());
@Test public void testCopy() { ParseACL acl = new ParseACL(); final ParseUser unresolvedUser = mock(ParseUser.class); when(unresolvedUser.isLazy()).thenReturn(true); // This will set unresolvedUser and permissionsById acl.setReadAccess(unresolvedUser, true); acl.setWriteAccess(unresolvedUser, true); // We need to reset unresolvedUser since registerSaveListener will be triggered once in // setReadAccess() reset(unresolvedUser); ParseACL copiedACL = new ParseACL(acl); assertEquals(1, copiedACL.getPermissionsById().size()); assertTrue(copiedACL.getPermissionsById().containsKey(UNRESOLVED_KEY)); assertTrue(copiedACL.getReadAccess(unresolvedUser)); assertTrue(copiedACL.getWriteAccess(unresolvedUser)); assertFalse(copiedACL.isShared()); assertSame(unresolvedUser, copiedACL.getUnresolvedUser()); verify(unresolvedUser, times(1)).registerSaveListener(any(GetCallback.class)); }
@Test public void testUnresolvedUser() { ParseACL acl = new ParseACL(); ParseUser user = new ParseUser(); setLazy(user); // This will set unresolvedUser in acl acl.setReadAccess(user, true); assertTrue(acl.hasUnresolvedUser()); assertSame(user, acl.getUnresolvedUser()); } }
@Test public void testResolveUserWithNewUser() { ParseUser unresolvedUser = new ParseUser(); setLazy(unresolvedUser); ParseACL acl = new ParseACL(); acl.setReadAccess(unresolvedUser, true); ParseUser other = new ParseUser(); // local id creation fails if we don't have Android environment unresolvedUser.localId = "someId"; other.localId = "someOtherId"; acl.resolveUser(other); // Make sure unresolvedUser is not changed assertSame(unresolvedUser, acl.getUnresolvedUser()); }
@Test public void testResolveUserWithUnresolvedUser() { ParseACL acl = new ParseACL(); ParseUser unresolvedUser = new ParseUser(); setLazy(unresolvedUser); // This will set the unresolvedUser in acl acl.setReadAccess(unresolvedUser, true); acl.setWriteAccess(unresolvedUser, true); unresolvedUser.setObjectId("test"); acl.resolveUser(unresolvedUser); assertNull(acl.getUnresolvedUser()); assertTrue(acl.getReadAccess(unresolvedUser)); assertTrue(acl.getWriteAccess(unresolvedUser)); assertEquals(1, acl.getPermissionsById().size()); assertFalse(acl.getPermissionsById().containsKey(UNRESOLVED_KEY)); }