Skip to content

Commit e04e70d

Browse files
author
Aaron Mandle
committed
Initial testing infrastructure and robolectric tests.
I started from the beginning of the flow add added basic tests for the following: - AuthUI - ChooseAccountActivity - SignInNoPasswordActivity - SignInActivity - RecoverPasswordActivity Further tests will be added in separate CLs Change-Id: Ib2cb875d02e100667227b5de9124d6297f69319a
1 parent 4a83929 commit e04e70d

29 files changed

+1177
-131
lines changed

auth/src/main/java/com/firebase/ui/auth/AuthUI.java

Lines changed: 3 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -17,26 +17,22 @@
1717
import android.app.Activity;
1818
import android.content.Context;
1919
import android.content.Intent;
20-
import android.os.Bundle;
2120
import android.support.annotation.NonNull;
2221
import android.support.annotation.Nullable;
2322
import android.support.annotation.StyleRes;
2423

25-
import com.firebase.ui.auth.provider.FacebookProvider;
26-
import com.firebase.ui.auth.provider.GoogleProvider;
2724
import com.firebase.ui.auth.provider.IDPProviderParcel;
2825
import com.firebase.ui.auth.ui.FlowParameters;
2926
import com.firebase.ui.auth.ui.ChooseAccountActivity;
3027
import com.firebase.ui.auth.util.CredentialsApiHelper;
3128
import com.firebase.ui.auth.util.Preconditions;
29+
import com.firebase.ui.auth.util.ProviderHelper;
3230
import com.google.android.gms.common.api.Status;
3331
import com.google.android.gms.tasks.Continuation;
3432
import com.google.android.gms.tasks.Task;
3533
import com.google.firebase.FirebaseApp;
36-
import com.google.firebase.auth.EmailAuthProvider;
3734
import com.google.firebase.auth.FirebaseAuth;
3835

39-
import java.util.ArrayList;
4036
import java.util.Arrays;
4137
import java.util.Collections;
4238
import java.util.HashSet;
@@ -361,21 +357,8 @@ public SignInIntentBuilder setProviders(@NonNull String... providers) {
361357

362358
public Intent build() {
363359
Context context = mApp.getApplicationContext();
364-
ArrayList<IDPProviderParcel> providerInfo = new ArrayList<>();
365-
for (String provider : mProviders) {
366-
if (provider.equalsIgnoreCase(FACEBOOK_PROVIDER)) {
367-
providerInfo.add(FacebookProvider.createFacebookParcel(
368-
context.getString(R.string.facebook_application_id)));
369-
} else if (provider.equalsIgnoreCase(GOOGLE_PROVIDER)) {
370-
providerInfo.add(GoogleProvider.createParcel(
371-
context.getString(R.string.default_web_client_id)));
372-
} else if (provider.equalsIgnoreCase(EMAIL_PROVIDER)) {
373-
providerInfo.add(
374-
new IDPProviderParcel(EmailAuthProvider.PROVIDER_ID, new Bundle())
375-
);
376-
}
377-
}
378-
360+
List<IDPProviderParcel> providerInfo =
361+
ProviderHelper.getProviderParcels(context, mProviders);
379362
return ChooseAccountActivity.createIntent(
380363
context,
381364
new FlowParameters(

auth/src/main/java/com/firebase/ui/auth/ui/AcquireEmailHelper.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ private void startEmailHandler(String email, List<String> providers) {
7676
// account doesn't exist yet
7777
Intent registerIntent = RegisterEmailActivity.createIntent(
7878
mActivityHelper.getApplicationContext(),
79-
mActivityHelper.flowParams,
79+
mActivityHelper.getFlowParams(),
8080
email);
8181
mActivityHelper.startActivityForResult(registerIntent, RC_REGISTER_ACCOUNT);
8282
return;
@@ -86,14 +86,14 @@ private void startEmailHandler(String email, List<String> providers) {
8686
if (provider.equalsIgnoreCase(EmailAuthProvider.PROVIDER_ID)) {
8787
Intent signInIntent = SignInActivity.createIntent(
8888
mActivityHelper.getApplicationContext(),
89-
mActivityHelper.flowParams,
89+
mActivityHelper.getFlowParams(),
9090
email);
9191
mActivityHelper.startActivityForResult(signInIntent, RC_SIGN_IN);
9292
return;
9393
}
9494
Intent intent = WelcomeBackIDPPrompt.createIntent(
9595
mActivityHelper.getApplicationContext(),
96-
mActivityHelper.flowParams,
96+
mActivityHelper.getFlowParams(),
9797
provider,
9898
null,
9999
email);

auth/src/main/java/com/firebase/ui/auth/ui/ActivityHelper.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,16 +30,15 @@
3030
public class ActivityHelper {
3131
private ProgressDialog mProgressDialog;
3232
private Activity mActivity;
33-
34-
public final FlowParameters flowParams;
33+
private final FlowParameters mFlowParams;
3534

3635
public ActivityHelper(Activity activity, Intent intent) {
3736
mActivity = activity;
38-
flowParams = intent.getParcelableExtra(ExtraConstants.EXTRA_FLOW_PARAMS);
37+
mFlowParams = intent.getParcelableExtra(ExtraConstants.EXTRA_FLOW_PARAMS);
3938
}
4039

4140
public void configureTheme() {
42-
mActivity.setTheme(flowParams.themeId);
41+
mActivity.setTheme(mFlowParams.themeId);
4342
}
4443

4544
public void dismissDialog() {
@@ -49,6 +48,10 @@ public void dismissDialog() {
4948
}
5049
}
5150

51+
public FlowParameters getFlowParams() {
52+
return mFlowParams;
53+
}
54+
5255
public void showLoadingDialog(String message) {
5356
dismissDialog();
5457
mProgressDialog = ProgressDialog.show(mActivity, "", message, true);
@@ -72,11 +75,11 @@ public Context getApplicationContext() {
7275
}
7376

7477
public String getAppName() {
75-
return flowParams.appName;
78+
return mFlowParams.appName;
7679
}
7780

7881
public FirebaseApp getFirebaseApp() {
79-
return FirebaseApp.getInstance(flowParams.appName);
82+
return FirebaseApp.getInstance(mFlowParams.appName);
8083
}
8184

8285
public FirebaseAuth getFirebaseAuth() {

auth/src/main/java/com/firebase/ui/auth/ui/ChooseAccountActivity.java

Lines changed: 26 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import com.google.android.gms.auth.api.credentials.Credential;
3131
import com.google.android.gms.auth.api.credentials.IdentityProviders;
3232
import com.google.android.gms.tasks.OnCompleteListener;
33+
import com.google.android.gms.tasks.OnFailureListener;
3334
import com.google.android.gms.tasks.OnSuccessListener;
3435
import com.google.android.gms.tasks.Task;
3536
import com.google.firebase.auth.AuthResult;
@@ -63,7 +64,7 @@ protected void onCreate(Bundle savedInstance) {
6364
mCredentialsApi = new CredentialsAPI(this, new CredentialsAPI.CallbackInterface() {
6465
@Override
6566
public void onAsyncTaskFinished() {
66-
onCredentialsApiConnected();
67+
onCredentialsApiConnected(mCredentialsApi, mActivityHelper);
6768
}
6869
});
6970
}
@@ -85,19 +86,21 @@ protected void onStop() {
8586
super.onStop();
8687
}
8788

88-
public void onCredentialsApiConnected() {
89+
public void onCredentialsApiConnected(
90+
CredentialsAPI credentialsApi,
91+
ActivityHelper activityHelper) {
8992
// called back when the CredentialsAPI connects
90-
String email = mCredentialsApi.getEmailFromCredential();
91-
String password = mCredentialsApi.getPasswordFromCredential();
92-
String accountType = mCredentialsApi.getAccountTypeFromCredential();
93-
if (mCredentialsApi.isPlayServicesAvailable()
94-
&& mCredentialsApi.isCredentialsAvailable()) {
95-
if (mCredentialsApi.isAutoSignInAvailable()) {
96-
mCredentialsApi.googleSilentSignIn();
93+
String email = credentialsApi.getEmailFromCredential();
94+
String password = credentialsApi.getPasswordFromCredential();
95+
String accountType = credentialsApi.getAccountTypeFromCredential();
96+
if (credentialsApi.isPlayServicesAvailable()
97+
&& credentialsApi.isCredentialsAvailable()) {
98+
if (credentialsApi.isAutoSignInAvailable()) {
99+
credentialsApi.googleSilentSignIn();
97100
// TODO: (serikb) authenticate Firebase user and continue to application
98101
if (password != null && !password.isEmpty()) {
99102
// login with username/password
100-
mActivityHelper
103+
activityHelper
101104
.getFirebaseAuth()
102105
.signInWithEmailAndPassword(email, password)
103106
.addOnFailureListener(new TaskFailureLogger(
@@ -112,32 +115,32 @@ public void onSuccess(AuthResult authResult) {
112115
// log in with id/provider
113116
redirectToIdpSignIn(email, accountType);
114117
}
115-
} else if (mCredentialsApi.isSignInResolutionNeeded()) {
118+
} else if (credentialsApi.isSignInResolutionNeeded()) {
116119
// resolve credential
117-
mCredentialsApi.resolveSavedEmails(this);
120+
credentialsApi.resolveSavedEmails(this);
118121
} else {
119-
startAuthMethodChoice();
122+
startAuthMethodChoice(activityHelper);
120123
}
121124
} else {
122-
startAuthMethodChoice();
125+
startAuthMethodChoice(activityHelper);
123126
}
124127
}
125128

126-
private void startAuthMethodChoice() {
127-
List<IDPProviderParcel> providers = mActivityHelper.flowParams.providerInfo;
129+
private void startAuthMethodChoice(ActivityHelper activityHelper) {
130+
List<IDPProviderParcel> providers = activityHelper.getFlowParams().providerInfo;
128131
if (providers.size() == 1
129132
&& providers.get(0).getProviderType().equals(EmailAuthProvider.PROVIDER_ID)) {
130133

131134
startActivityForResult(
132135
EmailHintContainerActivity.createIntent(
133136
this,
134-
mActivityHelper.flowParams),
137+
activityHelper.getFlowParams()),
135138
RC_EMAIL_FLOW);
136139
} else {
137140
startActivityForResult(
138141
AuthMethodPickerActivity.createIntent(
139142
this,
140-
mActivityHelper.flowParams),
143+
activityHelper.getFlowParams()),
141144
RC_AUTH_METHOD_PICKER);
142145
}
143146
}
@@ -165,7 +168,7 @@ public void onComplete(@NonNull Task<AuthResult> task) {
165168
startActivityForResult(
166169
AuthMethodPickerActivity.createIntent(
167170
ChooseAccountActivity.this,
168-
mActivityHelper.flowParams),
171+
mActivityHelper.getFlowParams()),
169172
RC_AUTH_METHOD_PICKER);
170173
}
171174
}
@@ -197,7 +200,7 @@ public void onActivityResult(int requestCode, int resultCode, Intent data) {
197200
);
198201
} else if (resultCode == RESULT_CANCELED) {
199202
// Smart lock selector cancelled, go to the AuthMethodPicker screen
200-
startAuthMethodChoice();
203+
startAuthMethodChoice(mActivityHelper);
201204
} else if (resultCode == RESULT_FIRST_USER) {
202205
// TODO: (serikb) figure out flow
203206
}
@@ -216,22 +219,22 @@ protected void redirectToIdpSignIn(String email, String accountType) {
216219
case IdentityProviders.GOOGLE:
217220
nextIntent = IDPSignInContainerActivity.createIntent(
218221
this,
219-
mActivityHelper.flowParams,
222+
mActivityHelper.getFlowParams(),
220223
GoogleAuthProvider.PROVIDER_ID,
221224
email);
222225
break;
223226
case IdentityProviders.FACEBOOK:
224227
nextIntent = IDPSignInContainerActivity.createIntent(
225228
this,
226-
mActivityHelper.flowParams,
229+
mActivityHelper.getFlowParams(),
227230
FacebookAuthProvider.PROVIDER_ID,
228231
email);
229232
break;
230233
default:
231234
Log.w(TAG, "unknown provider: " + accountType);
232235
nextIntent = AuthMethodPickerActivity.createIntent(
233236
this,
234-
mActivityHelper.flowParams);
237+
mActivityHelper.getFlowParams());
235238
}
236239
this.startActivityForResult(nextIntent, RC_IDP_SIGNIN);
237240
}

auth/src/main/java/com/firebase/ui/auth/ui/account_link/AccountLinkInitActivity.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ public void onSuccess(@NonNull ProviderQueryResult result) {
9292
// new account for this email
9393
startActivityForResult(SaveCredentialsActivity.createIntent(
9494
getApplicationContext(),
95-
mActivityHelper.flowParams,
95+
mActivityHelper.getFlowParams(),
9696
null,
9797
email,
9898
password,
@@ -103,7 +103,7 @@ public void onSuccess(@NonNull ProviderQueryResult result) {
103103
// existing account but has this IDP linked
104104
startActivityForResult(SaveCredentialsActivity.createIntent(
105105
AccountLinkInitActivity.this,
106-
mActivityHelper.flowParams,
106+
mActivityHelper.getFlowParams(),
107107
null,
108108
email,
109109
password,
@@ -114,14 +114,14 @@ public void onSuccess(@NonNull ProviderQueryResult result) {
114114
if (providers.get(0).equals(EmailAuthProvider.PROVIDER_ID)) {
115115
startActivityForResult(WelcomeBackPasswordPrompt.createIntent(
116116
getApplicationContext(),
117-
mActivityHelper.flowParams,
117+
mActivityHelper.getFlowParams(),
118118
mIdpResponse),
119119
RC_WELCOME_BACK_PASSWORD_PROMPT);
120120
} else {
121121
// existing account but has a different IDP linked
122122
startActivityForResult(WelcomeBackIDPPrompt.createIntent(
123123
getApplicationContext(),
124-
mActivityHelper.flowParams,
124+
mActivityHelper.getFlowParams(),
125125
provider,
126126
mIdpResponse,
127127
email),
@@ -135,7 +135,7 @@ public void onSuccess(@NonNull ProviderQueryResult result) {
135135
// this provider is already linked
136136
startActivityForResult(SaveCredentialsActivity.createIntent(
137137
AccountLinkInitActivity.this,
138-
mActivityHelper.flowParams,
138+
mActivityHelper.getFlowParams(),
139139
null,
140140
email,
141141
password,
@@ -145,7 +145,7 @@ public void onSuccess(@NonNull ProviderQueryResult result) {
145145
} else {
146146
startActivityForResult(WelcomeBackIDPPrompt.createIntent(
147147
getApplicationContext(),
148-
mActivityHelper.flowParams,
148+
mActivityHelper.getFlowParams(),
149149
provider,
150150
mIdpResponse,
151151
email),

auth/src/main/java/com/firebase/ui/auth/ui/account_link/WelcomeBackIDPPrompt.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ protected void onCreate(Bundle savedInstanceState) {
6464
setContentView(R.layout.welcome_back_idp_prompt_layout);
6565

6666
mIdpProvider = null;
67-
for (IDPProviderParcel providerParcel: mActivityHelper.flowParams.providerInfo) {
67+
for (IDPProviderParcel providerParcel: mActivityHelper.getFlowParams().providerInfo) {
6868
if (mProviderId.equals(providerParcel.getProviderType())) {
6969
switch (mProviderId) {
7070
case GoogleAuthProvider.PROVIDER_ID:

auth/src/main/java/com/firebase/ui/auth/ui/account_link/WelcomeBackPasswordPrompt.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ public void onClick(View view) {
9292
mActivityHelper.dismissDialog();
9393
startActivity(RecoverPasswordActivity.createIntent(
9494
getApplicationContext(),
95-
mActivityHelper.flowParams,
95+
mActivityHelper.getFlowParams(),
9696
mEmail));
9797
finish(RESULT_OK, new Intent());
9898
}
@@ -137,7 +137,7 @@ public void onSuccess(AuthResult authResult) {
137137
startActivityForResult(
138138
SaveCredentialsActivity.createIntent(
139139
mActivityHelper.getApplicationContext(),
140-
mActivityHelper.flowParams,
140+
mActivityHelper.getFlowParams(),
141141
firebaseUser.getDisplayName(),
142142
firebaseUser.getEmail(),
143143
password,

auth/src/main/java/com/firebase/ui/auth/ui/email/EmailHintContainerActivity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ public void onActivityResult(int requestCode, int resultCode, Intent data) {
6363
startActivityForResult(
6464
SignInNoPasswordActivity.createIntent(
6565
this,
66-
mActivityHelper.flowParams,
66+
mActivityHelper.getFlowParams(),
6767
null),
6868
AcquireEmailHelper.RC_SIGN_IN);
6969
return;

auth/src/main/java/com/firebase/ui/auth/ui/email/RecoverPasswordActivity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ public void onComplete(@NonNull Task<Void> task) {
7070
mActivityHelper.dismissDialog();
7171
Intent confirmIntent = ConfirmRecoverPasswordActivity.createIntent(
7272
RecoverPasswordActivity.this,
73-
mActivityHelper.flowParams,
73+
mActivityHelper.getFlowParams(),
7474
task.isSuccessful(),
7575
email);
7676
startActivityForResult(confirmIntent, RC_CONFIRM);

auth/src/main/java/com/firebase/ui/auth/ui/email/RegisterEmailActivity.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ protected void onCreate(Bundle savedInstanceState) {
104104
}
105105

106106
private void setUpTermsOfService() {
107-
if (mActivityHelper.flowParams.termsOfServiceUrl == null) {
107+
if (mActivityHelper.getFlowParams().termsOfServiceUrl == null) {
108108
return;
109109
}
110110
ForegroundColorSpan foregroundColorSpan = new ForegroundColorSpan(ContextCompat.getColor
@@ -121,18 +121,18 @@ private void setUpTermsOfService() {
121121
@Override
122122
public void onClick(View view) {
123123
Intent intent = new Intent(Intent.ACTION_VIEW).setData(Uri.parse
124-
(mActivityHelper.flowParams.termsOfServiceUrl));
124+
(mActivityHelper.getFlowParams().termsOfServiceUrl));
125125
startActivity(intent);
126126
}
127127
});
128128
}
129129

130130
private void startSaveCredentials(FirebaseUser firebaseUser, String password) {
131-
if (FirebaseAuthWrapperFactory.getFirebaseAuthWrapper(mActivityHelper.flowParams.appName)
131+
if (FirebaseAuthWrapperFactory.getFirebaseAuthWrapper(mActivityHelper.getFlowParams().appName)
132132
.isPlayServicesAvailable(this)) {
133133
Intent saveCredentialIntent = SaveCredentialsActivity.createIntent(
134134
this,
135-
mActivityHelper.flowParams,
135+
mActivityHelper.getFlowParams(),
136136
firebaseUser.getDisplayName(),
137137
firebaseUser.getEmail(),
138138
password,

0 commit comments

Comments
 (0)