@Override public Void call() { callback.onRestore(null); return null; } }, ParseExecutors.io());
@Override public Boolean call() { return callback.onRestore(authData); } }, ParseExecutors.io());
@Test public void testRestoreAuthentication() throws ParseException { when(controller.getAsync(false)).thenReturn(Task.<ParseUser>forResult(null)); when(provider.onRestore(Matchers.<Map<String, String>>any())) .thenReturn(true); manager.register("test_provider", provider); Map<String, String> authData = new HashMap<>(); ParseTaskUtils.wait(manager.restoreAuthenticationAsync("test_provider", authData)); verify(provider).onRestore(authData); }
@Test public void testDeauthenticateAsync() throws ParseException { when(controller.getAsync(false)).thenReturn(Task.<ParseUser>forResult(null)); manager.register("test_provider", provider); ParseTaskUtils.wait(manager.deauthenticateAsync("test_provider")); verify(provider).onRestore(null); } }
@Test public void testSynchronizeAllAuthData() throws Exception { // Register a mock currentUserController to make getCurrentUser work ParseUser currentUser = new ParseUser(); ParseCurrentUserController currentUserController = mock(ParseCurrentUserController.class); when(currentUserController.getAsync(anyBoolean())).thenReturn(Task.forResult(currentUser)); ParseCorePlugins.getInstance().registerCurrentUserController(currentUserController); // Register mock callbacks AuthenticationCallback callbacks = mock(AuthenticationCallback.class); when(callbacks.onRestore(Matchers.<Map<String, String>>any())) .thenReturn(true); ParseUser.registerAuthenticationCallback("facebook", callbacks); // Set user initial state String facebookAuthType = "facebook"; Map<String, String> facebookAuthData = new HashMap<>(); facebookAuthData.put("facebookToken", "facebookTest"); ParseUser.State userState = new ParseUser.State.Builder() .putAuthData(facebookAuthType, facebookAuthData) .build(); ParseUser user = ParseObject.from(userState); user.setIsCurrentUser(true); ParseTaskUtils.wait(user.synchronizeAllAuthDataAsync()); // Make sure we restore authentication verify(callbacks, times(1)).onRestore(facebookAuthData); }
@Test public void testSynchronizeAuthData() throws Exception { // Register a mock currentUserController to make getCurrentUser work ParseUser currentUser = new ParseUser(); ParseCurrentUserController currentUserController = mock(ParseCurrentUserController.class); when(currentUserController.getAsync(anyBoolean())).thenReturn(Task.forResult(currentUser)); ParseCorePlugins.getInstance().registerCurrentUserController(currentUserController); // Register mock callbacks AuthenticationCallback callbacks = mock(AuthenticationCallback.class); when(callbacks.onRestore(Matchers.<Map<String, String>>any())) .thenReturn(true); ParseUser.registerAuthenticationCallback("facebook", callbacks); // Set user initial state String authType = "facebook"; Map<String, String> authData = new HashMap<>(); authData.put("facebookToken", "facebookTest"); ParseUser.State userState = new ParseUser.State.Builder() .putAuthData(authType, authData) .build(); ParseUser user = ParseObject.from(userState); user.setIsCurrentUser(true); ParseTaskUtils.wait(user.synchronizeAuthDataAsync(authType)); // Make sure we restore authentication verify(callbacks, times(1)).onRestore(authData); }
@Test public void testRestoreAuthentication() throws java.text.ParseException { ParseFacebookUtils.initialize(null); ArgumentCaptor<AuthenticationCallback> callbackCaptor = ArgumentCaptor.forClass(AuthenticationCallback.class); verify(userDelegate).registerAuthenticationCallback(eq("facebook"), callbackCaptor.capture()); AuthenticationCallback callback = callbackCaptor.getValue(); Map<String, String> authData = new HashMap<>(); assertTrue(callback.onRestore(authData)); verify(controller).setAuthData(authData); }
@Test public void testRestoreAuthenticationFailure() throws java.text.ParseException { ParseFacebookUtils.initialize(null); ArgumentCaptor<AuthenticationCallback> callbackCaptor = ArgumentCaptor.forClass(AuthenticationCallback.class); verify(userDelegate).registerAuthenticationCallback(eq("facebook"), callbackCaptor.capture()); AuthenticationCallback callback = callbackCaptor.getValue(); Map<String, String> authData = new HashMap<>(); doThrow(new RuntimeException()) .when(controller) .setAuthData(anyMapOf(String.class, String.class)); assertFalse(callback.onRestore(authData)); verify(controller).setAuthData(authData); }