Skip to content

Commit 8832dbd

Browse files
committed
Remove testing hacks
Signed-off-by: Alex Saveau <saveau.alexandre@gmail.com>
1 parent fc9e46a commit 8832dbd

File tree

3 files changed

+43
-30
lines changed

3 files changed

+43
-30
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: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import com.firebase.ui.auth.util.ExtraConstants;
2323
import com.google.firebase.FirebaseApp;
2424
import com.google.firebase.auth.EmailAuthProvider;
25-
import com.google.firebase.auth.FirebaseAuth;
2625

2726
import org.junit.Before;
2827
import org.junit.Test;
@@ -32,14 +31,12 @@
3231
import java.util.Arrays;
3332

3433
import static junit.framework.Assert.assertEquals;
35-
import static org.mockito.Mockito.mock;
3634

3735
@RunWith(RobolectricTestRunner.class)
3836
public class AuthUITest {
3937
@Before
4038
public void setUp() {
4139
TestHelper.initialize();
42-
AuthUI.sDefaultAuth = mock(FirebaseAuth.class);
4340
}
4441

4542
@Test

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

Lines changed: 42 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,9 @@
3131
import com.firebase.ui.auth.util.data.ProviderUtils;
3232
import com.google.android.gms.auth.api.credentials.Credential;
3333
import com.google.firebase.FirebaseApp;
34-
import com.google.firebase.FirebaseOptions;
3534
import com.google.firebase.auth.EmailAuthProvider;
3635
import com.google.firebase.auth.FacebookAuthProvider;
36+
import com.google.firebase.auth.FirebaseAuth;
3737
import com.google.firebase.auth.FirebaseUser;
3838
import com.google.firebase.auth.GoogleAuthProvider;
3939
import com.google.firebase.auth.PhoneAuthProvider;
@@ -44,19 +44,21 @@
4444
import org.robolectric.Shadows;
4545
import org.robolectric.shadows.ShadowActivity;
4646

47+
import java.lang.reflect.Field;
48+
import java.lang.reflect.ParameterizedType;
49+
import java.lang.reflect.Type;
4750
import java.util.ArrayList;
4851
import java.util.Collection;
4952
import java.util.List;
53+
import java.util.Map;
5054

5155
import static junit.framework.Assert.assertEquals;
56+
import static org.mockito.ArgumentMatchers.eq;
5257
import static org.mockito.Mockito.mock;
5358
import static org.mockito.Mockito.spy;
5459
import static org.mockito.Mockito.when;
5560

5661
public class TestHelper {
57-
private static final String APPLICATION_ID = "testAppId";
58-
private static final String API_KEY = "fakeKey";
59-
6062
public static void initialize() {
6163
spyContextAndResources();
6264
AuthUI.setApplicationContext(RuntimeEnvironment.application);
@@ -72,18 +74,42 @@ private static void spyContextAndResources() {
7274
when(RuntimeEnvironment.application.getResources()).thenReturn(spiedResources);
7375
}
7476

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);
77+
private static void initializeApp(Context context) {
78+
if (!FirebaseApp.getApps(context).isEmpty()) { return; }
79+
80+
for (Field field : FirebaseApp.class.getDeclaredFields()) {
81+
field.setAccessible(true);
82+
83+
Object o;
84+
try {
85+
o = field.get(null);
86+
} catch (IllegalAccessException e) {
87+
throw new IllegalStateException(e);
88+
} catch (NullPointerException e) {
89+
continue; // Instance field, move on
90+
}
91+
92+
Type genericType = field.getGenericType();
93+
if (o instanceof Map && genericType instanceof ParameterizedType) {
94+
Type[] parameterTypes = ((ParameterizedType) genericType).getActualTypeArguments();
95+
if (parameterTypes.length != 2 || parameterTypes[0] != String.class
96+
|| parameterTypes[1] != FirebaseApp.class) {
97+
continue;
98+
}
99+
100+
//noinspection unchecked
101+
Map<String, FirebaseApp> instances = (Map<String, FirebaseApp>) o;
102+
103+
instances.put(FirebaseApp.DEFAULT_APP_NAME, mock(FirebaseApp.class));
104+
105+
break;
106+
}
86107
}
108+
109+
FirebaseApp app = FirebaseApp.getInstance();
110+
when(app.get(eq(FirebaseAuth.class))).thenReturn(mock(FirebaseAuth.class));
111+
when(app.getApplicationContext()).thenReturn(context);
112+
when(app.getName()).thenReturn(FirebaseApp.DEFAULT_APP_NAME);
87113
}
88114

89115
private static void initializeProviders() {
@@ -138,7 +164,7 @@ public static FlowParameters getFlowParameters(Collection<String> providerIds) {
138164
true);
139165
}
140166

141-
public static void verifyCredentialSaveStarted(@NonNull Activity activity,
167+
public static void verifyCredentialSaveStarted(@NonNull Activity activity,
142168
@Nullable String providerId,
143169
@Nullable String email,
144170
@Nullable String password,

0 commit comments

Comments
 (0)