Skip to content

Commit 62f9912

Browse files
committed
Merge pull request #312 from ParsePlatform/wangmengyan.fix_set_user_state_add_none_existed_authData_bug
Fix ParseUser#setState(state) unnecessarily creating authData
2 parents 65546a9 + 5e29947 commit 62f9912

File tree

2 files changed

+31
-2
lines changed

2 files changed

+31
-2
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: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1428,7 +1428,36 @@ public void testSetCurrentUserStateWithoutAuthData() throws Exception {
14281428
// Make sure we keep the authData
14291429
assertEquals(1, user.getAuthData().size());
14301430
assertEquals(authData, user.getAuthData().get(authType));
1431-
// Make sure old state is deleted
1431+
// Make sure old state is replaced
1432+
assertFalse(user.has("oldKey"));
1433+
// Make sure new state is set
1434+
assertEquals("testAgain", user.getObjectId());
1435+
assertEquals("valueAgain", user.get("key"));
1436+
}
1437+
1438+
@Test
1439+
public void testSetStateDoesNotAddNonExistentAuthData() 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 authData when it did not exist before
1457+
assertFalse(user.keySet().contains("authData"));
1458+
assertEquals(1, user.keySet().size());
1459+
assertEquals(0, user.getAuthData().size());
1460+
// Make sure old state is replaced
14321461
assertFalse(user.has("oldKey"));
14331462
// Make sure new state is set
14341463
assertEquals("testAgain", user.getObjectId());

0 commit comments

Comments
 (0)