Skip to content

Commit d04ecdf

Browse files
committed
Fix set user state add none existed authData bug
1 parent 65546a9 commit d04ecdf

File tree

2 files changed

+30
-1
lines changed

2 files changed

+30
-1
lines changed

Parse/src/main/java/com/parse/ParseUser.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -510,7 +510,7 @@ public Task<Void> then(Task<Void> task) throws Exception {
510510
newStateBuilder.put(KEY_SESSION_TOKEN, getSessionToken());
511511
}
512512
// Avoid clearing authData when updating the current user's State via ParseQuery result
513-
if (getAuthData() != null && newState.get(KEY_AUTH_DATA) == null) {
513+
if (getAuthData().size() > 0 && newState.get(KEY_AUTH_DATA) == null) {
514514
newStateBuilder.put(KEY_AUTH_DATA, getAuthData());
515515
}
516516
newState = newStateBuilder.build();

Parse/src/test/java/com/parse/ParseUserTest.java

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1435,6 +1435,35 @@ public void testSetCurrentUserStateWithoutAuthData() throws Exception {
14351435
assertEquals("valueAgain", user.get("key"));
14361436
}
14371437

1438+
@Test
1439+
public void testSetNoAuthDataCurrentUserStateWithoutAuthData() throws Exception {
1440+
// Set user initial state
1441+
ParseUser.State userState = new ParseUser.State.Builder()
1442+
.objectId("test")
1443+
.put("oldKey", "oldValue")
1444+
.put("key", "value")
1445+
.build();
1446+
ParseUser user = ParseObject.from(userState);
1447+
user.setIsCurrentUser(true);
1448+
// Build new state
1449+
ParseUser.State newUserState = new ParseUser.State.Builder()
1450+
.objectId("testAgain")
1451+
.put("key", "valueAgain")
1452+
.build();
1453+
1454+
user.setState(newUserState);
1455+
1456+
// Make sure we do not add none existed authData
1457+
assertFalse(user.keySet().contains("authData"));
1458+
assertEquals(1, user.keySet().size());
1459+
assertEquals(0, user.getAuthData().size());
1460+
// Make sure old state is deleted
1461+
assertFalse(user.has("oldKey"));
1462+
// Make sure new state is set
1463+
assertEquals("testAgain", user.getObjectId());
1464+
assertEquals("valueAgain", user.get("key"));
1465+
}
1466+
14381467
//endregion
14391468

14401469
private static void setLazy(ParseUser user) {

0 commit comments

Comments
 (0)