Skip to content

Commit 57cd78a

Browse files
author
rachaprince
authored
Adds more unit tests for signin flow (#2786)
1 parent 4ec2725 commit 57cd78a

File tree

1 file changed

+39
-12
lines changed

1 file changed

+39
-12
lines changed

firebase-app-distribution/src/test/java/com/google/firebase/appdistribution/FirebaseAppDistributionTest.java

Lines changed: 39 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -48,17 +48,8 @@
4848

4949
@RunWith(RobolectricTestRunner.class)
5050
public class FirebaseAppDistributionTest {
51-
52-
private FirebaseApp firebaseApp;
53-
private FirebaseAppDistribution firebaseAppDistribution;
54-
55-
@Mock private FirebaseInstallationsApi mockFirebaseInstallations;
56-
@Mock private Bundle mockBundle;
57-
@Mock SignInResultActivity mockSignInResultActivity;
58-
5951
public static final String TEST_API_KEY = "AIzaSyabcdefghijklmnopqrstuvwxyz1234567";
6052
public static final String TEST_APP_ID_1 = "1:123456789:android:abcdef";
61-
public static final String TEST_APP_NAME = "TestApp";
6253
public static final String TEST_PROJECT_ID = "777777777777";
6354
public static final String TEST_FID_1 = "cccccccccccccccccccccc";
6455
public static final String TEST_URL =
@@ -68,11 +59,17 @@ public class FirebaseAppDistributionTest {
6859
+ "&packageName=com.google.firebase.appdistribution.test",
6960
TEST_APP_ID_1, TEST_FID_1);
7061

62+
private FirebaseApp firebaseApp;
63+
private FirebaseAppDistribution firebaseAppDistribution;
7164
private TestActivity activity;
7265
private ShadowActivity shadowActivity;
7366
private ShadowPackageManager shadowPackageManager;
7467

75-
public static class TestActivity extends Activity {}
68+
@Mock private FirebaseInstallationsApi mockFirebaseInstallations;
69+
@Mock private Bundle mockBundle;
70+
@Mock SignInResultActivity mockSignInResultActivity;
71+
72+
static class TestActivity extends Activity {}
7673

7774
@Before
7875
public void setup() {
@@ -102,7 +99,6 @@ public void setup() {
10299

103100
@Test
104101
public void signInTester_whenDialogConfirmedAndChromeAvailable_opensCustomTab() {
105-
106102
firebaseAppDistribution.onActivityResumed(activity);
107103
final ResolveInfo resolveInfo = new ResolveInfo();
108104
resolveInfo.resolvePackageName = "garbage";
@@ -111,7 +107,27 @@ public void signInTester_whenDialogConfirmedAndChromeAvailable_opensCustomTab()
111107
customTabIntent.setPackage("com.android.chrome");
112108
shadowPackageManager.addResolveInfoForIntent(customTabIntent, resolveInfo);
113109

114-
Task<Void> signInTask = firebaseAppDistribution.signInTester();
110+
firebaseAppDistribution.signInTester();
111+
112+
if (ShadowAlertDialog.getLatestDialog() instanceof AlertDialog) {
113+
AlertDialog dialog = (AlertDialog) ShadowAlertDialog.getLatestDialog();
114+
assertTrue(dialog.isShowing());
115+
dialog.getButton(AlertDialog.BUTTON_POSITIVE).performClick();
116+
}
117+
118+
verify(mockFirebaseInstallations, times(1)).getId();
119+
assertThat(shadowActivity.getNextStartedActivity().getData()).isEqualTo(Uri.parse(TEST_URL));
120+
}
121+
122+
@Test
123+
public void signInTester_whenDialogConfirmedAndChromeNotAvailable_opensBrowserIntent() {
124+
firebaseAppDistribution.onActivityResumed(activity);
125+
final ResolveInfo resolveInfo = new ResolveInfo();
126+
resolveInfo.resolvePackageName = "garbage";
127+
final Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(TEST_URL));
128+
shadowPackageManager.addResolveInfoForIntent(browserIntent, resolveInfo);
129+
130+
firebaseAppDistribution.signInTester();
115131

116132
if (ShadowAlertDialog.getLatestDialog() instanceof AlertDialog) {
117133
AlertDialog dialog = (AlertDialog) ShadowAlertDialog.getLatestDialog();
@@ -153,4 +169,15 @@ public void signInTester_whenReturnFromSignIn_taskSucceeds() {
153169
firebaseAppDistribution.onActivityCreated(mockSignInResultActivity, mockBundle);
154170
assertTrue(signInTask.isSuccessful());
155171
}
172+
173+
@Test
174+
public void signInTester_whenSignInCalledMultipleTimes_cancelsPreviousTask() {
175+
firebaseAppDistribution.onActivityResumed(activity);
176+
177+
Task<Void> signInTask1 = firebaseAppDistribution.signInTester();
178+
Task<Void> signInTask2 = firebaseAppDistribution.signInTester();
179+
180+
assertTrue(signInTask1.isCanceled());
181+
assertFalse(signInTask2.isComplete());
182+
}
156183
}

0 commit comments

Comments
 (0)