| Index: chrome/android/junit/src/org/chromium/chrome/browser/superviseduser/SupervisedUserContentProviderUnitTest.java
|
| diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/superviseduser/SupervisedUserContentProviderUnitTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/superviseduser/SupervisedUserContentProviderUnitTest.java
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..650b97f7e5e3712c59feccd1d4804cdcb343b044
|
| --- /dev/null
|
| +++ b/chrome/android/junit/src/org/chromium/chrome/browser/superviseduser/SupervisedUserContentProviderUnitTest.java
|
| @@ -0,0 +1,132 @@
|
| +// Copyright 2015 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +package org.chromium.chrome.browser.superviseduser;
|
| +
|
| +import static org.hamcrest.CoreMatchers.is;
|
| +import static org.junit.Assert.assertThat;
|
| +import static org.mockito.Matchers.any;
|
| +import static org.mockito.Matchers.anyLong;
|
| +import static org.mockito.Matchers.anyString;
|
| +import static org.mockito.Matchers.eq;
|
| +import static org.mockito.Mockito.doAnswer;
|
| +import static org.mockito.Mockito.times;
|
| +import static org.mockito.Mockito.verify;
|
| +
|
| +import android.util.Pair;
|
| +
|
| +import org.chromium.testing.local.LocalRobolectricTestRunner;
|
| +import org.junit.Before;
|
| +import org.junit.Test;
|
| +import org.junit.runner.RunWith;
|
| +import org.mockito.Mockito;
|
| +import org.mockito.invocation.InvocationOnMock;
|
| +import org.mockito.stubbing.Answer;
|
| +import org.robolectric.annotation.Config;
|
| +
|
| +/**
|
| + * Tests of SupervisedUserContentProvider. This is tested as a simple class, not as a content
|
| + * provider. The content provider aspects are tested with WebRestrictionsContentProviderTest.
|
| + */
|
| +@RunWith(LocalRobolectricTestRunner.class)
|
| +@Config(manifest = Config.NONE)
|
| +public class SupervisedUserContentProviderUnitTest {
|
| +
|
| + private SupervisedUserContentProvider mSupervisedUserContentProvider;
|
| +
|
| + @Before
|
| + public void setUp() {
|
| + mSupervisedUserContentProvider = Mockito.spy(new SupervisedUserContentProvider());
|
| + mSupervisedUserContentProvider.setNativeSupervisedUserContentProviderForTesting(1234L);
|
| + }
|
| +
|
| + @Test
|
| + public void testShouldProceed() throws InterruptedException {
|
| + // Mock the native call for a permitted URL
|
| + doAnswer(new Answer<Void>() {
|
| +
|
| + @Override
|
| + public Void answer(InvocationOnMock invocation) throws Throwable {
|
| + Object args[] = invocation.getArguments();
|
| + ((SupervisedUserContentProvider.SupervisedUserQueryReply) args[1])
|
| + .onQueryComplete(true, null);
|
| + return null;
|
| + }
|
| +
|
| + })
|
| + .when(mSupervisedUserContentProvider)
|
| + .nativeShouldProceed(anyLong(),
|
| + any(SupervisedUserContentProvider.SupervisedUserQueryReply.class),
|
| + anyString());
|
| + assertThat(mSupervisedUserContentProvider.shouldProceed("url"),
|
| + is(new Pair<Boolean, String>(true, null)));
|
| + verify(mSupervisedUserContentProvider)
|
| + .nativeShouldProceed(eq(1234L),
|
| + any(SupervisedUserContentProvider.SupervisedUserQueryReply.class),
|
| + eq("url"));
|
| + // Mock the native call for a forbidden URL
|
| + doAnswer(new Answer<Void>() {
|
| +
|
| + @Override
|
| + public Void answer(InvocationOnMock invocation) throws Throwable {
|
| + Object args[] = invocation.getArguments();
|
| + ((SupervisedUserContentProvider.SupervisedUserQueryReply) args[1])
|
| + .onQueryComplete(false, "Hello");
|
| + return null;
|
| + }
|
| +
|
| + })
|
| + .when(mSupervisedUserContentProvider)
|
| + .nativeShouldProceed(anyLong(),
|
| + any(SupervisedUserContentProvider.SupervisedUserQueryReply.class),
|
| + anyString());
|
| + assertThat(mSupervisedUserContentProvider.shouldProceed("url"),
|
| + is(new Pair<Boolean, String>(false, "Hello")));
|
| + }
|
| +
|
| + @Test
|
| + public void testRequestInsert() throws InterruptedException {
|
| + // Mock native call.
|
| + doAnswer(new Answer<Void>() {
|
| +
|
| + @Override
|
| + public Void answer(InvocationOnMock invocation) throws Throwable {
|
| + Object args[] = invocation.getArguments();
|
| + ((SupervisedUserContentProvider.SupervisedUserInsertReply) args[1])
|
| + .onInsertRequestSendComplete(true);
|
| + return null;
|
| + }
|
| +
|
| + })
|
| + .when(mSupervisedUserContentProvider)
|
| + .nativeRequestInsert(anyLong(),
|
| + any(SupervisedUserContentProvider.SupervisedUserInsertReply.class),
|
| + anyString());
|
| + assertThat(mSupervisedUserContentProvider.requestInsert("url"), is(true));
|
| + verify(mSupervisedUserContentProvider)
|
| + .nativeRequestInsert(eq(1234L),
|
| + any(SupervisedUserContentProvider.SupervisedUserInsertReply.class),
|
| + eq("url"));
|
| + doAnswer(new Answer<Void>() {
|
| +
|
| + @Override
|
| + public Void answer(InvocationOnMock invocation) throws Throwable {
|
| + Object args[] = invocation.getArguments();
|
| + ((SupervisedUserContentProvider.SupervisedUserInsertReply) args[1])
|
| + .onInsertRequestSendComplete(false);
|
| + return null;
|
| + }
|
| +
|
| + })
|
| + .when(mSupervisedUserContentProvider)
|
| + .nativeRequestInsert(anyLong(),
|
| + any(SupervisedUserContentProvider.SupervisedUserInsertReply.class),
|
| + anyString());
|
| + assertThat(mSupervisedUserContentProvider.requestInsert("url"), is(false));
|
| + verify(mSupervisedUserContentProvider, times(2))
|
| + .nativeRequestInsert(eq(1234L),
|
| + any(SupervisedUserContentProvider.SupervisedUserInsertReply.class),
|
| + eq("url"));
|
| + }
|
| +}
|
|
|