use of com.google.android.gms.tasks.Task in project FirebaseUI-Android by firebase.
the class CredentialSignInHandlerTest method testSignInSucceeded.
@Test
public void testSignInSucceeded() {
AppCompatBase mockActivity = mock(AppCompatBase.class);
ActivityHelper mockActivityHelper = mock(ActivityHelper.class);
FirebaseUser mockFirebaseUser = TestHelper.makeMockFirebaseUser();
IdpResponse idpResponse = new IdpResponse(GoogleAuthProvider.PROVIDER_ID, TestConstants.EMAIL);
SaveSmartLock smartLock = mock(SaveSmartLock.class);
CredentialSignInHandler credentialSignInHandler = new CredentialSignInHandler(mockActivity, mockActivityHelper, smartLock, RC_ACCOUNT_LINK, idpResponse);
Task signInTask = Tasks.forResult(new FakeAuthResult(mockFirebaseUser));
when(mockActivityHelper.getFlowParams()).thenReturn(TestHelper.getFlowParameters(Collections.<String>emptyList()));
credentialSignInHandler.onComplete(signInTask);
ArgumentCaptor<SaveSmartLock> smartLockCaptor = ArgumentCaptor.forClass(SaveSmartLock.class);
ArgumentCaptor<Activity> activityCaptor = ArgumentCaptor.forClass(Activity.class);
ArgumentCaptor<FirebaseUser> firebaseUserCaptor = ArgumentCaptor.forClass(FirebaseUser.class);
ArgumentCaptor<IdpResponse> idpResponseCaptor = ArgumentCaptor.forClass(IdpResponse.class);
verify(mockActivityHelper).saveCredentialsOrFinish(smartLockCaptor.capture(), activityCaptor.capture(), firebaseUserCaptor.capture(), idpResponseCaptor.capture());
assertEquals(smartLock, smartLockCaptor.getValue());
assertEquals(mockActivity, activityCaptor.getValue());
assertEquals(mockFirebaseUser, firebaseUserCaptor.getValue());
assertEquals(idpResponse.getProviderType(), idpResponseCaptor.getValue().getProviderType());
assertEquals(idpResponse.getEmail(), idpResponseCaptor.getValue().getEmail());
assertEquals(idpResponse.getIdpToken(), idpResponseCaptor.getValue().getIdpToken());
assertEquals(idpResponse.getIdpSecret(), idpResponseCaptor.getValue().getIdpSecret());
}
use of com.google.android.gms.tasks.Task in project FirebaseUI-Android by firebase.
the class CredentialSignInHandlerTest method testSignInFailed_withFacebookAlreadyLinked.
@Test
public void testSignInFailed_withFacebookAlreadyLinked() {
AppCompatBase mockActivity = mock(AppCompatBase.class);
ActivityHelper mockActivityHelper = mock(ActivityHelper.class);
FirebaseAuth mockFirebaseAuth = mock(FirebaseAuth.class);
IdpResponse idpResponse = new IdpResponse(GoogleAuthProvider.PROVIDER_ID, TestConstants.EMAIL);
CredentialSignInHandler credentialSignInHandler = new CredentialSignInHandler(mockActivity, mockActivityHelper, null, RC_ACCOUNT_LINK, idpResponse);
FlowParameters mockFlowParams = mock(FlowParameters.class);
when(mockActivityHelper.getFirebaseAuth()).thenReturn(mockFirebaseAuth);
when(mockActivityHelper.getFlowParams()).thenReturn(mockFlowParams);
// pretend the account has Facebook linked already
when(mockFirebaseAuth.fetchProvidersForEmail(TestConstants.EMAIL)).thenReturn(new AutoCompleteTask<ProviderQueryResult>(new FakeProviderQueryResult(Arrays.asList(FacebookAuthProvider.PROVIDER_ID)), true, null));
// pretend there was already an account with this email
Task exceptionTask = Tasks.forException(new FirebaseAuthUserCollisionException(LINKING_ERROR, LINKING_EXPLANATION));
credentialSignInHandler.onComplete(exceptionTask);
ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
ArgumentCaptor<Integer> intCaptor = ArgumentCaptor.forClass(Integer.class);
verify(mockActivity).startActivityForResult(intentCaptor.capture(), intCaptor.capture());
Intent capturedIntent = intentCaptor.getValue();
User capturedUser = User.getUser(capturedIntent);
assertEquals(RC_ACCOUNT_LINK, (int) intCaptor.getValue());
assertEquals(WelcomeBackIdpPrompt.class.getName(), capturedIntent.getComponent().getClassName());
assertEquals(TestConstants.EMAIL, capturedUser.getEmail());
assertEquals(FacebookAuthProvider.PROVIDER_ID, capturedUser.getProvider());
}
use of com.google.android.gms.tasks.Task in project FirebaseUI-Android by firebase.
the class CredentialSignInHandlerTest method testSignInFailed_withPasswordAccountAlreadyLinked.
@Test
public void testSignInFailed_withPasswordAccountAlreadyLinked() {
AppCompatBase mockActivity = mock(AppCompatBase.class);
ActivityHelper mockActivityHelper = mock(ActivityHelper.class);
FirebaseAuth mockFirebaseAuth = mock(FirebaseAuth.class);
IdpResponse idpResponse = new IdpResponse(GoogleAuthProvider.PROVIDER_ID, TestConstants.EMAIL);
CredentialSignInHandler credentialSignInHandler = new CredentialSignInHandler(mockActivity, mockActivityHelper, null, RC_ACCOUNT_LINK, idpResponse);
Task mockTask = mock(Task.class);
FlowParameters mockFlowParams = mock(FlowParameters.class);
// pretend there was already an account with this email
when(mockTask.getException()).thenReturn(new FirebaseAuthUserCollisionException(LINKING_ERROR, LINKING_EXPLANATION));
when(mockActivityHelper.getFirebaseAuth()).thenReturn(mockFirebaseAuth);
when(mockActivityHelper.getFlowParams()).thenReturn(mockFlowParams);
// pretend the account has a Password account linked already
when(mockFirebaseAuth.fetchProvidersForEmail(TestConstants.EMAIL)).thenReturn(new AutoCompleteTask<ProviderQueryResult>(new FakeProviderQueryResult(Arrays.asList(EmailAuthProvider.PROVIDER_ID)), true, null));
credentialSignInHandler.onComplete(mockTask);
ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
ArgumentCaptor<Integer> intCaptor = ArgumentCaptor.forClass(Integer.class);
verify(mockActivity).startActivityForResult(intentCaptor.capture(), intCaptor.capture());
Intent capturedIntent = intentCaptor.getValue();
assertEquals(RC_ACCOUNT_LINK, (int) intCaptor.getValue());
assertEquals(WelcomeBackPasswordPrompt.class.getName(), capturedIntent.getComponent().getClassName());
assertEquals(TestConstants.EMAIL, IdpResponse.fromResultIntent(capturedIntent).getEmail());
}
use of com.google.android.gms.tasks.Task in project FirebaseUI-Android by firebase.
the class AuthUI method getDeleteTask.
private Task<Void> getDeleteTask(CredentialTaskApi credentialHelper) {
FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
if (firebaseUser == null) {
// If the current user is null, return a failed task immediately
return Tasks.forException(new Exception("No currently signed in user."));
}
// Delete the Firebase user
Task<Void> deleteUserTask = firebaseUser.delete();
// Get all SmartLock credentials associated with the user
List<Credential> credentials = SmartLockBase.credentialsFromFirebaseUser(firebaseUser);
// For each Credential in the list, create a task to delete it.
List<Task<?>> credentialTasks = new ArrayList<>();
for (Credential credential : credentials) {
credentialTasks.add(credentialHelper.delete(credential));
}
// Create a combined task that will succeed when all credential delete operations
// have completed (even if they fail).
final Task<Void> combinedCredentialTask = Tasks.whenAll(credentialTasks);
// and return.
return deleteUserTask.continueWithTask(new Continuation<Void, Task<Void>>() {
@Override
public Task<Void> then(@NonNull Task<Void> task) throws Exception {
// Call getResult() to propagate failure by throwing an exception
// if there was one.
task.getResult(Exception.class);
// Return the combined credential task
return combinedCredentialTask;
}
});
}
use of com.google.android.gms.tasks.Task in project Robot-Scouter by SUPERCILEX.
the class Scouts method build.
public Task<Map<TeamHelper, List<Scout>>> build() {
List<Task<Pair<TeamHelper, List<String>>>> scoutIndicesTasks = new ArrayList<>();
for (TeamHelper helper : mTeamHelpers) {
TaskCompletionSource<Pair<TeamHelper, List<String>>> scoutIndicesTask = new TaskCompletionSource<>();
scoutIndicesTasks.add(scoutIndicesTask.getTask());
getScoutIndicesRef(helper.getTeam().getKey()).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
AsyncTaskExecutor.Companion.execute(() -> {
List<String> scoutKeys = new ArrayList<>();
for (DataSnapshot scoutKeyTemplate : snapshot.getChildren()) {
scoutKeys.add(scoutKeyTemplate.getKey());
}
return scoutKeys;
}).addOnSuccessListener(scoutKeys -> scoutIndicesTask.setResult(Pair.create(helper, scoutKeys)));
}
@Override
public void onCancelled(DatabaseError error) {
scoutIndicesTask.setException(error.toException());
FirebaseCrash.report(error.toException());
}
});
}
for (Task<Pair<TeamHelper, List<String>>> scoutKeysTask : scoutIndicesTasks) {
scoutKeysTask.addOnSuccessListener(this).addOnFailureListener(this);
}
Tasks.whenAll(scoutIndicesTasks).addOnSuccessListener(aVoid -> Tasks.whenAll(mScoutMetricsTasks).addOnSuccessListener(aVoid1 -> mScoutsTask.setResult(mScouts)).addOnFailureListener(this)).addOnFailureListener(this);
return mScoutsTask.getTask();
}
Aggregations