| Index: components/web_restriction/junit/src/org/chromium/components/webrestriction/WebRestrictionsContentProviderTest.java
|
| diff --git a/components/web_restriction/junit/src/org/chromium/components/webrestriction/WebRestrictionsContentProviderTest.java b/components/web_restriction/junit/src/org/chromium/components/webrestriction/WebRestrictionsContentProviderTest.java
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..0da6bd8a01b5a527bb19235e346913173c07f2a3
|
| --- /dev/null
|
| +++ b/components/web_restriction/junit/src/org/chromium/components/webrestriction/WebRestrictionsContentProviderTest.java
|
| @@ -0,0 +1,121 @@
|
| +// 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.components.webrestriction;
|
| +
|
| +import static org.hamcrest.CoreMatchers.is;
|
| +import static org.hamcrest.CoreMatchers.not;
|
| +import static org.hamcrest.CoreMatchers.nullValue;
|
| +import static org.junit.Assert.assertThat;
|
| +import static org.mockito.Matchers.anyString;
|
| +import static org.mockito.Mockito.verify;
|
| +import static org.mockito.Mockito.when;
|
| +
|
| +import android.content.ContentResolver;
|
| +import android.content.ContentValues;
|
| +import android.content.pm.ProviderInfo;
|
| +import android.database.Cursor;
|
| +import android.net.Uri;
|
| +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.robolectric.Robolectric;
|
| +import org.robolectric.annotation.Config;
|
| +import org.robolectric.shadows.ShadowContentResolver;
|
| +
|
| +/**
|
| + * Tests of WebRestrictionsContentProvider.
|
| + */
|
| +@RunWith(LocalRobolectricTestRunner.class)
|
| +@Config(manifest = Config.NONE)
|
| +public class WebRestrictionsContentProviderTest {
|
| + private static final String AUTHORITY = "org.chromium.browser.DummyProvider";
|
| +
|
| + private WebRestrictionsContentProvider mContentProvider;
|
| + private ContentResolver mContentResolver;
|
| + private Uri mUri;
|
| +
|
| + @Before
|
| + public void setUp() {
|
| + // The test needs a concrete version of the test class, but mocks the additional members as
|
| + // necessary.
|
| + mContentProvider = Mockito.spy(new WebRestrictionsContentProvider() {
|
| + @Override
|
| + protected Pair<Boolean, String> shouldProceed(String url) {
|
| + return null;
|
| + }
|
| +
|
| + @Override
|
| + protected boolean canInsert() {
|
| + return false;
|
| + }
|
| +
|
| + @Override
|
| + protected boolean requestInsert(String url) {
|
| + return false;
|
| + }
|
| + });
|
| + mContentProvider.onCreate();
|
| + ShadowContentResolver.registerProvider(AUTHORITY, mContentProvider);
|
| + ProviderInfo info = new ProviderInfo();
|
| + info.authority = AUTHORITY;
|
| + mContentProvider.attachInfo(null, info);
|
| + mContentResolver = Robolectric.application.getContentResolver();
|
| + mUri = new Uri.Builder()
|
| + .scheme(ContentResolver.SCHEME_CONTENT)
|
| + .authority(AUTHORITY)
|
| + .build();
|
| + }
|
| +
|
| + @Test
|
| + public void testQuery() {
|
| + when(mContentProvider.shouldProceed(anyString()))
|
| + .thenReturn(new Pair<Boolean, String>(false, "Error Message"));
|
| + Cursor cursor = mContentResolver.query(mUri.buildUpon().appendPath("authorized").build(),
|
| + null, "url = 'dummy'", null, null);
|
| + verify(mContentProvider).shouldProceed("dummy");
|
| + assertThat(cursor, is(not(nullValue())));
|
| + assertThat(cursor.getInt(0), is(WebRestrictionsContentProvider.BLOCKED));
|
| + assertThat(cursor.getString(1), is("Error Message"));
|
| + when(mContentProvider.shouldProceed(anyString()))
|
| + .thenReturn(new Pair<Boolean, String>(true, null));
|
| + cursor = mContentResolver.query(mUri.buildUpon().appendPath("authorized").build(), null,
|
| + "url = 'dummy'", null, null);
|
| + assertThat(cursor, is(not(nullValue())));
|
| + assertThat(cursor.getInt(0), is(WebRestrictionsContentProvider.PROCEED));
|
| + }
|
| +
|
| + @Test
|
| + public void testInsert() {
|
| + ContentValues values = new ContentValues();
|
| + values.put("url", "dummy2");
|
| + when(mContentProvider.requestInsert(anyString())).thenReturn(false);
|
| + assertThat(
|
| + mContentResolver.insert(mUri.buildUpon().appendPath("requested").build(), values),
|
| + is(nullValue()));
|
| + verify(mContentProvider).requestInsert("dummy2");
|
| + values.put("url", "dummy3");
|
| + when(mContentProvider.requestInsert(anyString())).thenReturn(true);
|
| + assertThat(
|
| + mContentResolver.insert(mUri.buildUpon().appendPath("requested").build(), values),
|
| + is(not(nullValue())));
|
| + verify(mContentProvider).requestInsert("dummy3");
|
| + }
|
| +
|
| + @Test
|
| + public void testGetType() {
|
| + assertThat(mContentResolver.getType(mUri.buildUpon().appendPath("junk").build()),
|
| + is(nullValue()));
|
| + when(mContentProvider.canInsert()).thenReturn(false);
|
| + assertThat(mContentResolver.getType(mUri.buildUpon().appendPath("requested").build()),
|
| + is(nullValue()));
|
| + when(mContentProvider.canInsert()).thenReturn(true);
|
| + assertThat(mContentResolver.getType(mUri.buildUpon().appendPath("requested").build()),
|
| + is(not(nullValue())));
|
| + }
|
| +}
|
|
|