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

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

Issue 2710343003: Update Robolectric to 3.2.2 (Closed)
Patch Set: Update Robolectric to 3.2 Created 3 years, 9 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.ContentProvider;
19 import android.content.Context; 20 import android.content.Context;
20 21
21 import org.junit.After; 22 import org.junit.After;
22 import org.junit.Before; 23 import org.junit.Before;
23 import org.junit.Rule; 24 import org.junit.Rule;
24 import org.junit.Test; 25 import org.junit.Test;
25 import org.junit.runner.RunWith; 26 import org.junit.runner.RunWith;
26 import org.mockito.Mockito; 27 import org.mockito.Mockito;
27 import org.mockito.invocation.InvocationOnMock; 28 import org.mockito.invocation.InvocationOnMock;
28 import org.mockito.stubbing.Answer; 29 import org.mockito.stubbing.Answer;
29 import org.robolectric.RuntimeEnvironment; 30 import org.robolectric.RuntimeEnvironment;
30 import org.robolectric.annotation.Config; 31 import org.robolectric.annotation.Config;
32 import org.robolectric.annotation.Implementation;
33 import org.robolectric.annotation.Implements;
34 import org.robolectric.shadows.ShadowContentProvider;
31 35
32 import org.chromium.base.Callback; 36 import org.chromium.base.Callback;
33 import org.chromium.base.ContextUtils; 37 import org.chromium.base.ContextUtils;
34 import org.chromium.base.library_loader.ProcessInitException; 38 import org.chromium.base.library_loader.ProcessInitException;
35 import org.chromium.chrome.browser.DisableHistogramsRule; 39 import org.chromium.chrome.browser.DisableHistogramsRule;
36 import org.chromium.chrome.browser.init.ChromeBrowserInitializer; 40 import org.chromium.chrome.browser.init.ChromeBrowserInitializer;
37 import org.chromium.chrome.browser.superviseduser.SupervisedUserContentProvider. SupervisedUserQueryReply; 41 import org.chromium.chrome.browser.superviseduser.SupervisedUserContentProvider. SupervisedUserQueryReply;
38 import org.chromium.components.signin.AccountManagerDelegate; 42 import org.chromium.components.signin.AccountManagerDelegate;
39 import org.chromium.components.signin.AccountManagerHelper; 43 import org.chromium.components.signin.AccountManagerHelper;
40 import org.chromium.components.signin.ChromeSigninController; 44 import org.chromium.components.signin.ChromeSigninController;
41 import org.chromium.components.webrestrictions.browser.WebRestrictionsContentPro vider.WebRestrictionsResult; 45 import org.chromium.components.webrestrictions.browser.WebRestrictionsContentPro vider.WebRestrictionsResult;
42 import org.chromium.testing.local.LocalRobolectricTestRunner; 46 import org.chromium.testing.local.LocalRobolectricTestRunner;
43 47
44 /** 48 /**
45 * Tests of SupervisedUserContentProvider. This is tested as a simple class, not as a content 49 * Tests of SupervisedUserContentProvider. This is tested as a simple class, not as a content
46 * provider. The content provider aspects are tested with WebRestrictionsContent ProviderTest. 50 * provider. The content provider aspects are tested with WebRestrictionsContent ProviderTest.
47 */ 51 */
48 @RunWith(LocalRobolectricTestRunner.class) 52 @RunWith(LocalRobolectricTestRunner.class)
49 @Config(manifest = Config.NONE) 53 @Config(manifest = Config.NONE)
50 public class SupervisedUserContentProviderUnitTest { 54 public class SupervisedUserContentProviderUnitTest {
51 @Rule 55 @Rule
52 public DisableHistogramsRule mDisableHistogramsRule = new DisableHistogramsR ule(); 56 public DisableHistogramsRule mDisableHistogramsRule = new DisableHistogramsR ule();
53 57
54 private SupervisedUserContentProvider mSupervisedUserContentProvider; 58 private SupervisedUserContentProvider mSupervisedUserContentProvider;
55 59
56 private static final String DEFAULT_CALLING_PACKAGE = "com.example.some.app" ; 60 private static final String DEFAULT_CALLING_PACKAGE = "com.example.some.app" ;
57 61
62 /**
63 * Robolectric ShadowContentProvider that implements getContext.
64 */
65 @Implements(ContentProvider.class)
66 public static class MyShadowContentProvider extends ShadowContentProvider {
nyquist 2017/03/14 21:20:37 It seems like we are calling getContext() a few pl
mikecase (-- gone --) 2017/03/14 22:07:07 So for some info, in this commit they removed getC
nyquist 2017/03/14 22:17:30 Right; but it seems like they are attaching the co
67 @Implementation
68 public final Context getContext() {
69 return RuntimeEnvironment.application;
70 }
71 }
72
58 @Before 73 @Before
59 public void setUp() { 74 public void setUp() {
75 ContextUtils.initApplicationContextForTests(RuntimeEnvironment.applicati on);
76
60 // Ensure clean state (in particular not signed in). 77 // Ensure clean state (in particular not signed in).
61 ContextUtils.getAppSharedPreferences().edit().clear().apply(); 78 ContextUtils.getAppSharedPreferences().edit().clear().apply();
62 79
63 // Spy on the content provider so that we can watch its calls. Override methods that wrap 80 // Spy on the content provider so that we can watch its calls. Override methods that wrap
64 // things that can't be mocked (including native calls). 81 // things that can't be mocked (including native calls).
65 mSupervisedUserContentProvider = Mockito.spy(new SupervisedUserContentPr ovider() { 82 mSupervisedUserContentProvider = Mockito.spy(new SupervisedUserContentPr ovider() {
66 @Override 83 @Override
67 void startForcedSigninProcessor(Context context, Runnable onComplete ) { 84 void startForcedSigninProcessor(Context context, Runnable onComplete ) {
68 ChromeSigninController.get(RuntimeEnvironment.application) 85 ChromeSigninController.get(RuntimeEnvironment.application)
69 .setSignedInAccountName("Dummy"); 86 .setSignedInAccountName("Dummy");
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
176 .nativeRequestInsert(anyLong(), 193 .nativeRequestInsert(anyLong(),
177 any(SupervisedUserContentProvider.SupervisedUserInsertRe ply.class), 194 any(SupervisedUserContentProvider.SupervisedUserInsertRe ply.class),
178 anyString()); 195 anyString());
179 assertThat(mSupervisedUserContentProvider.requestInsert("url"), is(false )); 196 assertThat(mSupervisedUserContentProvider.requestInsert("url"), is(false ));
180 verify(mSupervisedUserContentProvider) 197 verify(mSupervisedUserContentProvider)
181 .nativeRequestInsert(eq(1234L), 198 .nativeRequestInsert(eq(1234L),
182 any(SupervisedUserContentProvider.SupervisedUserInsertRe ply.class), 199 any(SupervisedUserContentProvider.SupervisedUserInsertRe ply.class),
183 eq("url")); 200 eq("url"));
184 } 201 }
185 202
203 @Config(shadows = MyShadowContentProvider.class)
186 @Test 204 @Test
187 public void testShouldProceed_withStartupSignedIn() throws ProcessInitExcept ion { 205 public void testShouldProceed_withStartupSignedIn() throws ProcessInitExcept ion {
188 // Set up a signed in user 206 // Set up a signed in user
189 ChromeSigninController.get(RuntimeEnvironment.application).setSignedInAc countName("Dummy"); 207 ChromeSigninController.get(RuntimeEnvironment.application).setSignedInAc countName("Dummy");
190 // Mock things called during startup 208 // Mock things called during startup
191 ChromeBrowserInitializer mockBrowserInitializer = mock(ChromeBrowserInit ializer.class); 209 ChromeBrowserInitializer mockBrowserInitializer = mock(ChromeBrowserInit ializer.class);
192 ChromeBrowserInitializer.setForTesting(mockBrowserInitializer); 210 ChromeBrowserInitializer.setForTesting(mockBrowserInitializer);
193 211
194 WebRestrictionsResult result = 212 WebRestrictionsResult result =
195 mSupervisedUserContentProvider.shouldProceed(DEFAULT_CALLING_PAC KAGE, "url"); 213 mSupervisedUserContentProvider.shouldProceed(DEFAULT_CALLING_PAC KAGE, "url");
196 214
197 assertThat(result.shouldProceed(), is(true)); 215 assertThat(result.shouldProceed(), is(true));
198 verify(mockBrowserInitializer).handleSynchronousStartup(); 216 verify(mockBrowserInitializer).handleSynchronousStartup();
199 verify(mSupervisedUserContentProvider) 217 verify(mSupervisedUserContentProvider)
200 .nativeShouldProceed(eq(5678L), 218 .nativeShouldProceed(eq(5678L),
201 any(SupervisedUserContentProvider.SupervisedUserQueryRep ly.class), 219 any(SupervisedUserContentProvider.SupervisedUserQueryRep ly.class),
202 eq("url")); 220 eq("url"));
203 } 221 }
204 222
223 @Config(shadows = MyShadowContentProvider.class)
205 @SuppressWarnings("unchecked") 224 @SuppressWarnings("unchecked")
206 @Test 225 @Test
207 public void testShouldProceed_notSignedIn() throws ProcessInitException { 226 public void testShouldProceed_notSignedIn() throws ProcessInitException {
208 // Mock things called during startup 227 // Mock things called during startup
209 ChromeBrowserInitializer mockBrowserInitializer = mock(ChromeBrowserInit ializer.class); 228 ChromeBrowserInitializer mockBrowserInitializer = mock(ChromeBrowserInit ializer.class);
210 ChromeBrowserInitializer.setForTesting(mockBrowserInitializer); 229 ChromeBrowserInitializer.setForTesting(mockBrowserInitializer);
211 AccountManagerDelegate mockDelegate = mock(AccountManagerDelegate.class) ; 230 AccountManagerDelegate mockDelegate = mock(AccountManagerDelegate.class) ;
212 AccountManagerHelper.overrideAccountManagerHelperForTests( 231 AccountManagerHelper.overrideAccountManagerHelperForTests(
213 RuntimeEnvironment.application, mockDelegate); 232 RuntimeEnvironment.application, mockDelegate);
214 Account account = new Account("Google", "Dummy"); 233 Account account = new Account("Google", "Dummy");
215 when(mockDelegate.getAccountsByType("Google")).thenReturn(new Account[] {account}); 234 when(mockDelegate.getAccountsByType("Google")).thenReturn(new Account[] {account});
216 235
217 WebRestrictionsResult result = 236 WebRestrictionsResult result =
218 mSupervisedUserContentProvider.shouldProceed(DEFAULT_CALLING_PAC KAGE, "url"); 237 mSupervisedUserContentProvider.shouldProceed(DEFAULT_CALLING_PAC KAGE, "url");
219 238
220 assertThat(result.shouldProceed(), is(true)); 239 assertThat(result.shouldProceed(), is(true));
221 verify(mockBrowserInitializer).handleSynchronousStartup(); 240 verify(mockBrowserInitializer).handleSynchronousStartup();
222 verify(mSupervisedUserContentProvider) 241 verify(mSupervisedUserContentProvider)
223 .startForcedSigninProcessor(any(Context.class), any(Runnable.cla ss)); 242 .startForcedSigninProcessor(any(Context.class), any(Runnable.cla ss));
224 verify(mSupervisedUserContentProvider) 243 verify(mSupervisedUserContentProvider)
225 .listenForChildAccountStatusChange(any(Callback.class)); 244 .listenForChildAccountStatusChange(any(Callback.class));
226 verify(mSupervisedUserContentProvider) 245 verify(mSupervisedUserContentProvider)
227 .nativeShouldProceed(eq(5678L), 246 .nativeShouldProceed(eq(5678L),
228 any(SupervisedUserContentProvider.SupervisedUserQueryRep ly.class), 247 any(SupervisedUserContentProvider.SupervisedUserQueryRep ly.class),
229 eq("url")); 248 eq("url"));
230 } 249 }
231 250
251 @Config(shadows = MyShadowContentProvider.class)
232 @Test 252 @Test
233 public void testShouldProceed_cannotSignIn() { 253 public void testShouldProceed_cannotSignIn() {
234 // Mock things called during startup 254 // Mock things called during startup
235 ChromeBrowserInitializer mockBrowserInitializer = mock(ChromeBrowserInit ializer.class); 255 ChromeBrowserInitializer mockBrowserInitializer = mock(ChromeBrowserInit ializer.class);
236 ChromeBrowserInitializer.setForTesting(mockBrowserInitializer); 256 ChromeBrowserInitializer.setForTesting(mockBrowserInitializer);
237 AccountManagerDelegate mockDelegate = mock(AccountManagerDelegate.class) ; 257 AccountManagerDelegate mockDelegate = mock(AccountManagerDelegate.class) ;
238 AccountManagerHelper.overrideAccountManagerHelperForTests( 258 AccountManagerHelper.overrideAccountManagerHelperForTests(
239 RuntimeEnvironment.application, mockDelegate); 259 RuntimeEnvironment.application, mockDelegate);
240 Account account = new Account("Google", "Dummy"); 260 Account account = new Account("Google", "Dummy");
241 when(mockDelegate.getAccountsByType("Google")).thenReturn(new Account[] {account}); 261 when(mockDelegate.getAccountsByType("Google")).thenReturn(new Account[] {account});
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
287 307
288 WebRestrictionsResult wrongCallingPackage = mSupervisedUserContentProvid er.shouldProceed( 308 WebRestrictionsResult wrongCallingPackage = mSupervisedUserContentProvid er.shouldProceed(
289 DEFAULT_CALLING_PACKAGE, "https://accounts.google.com/reauth"); 309 DEFAULT_CALLING_PACKAGE, "https://accounts.google.com/reauth");
290 assertThat(wrongCallingPackage.shouldProceed(), is(false)); 310 assertThat(wrongCallingPackage.shouldProceed(), is(false));
291 311
292 WebRestrictionsResult nullCallingPackage = mSupervisedUserContentProvide r.shouldProceed( 312 WebRestrictionsResult nullCallingPackage = mSupervisedUserContentProvide r.shouldProceed(
293 null, "https://accounts.google.com/reauth"); 313 null, "https://accounts.google.com/reauth");
294 assertThat(nullCallingPackage.shouldProceed(), is(false)); 314 assertThat(nullCallingPackage.shouldProceed(), is(false));
295 } 315 }
296 } 316 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698