summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorMarcus Hagerott <mhagerott@google.com>2021-02-05 15:31:36 -0800
committerMarcus Hagerott <mhagerott@google.com>2021-02-08 08:38:03 -0800
commitb700f11c427d3fb7529fb96bdb8b8dee6850c92d (patch)
treee8bf7a4fc17d59aa95210a086dfd890c1a1e361e /tests
parentb250588e401d2b3b8eec8508e7cd790943f41440 (diff)
downloadContacts-b700f11c427d3fb7529fb96bdb8b8dee6850c92d.tar.gz
Use SimPhonebookContract for Contacts app SIM import
Test: atest ContactsTest Bug: 177366414 Change-Id: I1d936817a83b801908204879acfeba8f97e33578
Diffstat (limited to 'tests')
-rw-r--r--tests/Android.bp2
-rw-r--r--tests/src/com/android/contacts/activities/SimImportActivityTest.java18
-rw-r--r--tests/src/com/android/contacts/database/SimContactDaoTests.java94
-rw-r--r--tests/src/com/android/contacts/tests/FakeSimContactDao.java1
-rw-r--r--tests/src/com/android/contacts/tests/SimContactsTestHelper.java47
5 files changed, 67 insertions, 95 deletions
diff --git a/tests/Android.bp b/tests/Android.bp
index 2e1d47b9d..e09186e18 100644
--- a/tests/Android.bp
+++ b/tests/Android.bp
@@ -12,6 +12,8 @@ android_test {
static_libs: [
"androidx.test.rules",
+ "androidx.test.runner",
+ "androidx.test.ext.junit",
"hamcrest-library",
"mockito-target-minus-junit4",
"ub-uiautomator",
diff --git a/tests/src/com/android/contacts/activities/SimImportActivityTest.java b/tests/src/com/android/contacts/activities/SimImportActivityTest.java
index 7069ef18f..250ce4b6c 100644
--- a/tests/src/com/android/contacts/activities/SimImportActivityTest.java
+++ b/tests/src/com/android/contacts/activities/SimImportActivityTest.java
@@ -40,6 +40,8 @@ import android.os.Build;
import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.Data;
+import android.provider.SimPhonebookContract;
+import android.provider.SimPhonebookContract.SimRecords;
import android.support.test.uiautomator.By;
import android.support.test.uiautomator.UiDevice;
import android.support.test.uiautomator.Until;
@@ -48,9 +50,9 @@ import android.test.mock.MockContentResolver;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import androidx.test.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.LargeTest;
import androidx.test.filters.SdkSuppress;
-import androidx.test.runner.AndroidJUnit4;
import com.android.contacts.SimImportService;
import com.android.contacts.database.SimContactDao;
@@ -224,10 +226,10 @@ public class SimImportActivityTest {
final AccountWithDataSet targetAccount = mAccountHelper.addTestAccount(
mAccountHelper.generateAccountName("SimImportActivity0_targetAccount_"));
- final MockContentProvider iccProvider = new MockContentProvider();
- iccProvider.expect(MockContentProvider.Query.forAnyUri())
- .withDefaultProjection(new String[] {SimContactDaoImpl._ID, SimContactDaoImpl.NAME,
- SimContactDaoImpl.NUMBER, SimContactDaoImpl.EMAILS })
+ final MockContentProvider simPhonebookProvider = new MockContentProvider();
+ simPhonebookProvider.expect(MockContentProvider.Query.forAnyUri())
+ .withProjection(
+ SimRecords.RECORD_NUMBER, SimRecords.NAME, SimRecords.PHONE_NUMBER)
.anyNumberOfTimes()
.returnRow(toCursorRow(new SimContact(1, "Import One", "5550101")))
.returnRow(toCursorRow(new SimContact(2, "Skip Two", "5550102")))
@@ -236,7 +238,7 @@ public class SimImportActivityTest {
.returnRow(toCursorRow(new SimContact(5, "Skip Five", "5550105")))
.returnRow(toCursorRow(new SimContact(6, "Import Six", "5550106")));
final MockContentResolver mockResolver = new MockContentResolver();
- mockResolver.addProvider("icc", iccProvider);
+ mockResolver.addProvider(SimPhonebookContract.AUTHORITY, simPhonebookProvider);
final ContentProviderClient contactsProviderClient = mContext.getContentResolver()
.acquireContentProviderClient(ContactsContract.AUTHORITY);
mockResolver.addProvider(ContactsContract.AUTHORITY, new ForwardingContentProvider(
@@ -258,6 +260,7 @@ public class SimImportActivityTest {
mActivity = mInstrumentation.startActivitySync(
new Intent(mContext, SimImportActivity.class)
+ .putExtra(SimImportActivity.EXTRA_SUBSCRIPTION_ID, 1)
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
assertTrue(mDevice.wait(Until.hasObject(By.desc("Show more")), TIMEOUT));
@@ -319,6 +322,7 @@ public class SimImportActivityTest {
mActivity = mInstrumentation.startActivitySync(
new Intent(mContext, SimImportActivity.class)
+ .putExtra(SimImportActivity.EXTRA_SUBSCRIPTION_ID, 1)
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
assertTrue(mDevice.wait(Until.hasObject(By.text("Import One")), TIMEOUT));
@@ -351,7 +355,7 @@ public class SimImportActivityTest {
}
private Object[] toCursorRow(SimContact contact) {
- return new Object[] { contact.getId(), contact.getName(), contact.getPhone(), null };
+ return new Object[]{contact.getRecordNumber(), contact.getName(), contact.getPhone()};
}
private SimCard someSimCard() {
diff --git a/tests/src/com/android/contacts/database/SimContactDaoTests.java b/tests/src/com/android/contacts/database/SimContactDaoTests.java
index 0b5b37f8d..680ba106e 100644
--- a/tests/src/com/android/contacts/database/SimContactDaoTests.java
+++ b/tests/src/com/android/contacts/database/SimContactDaoTests.java
@@ -45,16 +45,18 @@ import android.provider.ContactsContract.CommonDataKinds.Email;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.CommonDataKinds.StructuredName;
import android.provider.ContactsContract.Data;
+import android.provider.SimPhonebookContract;
+import android.provider.SimPhonebookContract.SimRecords;
import android.test.mock.MockContentResolver;
import android.test.mock.MockContext;
import androidx.annotation.RequiresApi;
import androidx.test.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.LargeTest;
import androidx.test.filters.SdkSuppress;
import androidx.test.filters.SmallTest;
import androidx.test.filters.Suppress;
-import androidx.test.runner.AndroidJUnit4;
import com.android.contacts.model.SimCard;
import com.android.contacts.model.SimContact;
@@ -578,92 +580,78 @@ public class SimContactDaoTests {
@RunWith(AndroidJUnit4.class)
public static class LoadContactsUnitTests {
- private MockContentProvider mMockIccProvider;
+ private MockContentProvider mMockSimPhonebookProvider;
private Context mContext;
@Before
public void setUp() {
mContext = mock(MockContext.class);
final MockContentResolver mockResolver = new MockContentResolver();
- mMockIccProvider = new MockContentProvider();
- mockResolver.addProvider("icc", mMockIccProvider);
+ mMockSimPhonebookProvider = new MockContentProvider();
+ mockResolver.addProvider(SimPhonebookContract.AUTHORITY, mMockSimPhonebookProvider);
when(mContext.getContentResolver()).thenReturn(mockResolver);
}
@Test
public void createsContactsFromCursor() {
- mMockIccProvider.expect(MockContentProvider.Query.forAnyUri())
+ mMockSimPhonebookProvider.expect(MockContentProvider.Query.forAnyUri())
.withDefaultProjection(
- SimContactDaoImpl._ID, SimContactDaoImpl.NAME,
- SimContactDaoImpl.NUMBER, SimContactDaoImpl.EMAILS)
+ SimRecords.RECORD_NUMBER, SimRecords.NAME, SimRecords.PHONE_NUMBER)
.withAnyProjection()
.withAnySelection()
.withAnySortOrder()
- .returnRow(1, "Name One", "5550101", null)
- .returnRow(2, "Name Two", "5550102", null)
- .returnRow(3, "Name Three", null, null)
- .returnRow(4, null, "5550104", null)
- .returnRow(5, "Name Five", "5550105",
- "five@example.com,nf@example.com,name.five@example.com")
- .returnRow(6, "Name Six", "5550106", "thesix@example.com");
+ .returnRow(1, "Name One", "5550101")
+ .returnRow(2, "Name Two", "5550102")
+ .returnRow(3, "Name Three", null)
+ .returnRow(4, null, "5550104");
final SimContactDao sut = SimContactDao.create(mContext);
final List<SimContact> contacts = sut
- .loadContactsForSim(new SimCard("123", "carrier", "sim", null, "us"));
+ .loadContactsForSim(new SimCard("123", 1, "carrier", "sim", null, "us"));
assertThat(contacts, equalTo(
Arrays.asList(
new SimContact(1, "Name One", "5550101", null),
new SimContact(2, "Name Two", "5550102", null),
new SimContact(3, "Name Three", null, null),
- new SimContact(4, null, "5550104", null),
- new SimContact(5, "Name Five", "5550105", new String[] {
- "five@example.com", "nf@example.com", "name.five@example.com"
- }),
- new SimContact(6, "Name Six", "5550106", new String[] {
- "thesix@example.com"
- })
+ new SimContact(4, null, "5550104", null)
)));
}
@Test
public void excludesEmptyContactsFromResult() {
- mMockIccProvider.expect(MockContentProvider.Query.forAnyUri())
+ mMockSimPhonebookProvider.expect(MockContentProvider.Query.forAnyUri())
.withDefaultProjection(
- SimContactDaoImpl._ID, SimContactDaoImpl.NAME,
- SimContactDaoImpl.NUMBER, SimContactDaoImpl.EMAILS)
+ SimRecords.RECORD_NUMBER, SimRecords.NAME, SimRecords.PHONE_NUMBER)
.withAnyProjection()
.withAnySelection()
.withAnySortOrder()
- .returnRow(1, "Non Empty1", "5550101", null)
- .returnRow(2, "", "", "")
- .returnRow(3, "Non Empty2", null, null)
- .returnRow(4, null, null, null)
- .returnRow(5, "", null, null)
- .returnRow(6, null, "5550102", null)
- .returnRow(7, null, null, "user@example.com");
+ .returnRow(1, "Non Empty1", "5550101")
+ .returnRow(2, "", "")
+ .returnRow(3, "Non Empty2", null)
+ .returnRow(4, null, null)
+ .returnRow(5, "", null)
+ .returnRow(6, null, "5550102");
final SimContactDao sut = SimContactDao.create(mContext);
final List<SimContact> contacts = sut
- .loadContactsForSim(new SimCard("123", "carrier", "sim", null, "us"));
+ .loadContactsForSim(new SimCard("123", 1, "carrier", "sim", null, "us"));
assertThat(contacts, equalTo(
Arrays.asList(
new SimContact(1, "Non Empty1", "5550101", null),
new SimContact(3, "Non Empty2", null, null),
- new SimContact(6, null, "5550102", null),
- new SimContact(7, null, null, new String[] { "user@example.com" })
+ new SimContact(6, null, "5550102", null)
)));
}
@Test
public void usesSimCardSubscriptionIdIfAvailable() {
- mMockIccProvider.expectQuery(SimContactDaoImpl.ICC_CONTENT_URI.buildUpon()
- .appendPath("subId").appendPath("2").build())
+ mMockSimPhonebookProvider.expectQuery(SimRecords.getContentUri(2,
+ SimPhonebookContract.ElementaryFiles.EF_ADN))
.withDefaultProjection(
- SimContactDaoImpl._ID, SimContactDaoImpl.NAME,
- SimContactDaoImpl.NUMBER, SimContactDaoImpl.EMAILS)
+ SimRecords.RECORD_NUMBER, SimRecords.NAME, SimRecords.PHONE_NUMBER)
.withAnyProjection()
.withAnySelection()
.withAnySortOrder()
@@ -671,32 +659,14 @@ public class SimContactDaoTests {
final SimContactDao sut = SimContactDao.create(mContext);
sut.loadContactsForSim(new SimCard("123", 2, "carrier", "sim", null, "us"));
- mMockIccProvider.verify();
- }
-
- @Test
- public void omitsSimCardSubscriptionIdIfUnavailable() {
- mMockIccProvider.expectQuery(SimContactDaoImpl.ICC_CONTENT_URI)
- .withDefaultProjection(
- SimContactDaoImpl._ID, SimContactDaoImpl.NAME,
- SimContactDaoImpl.NUMBER, SimContactDaoImpl.EMAILS)
- .withAnyProjection()
- .withAnySelection()
- .withAnySortOrder()
- .returnEmptyCursor();
-
- final SimContactDao sut = SimContactDao.create(mContext);
- sut.loadContactsForSim(new SimCard("123", SimCard.NO_SUBSCRIPTION_ID,
- "carrier", "sim", null, "us"));
- mMockIccProvider.verify();
+ mMockSimPhonebookProvider.verify();
}
@Test
public void returnsEmptyListForEmptyCursor() {
- mMockIccProvider.expect(MockContentProvider.Query.forAnyUri())
+ mMockSimPhonebookProvider.expect(MockContentProvider.Query.forAnyUri())
.withDefaultProjection(
- SimContactDaoImpl._ID, SimContactDaoImpl.NAME,
- SimContactDaoImpl.NUMBER, SimContactDaoImpl.EMAILS)
+ SimRecords.RECORD_NUMBER, SimRecords.NAME, SimRecords.PHONE_NUMBER)
.withAnyProjection()
.withAnySelection()
.withAnySortOrder()
@@ -704,7 +674,7 @@ public class SimContactDaoTests {
final SimContactDao sut = SimContactDao.create(mContext);
List<SimContact> result = sut
- .loadContactsForSim(new SimCard("123", "carrier", "sim", null, "us"));
+ .loadContactsForSim(new SimCard("123", 1, "carrier", "sim", null, "us"));
assertTrue(result.isEmpty());
}
@@ -725,7 +695,7 @@ public class SimContactDaoTests {
final SimContactDao sut = SimContactDao.create(mContext);
final List<SimContact> result = sut
- .loadContactsForSim(new SimCard("123", "carrier", "sim", null, "us"));
+ .loadContactsForSim(new SimCard("123", 1, "carrier", "sim", null, "us"));
assertTrue(result.isEmpty());
}
}
diff --git a/tests/src/com/android/contacts/tests/FakeSimContactDao.java b/tests/src/com/android/contacts/tests/FakeSimContactDao.java
index c40ab2548..ab6c653f6 100644
--- a/tests/src/com/android/contacts/tests/FakeSimContactDao.java
+++ b/tests/src/com/android/contacts/tests/FakeSimContactDao.java
@@ -110,5 +110,4 @@ public class FakeSimContactDao extends SimContactDao {
result.canReadSimContacts = false;
return result;
}
-
}
diff --git a/tests/src/com/android/contacts/tests/SimContactsTestHelper.java b/tests/src/com/android/contacts/tests/SimContactsTestHelper.java
index 740d0132d..99c95cb48 100644
--- a/tests/src/com/android/contacts/tests/SimContactsTestHelper.java
+++ b/tests/src/com/android/contacts/tests/SimContactsTestHelper.java
@@ -28,13 +28,15 @@ import android.content.OperationApplicationException;
import android.database.Cursor;
import android.net.Uri;
import android.os.RemoteException;
+import android.provider.SimPhonebookContract;
+import android.provider.SimPhonebookContract.ElementaryFiles;
+import android.provider.SimPhonebookContract.SimRecords;
import android.telephony.TelephonyManager;
import androidx.annotation.NonNull;
import androidx.test.InstrumentationRegistry;
import com.android.contacts.database.SimContactDao;
-import com.android.contacts.database.SimContactDaoImpl;
import com.android.contacts.model.SimCard;
import com.android.contacts.model.SimContact;
@@ -47,6 +49,8 @@ public class SimContactsTestHelper {
private final TelephonyManager mTelephonyManager;
private final ContentResolver mResolver;
private final SimContactDao mSimDao;
+ private final int mSubscriptionId;
+ private final Uri mDefaultSimAdnUri;
public SimContactsTestHelper() {
this(InstrumentationRegistry.getTargetContext());
@@ -57,10 +61,13 @@ public class SimContactsTestHelper {
mResolver = context.getContentResolver();
mTelephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
mSimDao = SimContactDao.create(context);
+ mSubscriptionId = mTelephonyManager.getSubscriptionId();
+ mDefaultSimAdnUri = SimRecords.getContentUri(
+ mTelephonyManager.getSubscriptionId(), ElementaryFiles.EF_ADN);
}
public int getSimContactCount() {
- Cursor cursor = mContext.getContentResolver().query(SimContactDaoImpl.ICC_CONTENT_URI,
+ Cursor cursor = mContext.getContentResolver().query(mDefaultSimAdnUri,
null, null, null, null);
try {
return cursor.getCount();
@@ -71,15 +78,13 @@ public class SimContactsTestHelper {
public Uri addSimContact(String name, String number) {
ContentValues values = new ContentValues();
- // Oddly even though it's called name when querying we have to use "tag" for it to work
- // when inserting.
if (name != null) {
- values.put("tag", name);
+ values.put(SimRecords.NAME, name);
}
if (number != null) {
- values.put(SimContactDaoImpl.NUMBER, number);
+ values.put(SimRecords.PHONE_NUMBER, number);
}
- return mResolver.insert(SimContactDaoImpl.ICC_CONTENT_URI, values);
+ return mResolver.insert(mDefaultSimAdnUri, values);
}
public ContentProviderResult[] deleteAllSimContacts()
@@ -92,11 +97,11 @@ public class SimContactsTestHelper {
ArrayList<ContentProviderOperation> ops = new ArrayList<>();
for (SimContact contact : contacts) {
ops.add(ContentProviderOperation
- .newDelete(SimContactDaoImpl.ICC_CONTENT_URI)
- .withSelection(getWriteSelection(contact), null)
+ .newDelete(SimRecords.getItemUri(
+ mSubscriptionId, ElementaryFiles.EF_ADN, contact.getRecordNumber()))
.build());
}
- return mResolver.applyBatch(SimContactDaoImpl.ICC_CONTENT_URI.getAuthority(), ops);
+ return mResolver.applyBatch(SimPhonebookContract.AUTHORITY, ops);
}
public ContentProviderResult[] restore(ArrayList<ContentProviderOperation> restoreOps)
@@ -106,7 +111,7 @@ public class SimContactsTestHelper {
// Remove SIM contacts because we assume that caller wants the data to be in the exact
// state as when the restore ops were captured.
deleteAllSimContacts();
- return mResolver.applyBatch(SimContactDaoImpl.ICC_CONTENT_URI.getAuthority(), restoreOps);
+ return mResolver.applyBatch(SimPhonebookContract.AUTHORITY, restoreOps);
}
public ArrayList<ContentProviderOperation> captureRestoreSnapshot() {
@@ -124,24 +129,16 @@ public class SimContactsTestHelper {
" Please manually remove SIM contacts with emails.");
}
ops.add(ContentProviderOperation
- .newInsert(SimContactDaoImpl.ICC_CONTENT_URI)
- .withValue("tag", contact.getName())
- .withValue("number", contact.getPhone())
+ .newInsert(mDefaultSimAdnUri)
+ .withValue(SimRecords.NAME, contact.getName())
+ .withValue(SimRecords.PHONE_NUMBER, contact.getPhone())
.build());
}
return ops;
}
- public String getWriteSelection(SimContact simContact) {
- return "tag='" + simContact.getName() + "' AND " + SimContactDaoImpl.NUMBER + "='" +
- simContact.getPhone() + "'";
- }
-
- public int deleteSimContact(@NonNull String name, @NonNull String number) {
- // IccProvider doesn't use the selection args.
- final String selection = "tag='" + name + "' AND " +
- SimContactDaoImpl.NUMBER + "='" + number + "'";
- return mResolver.delete(SimContactDaoImpl.ICC_CONTENT_URI, selection, null);
+ public int deleteSimContact(@NonNull Uri recordUri) {
+ return mResolver.delete(recordUri, null);
}
public boolean isSimReady() {
@@ -156,7 +153,7 @@ public class SimContactsTestHelper {
if (!isSimReady()) return false;
final String name = "writabeProbe" + System.nanoTime();
final Uri uri = addSimContact(name, "15095550101");
- return uri != null && deleteSimContact(name, "15095550101") == 1;
+ return uri != null && deleteSimContact(uri) == 1;
}
public void assumeSimReady() {