Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(123)

Side by Side Diff: chrome/android/junit/src/org/chromium/chrome/browser/externalauth/ExternalAuthUtilsTest.java

Issue 2551063003: Add a ProgressDialog during sign-in flow when GMS is updated. (Closed)
Patch Set: Update layout Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.chrome.browser.externalauth; 5 package org.chromium.chrome.browser.externalauth;
6 6
7 import static org.junit.Assert.assertFalse; 7 import static org.junit.Assert.assertFalse;
8 import static org.junit.Assert.assertTrue; 8 import static org.junit.Assert.assertTrue;
9 import static org.mockito.ArgumentMatchers.any; 9 import static org.mockito.ArgumentMatchers.any;
10 import static org.mockito.ArgumentMatchers.anyInt; 10 import static org.mockito.ArgumentMatchers.anyInt;
11 import static org.mockito.Mockito.doNothing; 11 import static org.mockito.Mockito.doNothing;
12 import static org.mockito.Mockito.inOrder; 12 import static org.mockito.Mockito.inOrder;
13 import static org.mockito.Mockito.never; 13 import static org.mockito.Mockito.never;
14 import static org.mockito.Mockito.verifyZeroInteractions; 14 import static org.mockito.Mockito.verifyZeroInteractions;
15 import static org.mockito.Mockito.when; 15 import static org.mockito.Mockito.when;
16 16
17 import android.content.Context; 17 import android.content.Context;
18 18
19 import com.google.android.gms.common.ConnectionResult; 19 import com.google.android.gms.common.ConnectionResult;
20 20
21 import org.chromium.base.test.util.Feature;
22 import org.chromium.testing.local.LocalRobolectricTestRunner;
23 import org.junit.Before; 21 import org.junit.Before;
24 import org.junit.Test; 22 import org.junit.Test;
25 import org.junit.runner.RunWith; 23 import org.junit.runner.RunWith;
26 import org.mockito.InOrder; 24 import org.mockito.InOrder;
27 import org.mockito.Mock; 25 import org.mockito.Mock;
28 import org.mockito.MockitoAnnotations; 26 import org.mockito.MockitoAnnotations;
29 import org.robolectric.annotation.Config; 27 import org.robolectric.annotation.Config;
30 28
29 import org.chromium.base.test.util.Feature;
30 import org.chromium.testing.local.LocalRobolectricTestRunner;
31
31 /** 32 /**
32 * Robolectric tests for {@link ExternalAuthUtils}. 33 * Robolectric tests for {@link ExternalAuthUtils}.
33 */ 34 */
34 @RunWith(LocalRobolectricTestRunner.class) 35 @RunWith(LocalRobolectricTestRunner.class)
35 @Config(manifest = Config.NONE) 36 @Config(manifest = Config.NONE)
36 public class ExternalAuthUtilsTest { 37 public class ExternalAuthUtilsTest {
37 private static final int ERR = 999; 38 private static final int ERR = 999;
38 @Mock private Context mContext; 39 @Mock private Context mContext;
39 @Mock private ExternalAuthUtils mExternalAuthUtils; 40 @Mock private ExternalAuthUtils mExternalAuthUtils;
40 @Mock private UserRecoverableErrorHandler mUserRecoverableErrorHandler; 41 @Mock private UserRecoverableErrorHandler mUserRecoverableErrorHandler;
41 42
42 @Before 43 @Before
43 public void setUp() { 44 public void setUp() {
44 MockitoAnnotations.initMocks(this); 45 MockitoAnnotations.initMocks(this);
45 } 46 }
46 47
47 @Test 48 @Test
48 @Feature({"GooglePlayServices"}) 49 @Feature({"GooglePlayServices"})
49 public void testCanUseGooglePlayServicesSuccess() { 50 public void testCanUseGooglePlayServicesSuccess() {
50 when(mExternalAuthUtils.canUseGooglePlayServices(any(Context.class), 51 when(mExternalAuthUtils.canUseGooglePlayServices(any(Context.class),
51 any(UserRecoverableErrorHandler.class))).thenCallRealMethod (); 52 any(UserRecoverableErrorHandler.class))).thenCallRealMethod();
53 when(mExternalAuthUtils.canUseGooglePlayServicesResultCode(any(Context.c lass),
54 any(UserRecoverableErrorHandler.class))).thenCallRealMethod();
52 when(mExternalAuthUtils.checkGooglePlayServicesAvailable(mContext)).then Return( 55 when(mExternalAuthUtils.checkGooglePlayServicesAvailable(mContext)).then Return(
53 ConnectionResult.SUCCESS); 56 ConnectionResult.SUCCESS);
54 assertTrue(mExternalAuthUtils.canUseGooglePlayServices( 57 assertTrue(mExternalAuthUtils.canUseGooglePlayServices(
55 mContext, mUserRecoverableErrorHandler)); 58 mContext, mUserRecoverableErrorHandler));
56 verifyZeroInteractions(mUserRecoverableErrorHandler); 59 verifyZeroInteractions(mUserRecoverableErrorHandler);
57 60
58 // Verifying stubs can be an anti-pattern but here it is important to 61 // Verifying stubs can be an anti-pattern but here it is important to
59 // test that the real method canUseGooglePlayServices did invoke these 62 // test that the real method canUseGooglePlayServices did invoke these
60 // methods, which subclasses are expected to be able to override. 63 // methods, which subclasses are expected to be able to override.
61 InOrder inOrder = inOrder(mExternalAuthUtils); 64 InOrder inOrder = inOrder(mExternalAuthUtils);
62 inOrder.verify(mExternalAuthUtils).checkGooglePlayServicesAvailable(mCon text); 65 inOrder.verify(mExternalAuthUtils).checkGooglePlayServicesAvailable(mCon text);
63 inOrder.verify(mExternalAuthUtils).recordConnectionResult(ConnectionResu lt.SUCCESS); 66 inOrder.verify(mExternalAuthUtils).recordConnectionResult(ConnectionResu lt.SUCCESS);
64 inOrder.verify(mExternalAuthUtils, never()).isUserRecoverableError(anyIn t()); 67 inOrder.verify(mExternalAuthUtils, never()).isUserRecoverableError(anyIn t());
65 inOrder.verify(mExternalAuthUtils, never()).describeError(anyInt()); 68 inOrder.verify(mExternalAuthUtils, never()).describeError(anyInt());
66 } 69 }
67 70
68 @Test 71 @Test
69 @Feature({"GooglePlayServices"}) 72 @Feature({"GooglePlayServices"})
70 public void testCanUseGooglePlayServicesNonUserRecoverableFailure() { 73 public void testCanUseGooglePlayServicesNonUserRecoverableFailure() {
71 when(mExternalAuthUtils.canUseGooglePlayServices(any(Context.class), 74 when(mExternalAuthUtils.canUseGooglePlayServices(any(Context.class),
72 any(UserRecoverableErrorHandler.class))).thenCallRealMethod (); 75 any(UserRecoverableErrorHandler.class))).thenCallRealMethod();
76 when(mExternalAuthUtils.canUseGooglePlayServicesResultCode(any(Context.c lass),
77 any(UserRecoverableErrorHandler.class))).thenCallRealMethod();
73 when(mExternalAuthUtils.checkGooglePlayServicesAvailable(mContext)).then Return(ERR); 78 when(mExternalAuthUtils.checkGooglePlayServicesAvailable(mContext)).then Return(ERR);
74 when(mExternalAuthUtils.isUserRecoverableError(ERR)).thenReturn(false); // Non-recoverable 79 when(mExternalAuthUtils.isUserRecoverableError(ERR)).thenReturn(false); // Non-recoverable
75 assertFalse(mExternalAuthUtils.canUseGooglePlayServices( 80 assertFalse(mExternalAuthUtils.canUseGooglePlayServices(
76 mContext, mUserRecoverableErrorHandler)); 81 mContext, mUserRecoverableErrorHandler));
77 verifyZeroInteractions(mUserRecoverableErrorHandler); 82 verifyZeroInteractions(mUserRecoverableErrorHandler);
78 83
79 // Verifying stubs can be an anti-pattern but here it is important to 84 // Verifying stubs can be an anti-pattern but here it is important to
80 // test that the real method canUseGooglePlayServices did invoke these 85 // test that the real method canUseGooglePlayServices did invoke these
81 // methods, which subclasses are expected to be able to override. 86 // methods, which subclasses are expected to be able to override.
82 InOrder inOrder = inOrder(mExternalAuthUtils); 87 InOrder inOrder = inOrder(mExternalAuthUtils);
83 inOrder.verify(mExternalAuthUtils).checkGooglePlayServicesAvailable(mCon text); 88 inOrder.verify(mExternalAuthUtils).checkGooglePlayServicesAvailable(mCon text);
84 inOrder.verify(mExternalAuthUtils).recordConnectionResult(ERR); 89 inOrder.verify(mExternalAuthUtils).recordConnectionResult(ERR);
85 inOrder.verify(mExternalAuthUtils).isUserRecoverableError(ERR); 90 inOrder.verify(mExternalAuthUtils).isUserRecoverableError(ERR);
86 } 91 }
87 92
88 @Test 93 @Test
89 @Feature({"GooglePlayServices"}) 94 @Feature({"GooglePlayServices"})
90 public void testCanUseGooglePlayServicesUserRecoverableFailure() { 95 public void testCanUseGooglePlayServicesUserRecoverableFailure() {
91 when(mExternalAuthUtils.canUseGooglePlayServices(any(Context.class), 96 when(mExternalAuthUtils.canUseGooglePlayServices(any(Context.class),
92 any(UserRecoverableErrorHandler.class))).thenCallRealMethod (); 97 any(UserRecoverableErrorHandler.class))).thenCallRealMethod();
98 when(mExternalAuthUtils.canUseGooglePlayServicesResultCode(any(Context.c lass),
99 any(UserRecoverableErrorHandler.class))).thenCallRealMethod();
93 doNothing().when(mUserRecoverableErrorHandler).handleError(mContext, ERR ); 100 doNothing().when(mUserRecoverableErrorHandler).handleError(mContext, ERR );
94 when(mExternalAuthUtils.checkGooglePlayServicesAvailable(mContext)).then Return(ERR); 101 when(mExternalAuthUtils.checkGooglePlayServicesAvailable(mContext)).then Return(ERR);
95 when(mExternalAuthUtils.isUserRecoverableError(ERR)).thenReturn(true); // Recoverable 102 when(mExternalAuthUtils.isUserRecoverableError(ERR)).thenReturn(true); // Recoverable
96 when(mExternalAuthUtils.describeError(anyInt())).thenReturn("unused"); // For completeness 103 when(mExternalAuthUtils.describeError(anyInt())).thenReturn("unused"); // For completeness
97 assertFalse(mExternalAuthUtils.canUseGooglePlayServices( 104 assertFalse(mExternalAuthUtils.canUseGooglePlayServices(
98 mContext, mUserRecoverableErrorHandler)); 105 mContext, mUserRecoverableErrorHandler));
99 106
100 // Verifying stubs can be an anti-pattern but here it is important to 107 // Verifying stubs can be an anti-pattern but here it is important to
101 // test that the real method canUseGooglePlayServices did invoke these 108 // test that the real method canUseGooglePlayServices did invoke these
102 // methods, which subclasses are expected to be able to override. 109 // methods, which subclasses are expected to be able to override.
103 InOrder inOrder = inOrder(mExternalAuthUtils, mUserRecoverableErrorHandl er); 110 InOrder inOrder = inOrder(mExternalAuthUtils, mUserRecoverableErrorHandl er);
104 inOrder.verify(mExternalAuthUtils).checkGooglePlayServicesAvailable(mCon text); 111 inOrder.verify(mExternalAuthUtils).checkGooglePlayServicesAvailable(mCon text);
105 inOrder.verify(mExternalAuthUtils).recordConnectionResult(ERR); 112 inOrder.verify(mExternalAuthUtils).recordConnectionResult(ERR);
106 inOrder.verify(mExternalAuthUtils).isUserRecoverableError(ERR); 113 inOrder.verify(mExternalAuthUtils).isUserRecoverableError(ERR);
107 inOrder.verify(mUserRecoverableErrorHandler).handleError(mContext, ERR); 114 inOrder.verify(mUserRecoverableErrorHandler).handleError(mContext, ERR);
108 } 115 }
109 } 116 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698