@Override public Task<Void> then(Task<ParseUser> task) { ParseUser user = task.getResult(); if (user == null) { return Task.forResult(null); } return user.upgradeToRevocableSessionAsync(); } });
@Test public void testEnableRevocableSessionInBackgroundWithCurrentUser() throws Exception { // Register a mock ParsePlugins to make restClient() work ParsePlugins mockPlugins = mock(ParsePlugins.class); when(mockPlugins.restClient()).thenReturn(null); ParsePlugins.set(mockPlugins); // Register a mock currentUserController to verify setAsync ParseUser mockUser = mock(ParseUser.class); ParseCurrentUserController currentUserController = mock(ParseCurrentUserController.class); when(currentUserController.getAsync(anyBoolean())).thenReturn(Task.forResult(mockUser)); ParseCorePlugins.getInstance().registerCurrentUserController(currentUserController); ParseTaskUtils.wait(ParseUser.enableRevocableSessionInBackground()); verify(currentUserController, times(1)).getAsync(false); verify(mockUser, times(1)).upgradeToRevocableSessionAsync(); }
@Test public void testUpgradeToRevocableSessionAsync() throws Exception { // Register a mock currentUserController to verify setAsync ParseCurrentUserController currentUserController = mock(ParseCurrentUserController.class); ParseCorePlugins.getInstance().registerCurrentUserController(currentUserController); // Register a mock sessionController to verify revokeAsync() NetworkSessionController sessionController = mock(NetworkSessionController.class); ParseSession.State state = new ParseSession.State.Builder("_Session") .put("sessionToken", "r:newSessionToken") .build(); when(sessionController.upgradeToRevocable(anyString())) .thenReturn(Task.forResult(state)); ParseCorePlugins.getInstance().registerSessionController(sessionController); // Set user initial state ParseUser.State userState = new ParseUser.State.Builder() .objectId("test") .sessionToken("oldSessionToken") .build(); ParseUser user = ParseObject.from(userState); ParseTaskUtils.wait(user.upgradeToRevocableSessionAsync()); // Make sure we update to new sessionToken assertEquals("r:newSessionToken", user.getSessionToken()); // Make sure we update currentUser verify(currentUserController, times(1)).setAsync(user); }