ParseUser extends ParseObject { public static Task<Void> enableRevocableSessionInBackground() { ParseCorePlugins.getInstance().registerUserController( new NetworkUserController(ParsePlugins.get().restClient(), true)); return getCurrentUserController().getAsync(false).onSuccessTask(new Continuation<ParseUser, Task<Void>>() { @Override public Task<Void> then(Task<ParseUser> task) { ParseUser user = task.getResult(); if (user == null) { return Task.forResult(null); } return user.upgradeToRevocableSessionAsync(); } }); } ParseUser(); static ParseQuery<ParseUser> getQuery(); static Task<ParseUser> logInInBackground(String username, String password); static ParseUser logIn(String username, String password); static void logInInBackground(final String username, final String password,
                                         LogInCallback callback); static Task<ParseUser> becomeInBackground(String sessionToken); static ParseUser become(String sessionToken); static void becomeInBackground(final String sessionToken, LogInCallback callback); static ParseUser getCurrentUser(); static String getCurrentSessionToken(); static Task<String> getCurrentSessionTokenAsync(); static Task<Void> logOutInBackground(); static void logOutInBackground(LogOutCallback callback); static void logOut(); static Task<Void> requestPasswordResetInBackground(String email); static void requestPasswordReset(String email); static void requestPasswordResetInBackground(final String email,
                                                        RequestPasswordResetCallback callback); static void registerAuthenticationCallback(
            String authType, AuthenticationCallback callback); static Task<ParseUser> logInWithInBackground(
            final String authType, final Map<String, String> authData); static void enableAutomaticUser(); static Task<Void> enableRevocableSessionInBackground(); boolean isAuthenticated(); @Override void remove(@NonNull String key); String getSessionToken(); String getUsername(); void setUsername(String username); void setPassword(String password); String getEmail(); void setEmail(String email); boolean isNew(); @Override void put(@NonNull String key, @NonNull Object value); @SuppressWarnings("unchecked") @Override ParseUser fetch(); Task<Void> signUpInBackground(); void signUp(); void signUpInBackground(SignUpCallback callback); @SuppressWarnings("unchecked") @Override ParseUser fetchIfNeeded(); boolean isLinked(String authType); Task<Void> linkWithInBackground(
            String authType, Map<String, String> authData); Task<Void> unlinkFromInBackground(final String authType);  }
@Test public void testEnableRevocableSessionInBackgroundWithNoCurrentUser() throws Exception { ParsePlugins mockPlugins = mock(ParsePlugins.class); when(mockPlugins.restClient()).thenReturn(null); ParsePlugins.set(mockPlugins); ParseCurrentUserController currentUserController = mock(ParseCurrentUserController.class); when(currentUserController.getAsync(anyBoolean())).thenReturn(Task.<ParseUser>forResult(null)); ParseCorePlugins.getInstance().registerCurrentUserController(currentUserController); ParseTaskUtils.wait(ParseUser.enableRevocableSessionInBackground()); verify(currentUserController, times(1)).getAsync(false); }