diff options
Diffstat (limited to 'tests/src/com/android/providers/tv/UnrecognizedColumnsTest.java')
-rw-r--r-- | tests/src/com/android/providers/tv/UnrecognizedColumnsTest.java | 116 |
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; + } +} |