ParseUser extends ParseObject { static Task<Void> pinCurrentUserIfNeededAsync(ParseUser user) { if (!Parse.isLocalDatastoreEnabled()) { throw new IllegalStateException("Method requires Local Datastore. " + "Please refer to `Parse#enableLocalDatastore(Context)`."); } return getCurrentUserController().setIfNeededAsync(user); } 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 testPinCurrentUserIfNeededAsyncWithNoLDSEnabled() { thrown.expect(IllegalStateException.class); thrown.expectMessage("Method requires Local Datastore."); ParseUser.pinCurrentUserIfNeededAsync(new ParseUser()); }
@Test public void testPinCurrentUserIfNeededAsync() { Parse.enableLocalDatastore(null); ParseUser currentUser = new ParseUser(); currentUser.setObjectId("test"); CachedCurrentUserController currentUserController = mock(CachedCurrentUserController.class); when(currentUserController.setIfNeededAsync(any(ParseUser.class))) .thenReturn(Task.<Void>forResult(null)); ParseCorePlugins.getInstance().registerCurrentUserController(currentUserController); ParseUser user = new ParseUser(); ParseUser.pinCurrentUserIfNeededAsync(user); verify(currentUserController, times(1)).setIfNeededAsync(user); }