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

Side by Side Diff: chrome/android/junit/src/org/chromium/chrome/browser/superviseduser/SupervisedUserContentProviderUnitTest.java

Issue 2872743003: Change AccountManagerHelper initialization
Patch Set: Created 3 years, 7 months 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.superviseduser; 5 package org.chromium.chrome.browser.superviseduser;
6 6
7 import static org.hamcrest.CoreMatchers.is; 7 import static org.hamcrest.CoreMatchers.is;
8 import static org.junit.Assert.assertThat; 8 import static org.junit.Assert.assertThat;
9 import static org.mockito.ArgumentMatchers.any; 9 import static org.mockito.ArgumentMatchers.any;
10 import static org.mockito.ArgumentMatchers.anyLong; 10 import static org.mockito.ArgumentMatchers.anyLong;
11 import static org.mockito.ArgumentMatchers.anyString; 11 import static org.mockito.ArgumentMatchers.anyString;
12 import static org.mockito.ArgumentMatchers.eq; 12 import static org.mockito.ArgumentMatchers.eq;
13 import static org.mockito.Mockito.doAnswer; 13 import static org.mockito.Mockito.doAnswer;
14 import static org.mockito.Mockito.mock; 14 import static org.mockito.Mockito.mock;
15 import static org.mockito.Mockito.verify; 15 import static org.mockito.Mockito.verify;
16 import static org.mockito.Mockito.when; 16 import static org.mockito.Mockito.when;
17 17
18 import android.accounts.Account; 18 import android.accounts.Account;
19 import android.content.Context; 19 import android.content.Context;
20 import android.content.pm.ProviderInfo; 20 import android.content.pm.ProviderInfo;
21 21
22 import org.junit.After; 22 import org.junit.After;
23 import org.junit.Before; 23 import org.junit.Before;
24 import org.junit.BeforeClass;
24 import org.junit.Rule; 25 import org.junit.Rule;
25 import org.junit.Test; 26 import org.junit.Test;
26 import org.junit.runner.RunWith; 27 import org.junit.runner.RunWith;
27 import org.mockito.Mockito; 28 import org.mockito.Mockito;
28 import org.mockito.invocation.InvocationOnMock; 29 import org.mockito.invocation.InvocationOnMock;
29 import org.mockito.stubbing.Answer; 30 import org.mockito.stubbing.Answer;
30 import org.robolectric.Robolectric; 31 import org.robolectric.Robolectric;
31 import org.robolectric.RuntimeEnvironment; 32 import org.robolectric.RuntimeEnvironment;
32 import org.robolectric.annotation.Config; 33 import org.robolectric.annotation.Config;
33 34
(...skipping 16 matching lines...) Expand all
50 @RunWith(LocalRobolectricTestRunner.class) 51 @RunWith(LocalRobolectricTestRunner.class)
51 @Config(manifest = Config.NONE) 52 @Config(manifest = Config.NONE)
52 public class SupervisedUserContentProviderUnitTest { 53 public class SupervisedUserContentProviderUnitTest {
53 @Rule 54 @Rule
54 public DisableHistogramsRule mDisableHistogramsRule = new DisableHistogramsR ule(); 55 public DisableHistogramsRule mDisableHistogramsRule = new DisableHistogramsR ule();
55 56
56 private SupervisedUserContentProvider mSupervisedUserContentProvider; 57 private SupervisedUserContentProvider mSupervisedUserContentProvider;
57 58
58 private static final String DEFAULT_CALLING_PACKAGE = "com.example.some.app" ; 59 private static final String DEFAULT_CALLING_PACKAGE = "com.example.some.app" ;
59 60
61 private static AccountManagerDelegate sMockDelegate;
62
63 @BeforeClass
64 public static void overrideAccountManagerHelper() {
65 sMockDelegate = mock(AccountManagerDelegate.class);
66 AccountManagerHelper.overrideAccountManagerHelperForTests(sMockDelegate) ;
67 }
68
60 // Override methods that wrap things that can't be mocked (including native calls). 69 // Override methods that wrap things that can't be mocked (including native calls).
61 private static class MySupervisedUserContentProvider extends SupervisedUserC ontentProvider { 70 private static class MySupervisedUserContentProvider extends SupervisedUserC ontentProvider {
62 @Override 71 @Override
63 void startForcedSigninProcessor(Context context, Runnable onComplete) { 72 void startForcedSigninProcessor(Context context, Runnable onComplete) {
64 ChromeSigninController.get().setSignedInAccountName("Dummy"); 73 ChromeSigninController.get().setSignedInAccountName("Dummy");
65 onComplete.run(); 74 onComplete.run();
66 } 75 }
67 76
68 @Override 77 @Override
69 void listenForChildAccountStatusChange(Callback<Boolean> callback) { 78 void listenForChildAccountStatusChange(Callback<Boolean> callback) {
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
211 any(SupervisedUserContentProvider.SupervisedUserQueryRep ly.class), 220 any(SupervisedUserContentProvider.SupervisedUserQueryRep ly.class),
212 eq("url")); 221 eq("url"));
213 } 222 }
214 223
215 @SuppressWarnings("unchecked") 224 @SuppressWarnings("unchecked")
216 @Test 225 @Test
217 public void testShouldProceed_notSignedIn() throws ProcessInitException { 226 public void testShouldProceed_notSignedIn() throws ProcessInitException {
218 // Mock things called during startup 227 // Mock things called during startup
219 ChromeBrowserInitializer mockBrowserInitializer = mock(ChromeBrowserInit ializer.class); 228 ChromeBrowserInitializer mockBrowserInitializer = mock(ChromeBrowserInit ializer.class);
220 ChromeBrowserInitializer.setForTesting(mockBrowserInitializer); 229 ChromeBrowserInitializer.setForTesting(mockBrowserInitializer);
221 AccountManagerDelegate mockDelegate = mock(AccountManagerDelegate.class) ;
222 AccountManagerHelper.overrideAccountManagerHelperForTests(
223 RuntimeEnvironment.application, mockDelegate);
224 Account account = new Account("Google", "Dummy"); 230 Account account = new Account("Google", "Dummy");
225 when(mockDelegate.getAccountsByType("Google")).thenReturn(new Account[] {account}); 231 when(sMockDelegate.getAccountsByType("Google")).thenReturn(new Account[] {account});
226 232
227 WebRestrictionsResult result = 233 WebRestrictionsResult result =
228 mSupervisedUserContentProvider.shouldProceed(DEFAULT_CALLING_PAC KAGE, "url"); 234 mSupervisedUserContentProvider.shouldProceed(DEFAULT_CALLING_PAC KAGE, "url");
229 235
230 assertThat(result.shouldProceed(), is(true)); 236 assertThat(result.shouldProceed(), is(true));
231 verify(mockBrowserInitializer).handleSynchronousStartup(); 237 verify(mockBrowserInitializer).handleSynchronousStartup();
232 verify(mSupervisedUserContentProvider) 238 verify(mSupervisedUserContentProvider)
233 .startForcedSigninProcessor(any(Context.class), any(Runnable.cla ss)); 239 .startForcedSigninProcessor(any(Context.class), any(Runnable.cla ss));
234 verify(mSupervisedUserContentProvider) 240 verify(mSupervisedUserContentProvider)
235 .listenForChildAccountStatusChange(any(Callback.class)); 241 .listenForChildAccountStatusChange(any(Callback.class));
236 verify(mSupervisedUserContentProvider) 242 verify(mSupervisedUserContentProvider)
237 .nativeShouldProceed(eq(5678L), 243 .nativeShouldProceed(eq(5678L),
238 any(SupervisedUserContentProvider.SupervisedUserQueryRep ly.class), 244 any(SupervisedUserContentProvider.SupervisedUserQueryRep ly.class),
239 eq("url")); 245 eq("url"));
240
241 AccountManagerHelper.resetAccountManagerHelperForTests();
242 } 246 }
243 247
244 @Test 248 @Test
245 public void testShouldProceed_cannotSignIn() { 249 public void testShouldProceed_cannotSignIn() {
246 // Mock things called during startup 250 // Mock things called during startup
247 ChromeBrowserInitializer mockBrowserInitializer = mock(ChromeBrowserInit ializer.class); 251 ChromeBrowserInitializer mockBrowserInitializer = mock(ChromeBrowserInit ializer.class);
248 ChromeBrowserInitializer.setForTesting(mockBrowserInitializer); 252 ChromeBrowserInitializer.setForTesting(mockBrowserInitializer);
249 AccountManagerDelegate mockDelegate = mock(AccountManagerDelegate.class) ;
250 AccountManagerHelper.overrideAccountManagerHelperForTests(
251 RuntimeEnvironment.application, mockDelegate);
252 Account account = new Account("Google", "Dummy"); 253 Account account = new Account("Google", "Dummy");
253 when(mockDelegate.getAccountsByType("Google")).thenReturn(new Account[] {account}); 254 when(sMockDelegate.getAccountsByType("Google")).thenReturn(new Account[] {account});
254 255
255 // Change the behavior of the forced sign-in processor to not sign in. 256 // Change the behavior of the forced sign-in processor to not sign in.
256 doAnswer(new Answer<Void>() { 257 doAnswer(new Answer<Void>() {
257 @Override 258 @Override
258 public Void answer(InvocationOnMock invocation) throws Throwable { 259 public Void answer(InvocationOnMock invocation) throws Throwable {
259 invocation.<Runnable>getArgument(1).run(); 260 invocation.<Runnable>getArgument(1).run();
260 return null; 261 return null;
261 } 262 }
262 }) 263 })
263 .when(mSupervisedUserContentProvider) 264 .when(mSupervisedUserContentProvider)
264 .startForcedSigninProcessor(any(Context.class), any(Runnable.cla ss)); 265 .startForcedSigninProcessor(any(Context.class), any(Runnable.cla ss));
265 266
266 WebRestrictionsResult result = 267 WebRestrictionsResult result =
267 mSupervisedUserContentProvider.shouldProceed(DEFAULT_CALLING_PAC KAGE, "url"); 268 mSupervisedUserContentProvider.shouldProceed(DEFAULT_CALLING_PAC KAGE, "url");
268 269
269 assertThat(result.shouldProceed(), is(false)); 270 assertThat(result.shouldProceed(), is(false));
270 assertThat(result.getErrorInt(0), is(5)); 271 assertThat(result.getErrorInt(0), is(5));
271
272 AccountManagerHelper.resetAccountManagerHelperForTests();
273 } 272 }
274 273
275 @Test 274 @Test
276 public void testShouldProceed_requestWhitelisted() { 275 public void testShouldProceed_requestWhitelisted() {
277 mSupervisedUserContentProvider.setNativeSupervisedUserContentProviderFor Testing(1234L); 276 mSupervisedUserContentProvider.setNativeSupervisedUserContentProviderFor Testing(1234L);
278 277
279 // Modify the result of the native call to block any URL. 278 // Modify the result of the native call to block any URL.
280 doAnswer(new Answer<Void>() { 279 doAnswer(new Answer<Void>() {
281 @Override 280 @Override
282 public Void answer(InvocationOnMock invocation) throws Throwable { 281 public Void answer(InvocationOnMock invocation) throws Throwable {
(...skipping 18 matching lines...) Expand all
301 300
302 WebRestrictionsResult wrongCallingPackage = mSupervisedUserContentProvid er.shouldProceed( 301 WebRestrictionsResult wrongCallingPackage = mSupervisedUserContentProvid er.shouldProceed(
303 DEFAULT_CALLING_PACKAGE, "https://accounts.google.com/reauth"); 302 DEFAULT_CALLING_PACKAGE, "https://accounts.google.com/reauth");
304 assertThat(wrongCallingPackage.shouldProceed(), is(false)); 303 assertThat(wrongCallingPackage.shouldProceed(), is(false));
305 304
306 WebRestrictionsResult nullCallingPackage = mSupervisedUserContentProvide r.shouldProceed( 305 WebRestrictionsResult nullCallingPackage = mSupervisedUserContentProvide r.shouldProceed(
307 null, "https://accounts.google.com/reauth"); 306 null, "https://accounts.google.com/reauth");
308 assertThat(nullCallingPackage.shouldProceed(), is(false)); 307 assertThat(nullCallingPackage.shouldProceed(), is(false));
309 } 308 }
310 } 309 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698