Skip to content

Commit 36b118f

Browse files
authored
Remove testing hacks (#1337)
2 parents 2fb28a1 + 8c514ad commit 36b118f

File tree

3 files changed

+29
-82
lines changed

3 files changed

+29
-82
lines changed

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

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
import android.support.annotation.RestrictTo;
2727
import android.support.annotation.StringDef;
2828
import android.support.annotation.StyleRes;
29-
import android.support.annotation.VisibleForTesting;
3029
import android.text.TextUtils;
3130
import android.util.Log;
3231

@@ -92,9 +91,6 @@
9291
*/
9392
public final class AuthUI {
9493

95-
@VisibleForTesting
96-
protected static FirebaseAuth sDefaultAuth;
97-
9894
@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
9995
public static final String TAG = "AuthUI";
10096

@@ -147,13 +143,7 @@ public final class AuthUI {
147143

148144
private AuthUI(FirebaseApp app) {
149145
mApp = app;
150-
151-
// TODO: This is a bad testing hack
152-
if (sDefaultAuth != null) {
153-
mAuth = sDefaultAuth;
154-
} else {
155-
mAuth = FirebaseAuth.getInstance(mApp);
156-
}
146+
mAuth = FirebaseAuth.getInstance(mApp);
157147

158148
try {
159149
mAuth.setFirebaseUIVersion(BuildConfig.VERSION_NAME);

auth/src/test/java/com/firebase/ui/auth/AuthUITest.java

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,7 @@
2020
import com.firebase.ui.auth.testhelpers.TestConstants;
2121
import com.firebase.ui.auth.testhelpers.TestHelper;
2222
import com.firebase.ui.auth.util.ExtraConstants;
23-
import com.google.firebase.FirebaseApp;
2423
import com.google.firebase.auth.EmailAuthProvider;
25-
import com.google.firebase.auth.FirebaseAuth;
2624

2725
import org.junit.Before;
2826
import org.junit.Test;
@@ -32,20 +30,20 @@
3230
import java.util.Arrays;
3331

3432
import static junit.framework.Assert.assertEquals;
35-
import static org.mockito.Mockito.mock;
3633

3734
@RunWith(RobolectricTestRunner.class)
3835
public class AuthUITest {
36+
private AuthUI mAuthUi;
37+
3938
@Before
4039
public void setUp() {
4140
TestHelper.initialize();
42-
AuthUI.sDefaultAuth = mock(FirebaseAuth.class);
41+
mAuthUi = AuthUI.getInstance(TestHelper.MOCK_APP);
4342
}
4443

4544
@Test
4645
public void testCreateStartIntent_shouldHaveEmailAsDefaultProvider() {
47-
FlowParameters flowParameters = AuthUI
48-
.getInstance()
46+
FlowParameters flowParameters = mAuthUi
4947
.createSignInIntentBuilder()
5048
.build()
5149
.getParcelableExtra(ExtraConstants.FLOW_PARAMS);
@@ -56,15 +54,15 @@ public void testCreateStartIntent_shouldHaveEmailAsDefaultProvider() {
5654

5755
@Test(expected = IllegalArgumentException.class)
5856
public void testCreateStartIntent_shouldOnlyAllowOneInstanceOfAnIdp() {
59-
SignInIntentBuilder startIntent = AuthUI.getInstance().createSignInIntentBuilder();
57+
SignInIntentBuilder startIntent = mAuthUi.createSignInIntentBuilder();
6058
startIntent.setAvailableProviders(Arrays.asList(
6159
new IdpConfig.EmailBuilder().build(),
6260
new IdpConfig.EmailBuilder().build()));
6361
}
6462

6563
@Test
6664
public void testCreatingStartIntent() {
67-
FlowParameters flowParameters = AuthUI.getInstance()
65+
FlowParameters flowParameters = mAuthUi
6866
.createSignInIntentBuilder()
6967
.setAvailableProviders(Arrays.asList(
7068
new IdpConfig.EmailBuilder().build(),
@@ -75,21 +73,21 @@ public void testCreatingStartIntent() {
7573
.getParcelableExtra(ExtraConstants.FLOW_PARAMS);
7674

7775
assertEquals(3, flowParameters.providerInfo.size());
78-
assertEquals(FirebaseApp.getInstance().getName(), flowParameters.appName);
76+
assertEquals(TestHelper.MOCK_APP.getName(), flowParameters.appName);
7977
assertEquals(TestConstants.TOS_URL, flowParameters.termsOfServiceUrl);
8078
assertEquals(TestConstants.PRIVACY_URL, flowParameters.privacyPolicyUrl);
8179
assertEquals(AuthUI.getDefaultTheme(), flowParameters.themeId);
8280
}
8381

8482
@Test(expected = NullPointerException.class)
8583
public void testCreatingStartIntent_withNullTos_expectEnforcesNonNullTosUrl() {
86-
SignInIntentBuilder startIntent = AuthUI.getInstance().createSignInIntentBuilder();
84+
SignInIntentBuilder startIntent = mAuthUi.createSignInIntentBuilder();
8785
startIntent.setTosAndPrivacyPolicyUrls(null, TestConstants.PRIVACY_URL);
8886
}
8987

9088
@Test(expected = NullPointerException.class)
9189
public void testCreatingStartIntent_withNullPp_expectEnforcesNonNullPpUrl() {
92-
SignInIntentBuilder startIntent = AuthUI.getInstance().createSignInIntentBuilder();
90+
SignInIntentBuilder startIntent = mAuthUi.createSignInIntentBuilder();
9391
startIntent.setTosAndPrivacyPolicyUrls(TestConstants.TOS_URL, null);
9492
}
9593
}

auth/src/test/java/com/firebase/ui/auth/testhelpers/TestHelper.java

Lines changed: 19 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -14,48 +14,44 @@
1414

1515
package com.firebase.ui.auth.testhelpers;
1616

17-
import android.app.Activity;
1817
import android.content.Context;
19-
import android.content.Intent;
2018
import android.content.res.Resources;
21-
import android.support.annotation.NonNull;
22-
import android.support.annotation.Nullable;
23-
import android.text.TextUtils;
2419

2520
import com.firebase.ui.auth.AuthUI;
2621
import com.firebase.ui.auth.AuthUI.IdpConfig;
2722
import com.firebase.ui.auth.R;
2823
import com.firebase.ui.auth.data.model.FlowParameters;
29-
import com.firebase.ui.auth.ui.credentials.CredentialSaveActivity;
30-
import com.firebase.ui.auth.util.ExtraConstants;
31-
import com.firebase.ui.auth.util.data.ProviderUtils;
32-
import com.google.android.gms.auth.api.credentials.Credential;
3324
import com.google.firebase.FirebaseApp;
3425
import com.google.firebase.FirebaseOptions;
3526
import com.google.firebase.auth.EmailAuthProvider;
3627
import com.google.firebase.auth.FacebookAuthProvider;
28+
import com.google.firebase.auth.FirebaseAuth;
3729
import com.google.firebase.auth.FirebaseUser;
3830
import com.google.firebase.auth.GoogleAuthProvider;
3931
import com.google.firebase.auth.PhoneAuthProvider;
4032
import com.google.firebase.auth.TwitterAuthProvider;
4133

42-
import org.junit.Assert;
4334
import org.robolectric.RuntimeEnvironment;
44-
import org.robolectric.Shadows;
45-
import org.robolectric.shadows.ShadowActivity;
4635

4736
import java.util.ArrayList;
4837
import java.util.Collection;
4938
import java.util.List;
5039

51-
import static junit.framework.Assert.assertEquals;
40+
import static org.mockito.ArgumentMatchers.eq;
5241
import static org.mockito.Mockito.mock;
5342
import static org.mockito.Mockito.spy;
5443
import static org.mockito.Mockito.when;
5544

56-
public class TestHelper {
57-
private static final String APPLICATION_ID = "testAppId";
58-
private static final String API_KEY = "fakeKey";
45+
public final class TestHelper {
46+
public static final FirebaseApp MOCK_APP;
47+
48+
static {
49+
FirebaseApp app = mock(FirebaseApp.class);
50+
when(app.get(eq(FirebaseAuth.class))).thenReturn(mock(FirebaseAuth.class));
51+
when(app.getApplicationContext()).thenReturn(RuntimeEnvironment.application);
52+
when(app.getName()).thenReturn(FirebaseApp.DEFAULT_APP_NAME);
53+
MOCK_APP = app;
54+
}
5955

6056
public static void initialize() {
6157
spyContextAndResources();
@@ -72,18 +68,13 @@ private static void spyContextAndResources() {
7268
when(RuntimeEnvironment.application.getResources()).thenReturn(spiedResources);
7369
}
7470

75-
private static FirebaseApp initializeApp(Context context) {
76-
try {
77-
return FirebaseApp.initializeApp(
78-
context,
79-
new FirebaseOptions.Builder()
80-
.setApiKey(API_KEY)
81-
.setApplicationId(APPLICATION_ID)
82-
.build(),
83-
FirebaseApp.DEFAULT_APP_NAME);
84-
} catch (IllegalStateException e) {
85-
return FirebaseApp.getInstance(FirebaseApp.DEFAULT_APP_NAME);
86-
}
71+
private static void initializeApp(Context context) {
72+
if (!FirebaseApp.getApps(context).isEmpty()) return;
73+
74+
FirebaseApp.initializeApp(context, new FirebaseOptions.Builder()
75+
.setApiKey("fake")
76+
.setApplicationId("fake")
77+
.build());
8778
}
8879

8980
private static void initializeProviders() {
@@ -138,36 +129,4 @@ public static FlowParameters getFlowParameters(Collection<String> providerIds) {
138129
true);
139130
}
140131

141-
public static void verifyCredentialSaveStarted(@NonNull Activity activity,
142-
@Nullable String providerId,
143-
@Nullable String email,
144-
@Nullable String password,
145-
@Nullable String phoneNumber) {
146-
147-
ShadowActivity shadowActivity = Shadows.shadowOf(activity);
148-
Intent startedIntent = shadowActivity.getNextStartedActivity();
149-
150-
// Verify that CredentialSaveActivity is next up
151-
Assert.assertEquals(startedIntent.getComponent().getClassName(),
152-
CredentialSaveActivity.class.getName());
153-
154-
// Check the credential passed
155-
Credential credential = startedIntent.getParcelableExtra(ExtraConstants.CREDENTIAL);
156-
157-
// Check the password
158-
assertEquals(credential.getPassword(), password);
159-
160-
// Non-password credentials have a provider ID
161-
if (TextUtils.isEmpty(password)) {
162-
assertEquals(credential.getAccountType(),
163-
ProviderUtils.providerIdToAccountType(providerId));
164-
}
165-
166-
// ID can either be email or phone number
167-
if (!TextUtils.isEmpty(phoneNumber)) {
168-
assertEquals(credential.getId(), phoneNumber);
169-
} else {
170-
assertEquals(credential.getId(), email);
171-
}
172-
}
173132
}

0 commit comments

Comments
 (0)