summaryrefslogtreecommitdiff
path: root/tests/src/com/android/providers/tv/UnrecognizedColumnsTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'tests/src/com/android/providers/tv/UnrecognizedColumnsTest.java')
-rw-r--r--tests/src/com/android/providers/tv/UnrecognizedColumnsTest.java116
1 files changed, 116 insertions, 0 deletions
diff --git a/tests/src/com/android/providers/tv/UnrecognizedColumnsTest.java b/tests/src/com/android/providers/tv/UnrecognizedColumnsTest.java
new file mode 100644
index 0000000..f552013
--- /dev/null
+++ b/tests/src/com/android/providers/tv/UnrecognizedColumnsTest.java
@@ -0,0 +1,116 @@
+package com.android.providers.tv;
+
+import android.content.pm.ProviderInfo;
+import android.database.Cursor;
+import android.media.tv.TvContract;
+import android.media.tv.TvContract.Programs;
+import android.os.Bundle;
+import android.provider.Settings;
+import android.test.AndroidTestCase;
+import android.test.mock.MockContentProvider;
+import android.test.mock.MockContentResolver;
+import com.android.providers.tv.Utils.Program;
+import java.util.Arrays;
+
+import com.google.android.collect.Sets;
+
+public class UnrecognizedColumnsTest extends AndroidTestCase {
+ private static final String PERMISSION_ACCESS_ALL_EPG_DATA =
+ "com.android.providers.tv.permission.ACCESS_ALL_EPG_DATA";
+ private static final String PERMISSION_READ_TV_LISTINGS = "android.permission.READ_TV_LISTINGS";
+
+ private static final String MY_PACKAGE = "example.my";
+ private static final String ANOTHER_PACKAGE = "example.another";
+
+ private MockContentResolver mResolver;
+ private TvProviderForTesting mProvider;
+ private MockTvProviderContext mContext;
+ private Program mProgram;
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ mResolver = new MockContentResolver();
+ mResolver.addProvider(Settings.AUTHORITY, new MockContentProvider() {
+ @Override
+ public Bundle call(String method, String request, Bundle args) {
+ return new Bundle();
+ }
+ });
+
+ mProvider = new TvProviderForTesting();
+ mResolver.addProvider(TvContract.AUTHORITY, mProvider);
+
+ mContext = new MockTvProviderContext(mResolver, getContext());
+ // get data of the calling package only
+ mContext.grantOrRejectPermission(PERMISSION_ACCESS_ALL_EPG_DATA, false);
+ mContext.grantOrRejectPermission(PERMISSION_READ_TV_LISTINGS, false);
+
+ setContext(mContext);
+
+ final ProviderInfo info = new ProviderInfo();
+ info.authority = TvContract.AUTHORITY;
+ mProvider.attachInfoForTesting(getContext(), info);
+ }
+
+
+ @Override
+ protected void tearDown() throws Exception {
+ Utils.clearTvProvider(mResolver);
+ mProvider.setOpenHelper(null, true);
+ mProvider.shutdown();
+ super.tearDown();
+ }
+
+ public void testUnrecognizedColumns() {
+ insertPrograms();
+
+ String[] projection = new String[] {
+ TvContract.Programs._ID,
+ "_random_name",
+ " with spaces ",
+ "\' in single quotes \'",
+ "\" in double quotes \"",
+ "quotes \' inside \' this \" name \"",
+ };
+
+ Cursor cursor =
+ mResolver.query(TvContract.Programs.CONTENT_URI, projection, null, null, null);
+ assertNotNull(cursor);
+ cursor.moveToNext();
+ assertEquals(1, cursor.getCount());
+
+ assertEquals(
+ "Column names don't match.",
+ Arrays.asList(
+ Programs._ID,
+ "_random_name",
+ " with spaces ",
+ "\' in single quotes \'",
+ "\" in double quotes \"",
+ "quotes \' inside \' this \" name \""),
+ Arrays.asList(cursor.getColumnNames()));
+
+ assertEquals(mProgram.id, cursor.getLong(0));
+ assertNull(cursor.getString(1));
+ assertNull(cursor.getString(2));
+ assertNull(cursor.getString(3));
+ assertNull(cursor.getString(4));
+ assertNull(cursor.getString(5));
+ }
+
+ private void insertPrograms() {
+ mProvider.callingPackage = MY_PACKAGE;
+ long myChannelId = Utils.insertChannel(mResolver);
+ mProgram = new Program(1, MY_PACKAGE);
+ Utils.insertPrograms(mResolver, myChannelId, mProgram);
+
+ mProvider.callingPackage = ANOTHER_PACKAGE;
+ long anotherChannelId = Utils.insertChannel(mResolver);
+ Program anotherProgram = new Program(2, ANOTHER_PACKAGE);
+ Utils.insertPrograms(mResolver, anotherChannelId, anotherProgram);
+
+ mProvider.callingPackage = MY_PACKAGE;
+ }
+}