Search in sources :

Example 1 with Task

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());
}
Also used : Task(com.google.android.gms.tasks.Task) AutoCompleteTask(com.firebase.ui.auth.testhelpers.AutoCompleteTask) AppCompatBase(com.firebase.ui.auth.ui.AppCompatBase) Activity(android.app.Activity) FirebaseUser(com.google.firebase.auth.FirebaseUser) FakeAuthResult(com.firebase.ui.auth.testhelpers.FakeAuthResult) ActivityHelper(com.firebase.ui.auth.ui.ActivityHelper) SaveSmartLock(com.firebase.ui.auth.util.signincontainer.SaveSmartLock) IdpResponse(com.firebase.ui.auth.IdpResponse) Test(org.junit.Test)

Example 2 with Task

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());
}
Also used : Task(com.google.android.gms.tasks.Task) AutoCompleteTask(com.firebase.ui.auth.testhelpers.AutoCompleteTask) FirebaseUser(com.google.firebase.auth.FirebaseUser) User(com.firebase.ui.auth.ui.User) AppCompatBase(com.firebase.ui.auth.ui.AppCompatBase) Intent(android.content.Intent) FakeProviderQueryResult(com.firebase.ui.auth.testhelpers.FakeProviderQueryResult) ProviderQueryResult(com.google.firebase.auth.ProviderQueryResult) ActivityHelper(com.firebase.ui.auth.ui.ActivityHelper) FlowParameters(com.firebase.ui.auth.ui.FlowParameters) FirebaseAuthUserCollisionException(com.google.firebase.auth.FirebaseAuthUserCollisionException) WelcomeBackIdpPrompt(com.firebase.ui.auth.ui.accountlink.WelcomeBackIdpPrompt) FakeProviderQueryResult(com.firebase.ui.auth.testhelpers.FakeProviderQueryResult) FirebaseAuth(com.google.firebase.auth.FirebaseAuth) IdpResponse(com.firebase.ui.auth.IdpResponse) Test(org.junit.Test)

Example 3 with Task

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());
}
Also used : Task(com.google.android.gms.tasks.Task) AutoCompleteTask(com.firebase.ui.auth.testhelpers.AutoCompleteTask) AppCompatBase(com.firebase.ui.auth.ui.AppCompatBase) Intent(android.content.Intent) FakeProviderQueryResult(com.firebase.ui.auth.testhelpers.FakeProviderQueryResult) ProviderQueryResult(com.google.firebase.auth.ProviderQueryResult) ActivityHelper(com.firebase.ui.auth.ui.ActivityHelper) FlowParameters(com.firebase.ui.auth.ui.FlowParameters) FirebaseAuthUserCollisionException(com.google.firebase.auth.FirebaseAuthUserCollisionException) FakeProviderQueryResult(com.firebase.ui.auth.testhelpers.FakeProviderQueryResult) FirebaseAuth(com.google.firebase.auth.FirebaseAuth) IdpResponse(com.firebase.ui.auth.IdpResponse) WelcomeBackPasswordPrompt(com.firebase.ui.auth.ui.accountlink.WelcomeBackPasswordPrompt) Test(org.junit.Test)

Example 4 with Task

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;
        }
    });
}
Also used : Credential(com.google.android.gms.auth.api.credentials.Credential) Task(com.google.android.gms.tasks.Task) ArrayList(java.util.ArrayList) FirebaseUser(com.google.firebase.auth.FirebaseUser)

Example 5 with Task

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();
}
Also used : Context(android.content.Context) Query(com.google.firebase.database.Query) Metric(com.supercilex.robotscouter.data.model.Metric) DataSnapshot(com.google.firebase.database.DataSnapshot) Pair(android.util.Pair) DatabaseReference(com.google.firebase.database.DatabaseReference) Timer(java.util.Timer) FIREBASE_NAME(com.supercilex.robotscouter.util.ConstantsKt.FIREBASE_NAME) NonNull(android.support.annotation.NonNull) Task(com.google.android.gms.tasks.Task) ChildEventListener(com.google.firebase.database.ChildEventListener) ArrayList(java.util.ArrayList) ValueEventListener(com.google.firebase.database.ValueEventListener) OnFailureListener(com.google.android.gms.tasks.OnFailureListener) Map(java.util.Map) TimerTask(java.util.TimerTask) ConnectivityUtilsKt.isOffline(com.supercilex.robotscouter.util.ConnectivityUtilsKt.isOffline) AsyncTaskExecutor(com.supercilex.robotscouter.util.AsyncTaskExecutor) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) METRIC_PARSER(com.supercilex.robotscouter.data.util.ScoutUtilsKt.METRIC_PARSER) FIREBASE_METRICS(com.supercilex.robotscouter.util.ConstantsKt.FIREBASE_METRICS) FirebaseCrash(com.google.firebase.crash.FirebaseCrash) FIREBASE_SCOUTS(com.supercilex.robotscouter.util.ConstantsKt.FIREBASE_SCOUTS) Size(android.support.annotation.Size) TimeUnit(java.util.concurrent.TimeUnit) List(java.util.List) Tasks(com.google.android.gms.tasks.Tasks) OnSuccessListener(com.google.android.gms.tasks.OnSuccessListener) TaskCompletionSource(com.google.android.gms.tasks.TaskCompletionSource) Scout(com.supercilex.robotscouter.data.model.Scout) ScoutUtilsKt.getScoutIndicesRef(com.supercilex.robotscouter.data.util.ScoutUtilsKt.getScoutIndicesRef) DatabaseError(com.google.firebase.database.DatabaseError) CopyOnWriteArrayList(java.util.concurrent.CopyOnWriteArrayList) Task(com.google.android.gms.tasks.Task) TimerTask(java.util.TimerTask) ArrayList(java.util.ArrayList) CopyOnWriteArrayList(java.util.concurrent.CopyOnWriteArrayList) DataSnapshot(com.google.firebase.database.DataSnapshot) TaskCompletionSource(com.google.android.gms.tasks.TaskCompletionSource) DatabaseError(com.google.firebase.database.DatabaseError) ArrayList(java.util.ArrayList) List(java.util.List) CopyOnWriteArrayList(java.util.concurrent.CopyOnWriteArrayList) ValueEventListener(com.google.firebase.database.ValueEventListener) Pair(android.util.Pair)

Aggregations

Task (com.google.android.gms.tasks.Task)6 FirebaseUser (com.google.firebase.auth.FirebaseUser)4 IdpResponse (com.firebase.ui.auth.IdpResponse)3 AutoCompleteTask (com.firebase.ui.auth.testhelpers.AutoCompleteTask)3 ActivityHelper (com.firebase.ui.auth.ui.ActivityHelper)3 AppCompatBase (com.firebase.ui.auth.ui.AppCompatBase)3 FirebaseAuthUserCollisionException (com.google.firebase.auth.FirebaseAuthUserCollisionException)3 Intent (android.content.Intent)2 NonNull (android.support.annotation.NonNull)2 FakeProviderQueryResult (com.firebase.ui.auth.testhelpers.FakeProviderQueryResult)2 FlowParameters (com.firebase.ui.auth.ui.FlowParameters)2 OnFailureListener (com.google.android.gms.tasks.OnFailureListener)2 FirebaseAuth (com.google.firebase.auth.FirebaseAuth)2 ProviderQueryResult (com.google.firebase.auth.ProviderQueryResult)2 ArrayList (java.util.ArrayList)2 Test (org.junit.Test)2 Activity (android.app.Activity)1 Context (android.content.Context)1 SharedPreferences (android.content.SharedPreferences)1 Bitmap (android.graphics.Bitmap)1