diff --git a/Parse/src/main/java/com/parse/ParseUser.java b/Parse/src/main/java/com/parse/ParseUser.java index 4324d6098..1e08cc08b 100644 --- a/Parse/src/main/java/com/parse/ParseUser.java +++ b/Parse/src/main/java/com/parse/ParseUser.java @@ -1294,6 +1294,7 @@ private Task linkWithAsync( public Task then(Task task) throws Exception { synchronized (mutex) { if (task.isFaulted() || task.isCancelled()) { + removeAuthData(authType); restoreAnonymity(oldAnonymousData); return task; } diff --git a/Parse/src/test/java/com/parse/ParseUserTest.java b/Parse/src/test/java/com/parse/ParseUserTest.java index 8a275b408..b5fe54fac 100644 --- a/Parse/src/test/java/com/parse/ParseUserTest.java +++ b/Parse/src/test/java/com/parse/ParseUserTest.java @@ -699,13 +699,13 @@ public void testlinkWithInBackgroundWithSaveAsyncFailure() throws Exception { partialMockUser.linkWithInBackground(authType, authData); linkTask.waitForCompletion(); - // Make sure new authData is added - assertSame(authData, partialMockUser.getAuthData().get(authType)); // Make sure we save the user verify(partialMockUser, times(1)) .saveAsync(eq("sessionTokenAgain"), eq(false), Matchers.>any()); // Make sure old authData is restored assertSame(anonymousAuthData, partialMockUser.getAuthData().get(ParseAnonymousUtils.AUTH_TYPE)); + // Make sure failed new authData is cleared + assertNull(partialMockUser.getAuthData().get("facebook")); // Verify exception assertSame(saveException, linkTask.getError()); }