aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorTa-wei Yen <twyen@google.com>2017-01-17 19:11:14 +0000
committerandroid-build-merger <android-build-merger@google.com>2017-01-17 19:11:14 +0000
commit79733da1e995680e27393c68755cf4e0762805cb (patch)
tree50f9bb04e247df1f72324fd2423ef2d7cdd21f74 /tests
parent70e57ed0a7bcb5192debf58729830ab8eaa6dee5 (diff)
parent687bef960a8309410ee1ba0da06a012914bef88e (diff)
downloadContactsProvider-79733da1e995680e27393c68755cf4e0762805cb.tar.gz
Prevent LAST_MODIFIED from changing after deletion
am: 687bef960a Change-Id: I4ca82707fccd6672f7b0f5f2fb8727da3df8b1fb
Diffstat (limited to 'tests')
-rw-r--r--tests/src/com/android/providers/contacts/BaseContactsProvider2Test.java18
-rw-r--r--tests/src/com/android/providers/contacts/CallLogProviderTest.java10
-rw-r--r--tests/src/com/android/providers/contacts/VoicemailProviderTest.java35
3 files changed, 51 insertions, 12 deletions
diff --git a/tests/src/com/android/providers/contacts/BaseContactsProvider2Test.java b/tests/src/com/android/providers/contacts/BaseContactsProvider2Test.java
index 86dff66a..09241549 100644
--- a/tests/src/com/android/providers/contacts/BaseContactsProvider2Test.java
+++ b/tests/src/com/android/providers/contacts/BaseContactsProvider2Test.java
@@ -31,6 +31,7 @@ import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
import android.provider.BaseColumns;
import android.provider.CallLog;
+import android.provider.CallLog.Calls;
import android.provider.ContactsContract;
import android.provider.ContactsContract.AggregationExceptions;
import android.provider.ContactsContract.CommonDataKinds.Email;
@@ -1355,16 +1356,21 @@ public abstract class BaseContactsProvider2Test extends PhotoLoadingTestCase {
}
}
- protected void assertLastModified(Uri uri) {
- assertLastModified(uri, System.currentTimeMillis(), 1000);
- }
-
- protected void assertLastModified(Uri uri, long time, long tolerance) {
+ protected void assertLastModified(Uri uri, long time) {
Cursor c = mResolver.query(uri, null, null, null, null);
c.moveToFirst();
int index = c.getColumnIndex(CallLog.Calls.LAST_MODIFIED);
long timeStamp = c.getLong(index);
- assertTrue(Math.abs(time - timeStamp) < tolerance);
+ assertEquals(timeStamp, time);
+ }
+
+ protected void setTimeForTest(Long time) {
+ Uri uri = Calls.CONTENT_URI.buildUpon()
+ .appendQueryParameter(CallLogProvider.PARAM_KEY_QUERY_FOR_TESTING, "1")
+ .appendQueryParameter(CallLogProvider.PARAM_KEY_SET_TIME_FOR_TESTING,
+ time == null ? "null" : time.toString())
+ .build();
+ mResolver.query(uri, null, null, null, null);
}
/**
* A contact in the database, and the attributes used to create it. Construct using
diff --git a/tests/src/com/android/providers/contacts/CallLogProviderTest.java b/tests/src/com/android/providers/contacts/CallLogProviderTest.java
index f492e736..8ee7a5be 100644
--- a/tests/src/com/android/providers/contacts/CallLogProviderTest.java
+++ b/tests/src/com/android/providers/contacts/CallLogProviderTest.java
@@ -85,16 +85,18 @@ public class CallLogProviderTest extends BaseContactsProvider2Test {
protected void tearDown() throws Exception {
setUpWithVoicemailPermissions();
mResolver.delete(Calls.CONTENT_URI_WITH_VOICEMAIL, null, null);
+ setTimeForTest(null);
super.tearDown();
}
public void testInsert_RegularCallRecord() {
+ setTimeForTest(1000L);
ContentValues values = getDefaultCallValues();
Uri uri = mResolver.insert(Calls.CONTENT_URI, values);
values.put(Calls.COUNTRY_ISO, "us");
assertStoredValues(uri, values);
assertSelection(uri, values, Calls._ID, ContentUris.parseId(uri));
- assertLastModified(uri);
+ assertLastModified(uri, 1000);
}
private void setUpWithVoicemailPermissions() {
@@ -105,6 +107,7 @@ public class CallLogProviderTest extends BaseContactsProvider2Test {
public void testInsert_VoicemailCallRecord() {
setUpWithVoicemailPermissions();
+ setTimeForTest(1000L);
final ContentValues values = getDefaultCallValues();
values.put(Calls.TYPE, Calls.VOICEMAIL_TYPE);
values.put(Calls.VOICEMAIL_URI, "content://foo/voicemail/2");
@@ -121,10 +124,11 @@ public class CallLogProviderTest extends BaseContactsProvider2Test {
Uri uri = mResolver.insert(Calls.CONTENT_URI_WITH_VOICEMAIL, values);
assertStoredValues(uri, values);
assertSelection(uri, values, Calls._ID, ContentUris.parseId(uri));
- assertLastModified(uri);
+ assertLastModified(uri, 1000);
}
public void testUpdate() {
+ setTimeForTest(1000L);
Uri uri = insertCallRecord();
ContentValues values = new ContentValues();
values.put(Calls.TYPE, Calls.OUTGOING_TYPE);
@@ -139,7 +143,7 @@ public class CallLogProviderTest extends BaseContactsProvider2Test {
int count = mResolver.update(uri, values, null, null);
assertEquals(1, count);
assertStoredValues(uri, values);
- assertLastModified(uri);
+ assertLastModified(uri, 1000);
}
public void testDelete() {
diff --git a/tests/src/com/android/providers/contacts/VoicemailProviderTest.java b/tests/src/com/android/providers/contacts/VoicemailProviderTest.java
index b4c9e049..72667314 100644
--- a/tests/src/com/android/providers/contacts/VoicemailProviderTest.java
+++ b/tests/src/com/android/providers/contacts/VoicemailProviderTest.java
@@ -20,8 +20,10 @@ import android.content.ContentUris;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
+import android.os.BatteryStats.Uid.Proc;
import android.os.ParcelFileDescriptor;
import android.os.Process;
+import android.provider.CallLog;
import android.provider.CallLog.Calls;
import android.provider.VoicemailContract;
import android.provider.VoicemailContract.Status;
@@ -65,6 +67,7 @@ public class VoicemailProviderTest extends BaseVoicemailProviderTest {
protected void setUp() throws Exception {
super.setUp();
setUpForOwnPermission();
+ addProvider(CallLogProviderTestable.class, CallLog.AUTHORITY);
}
/** Returns the appropriate /voicemail URI. */
@@ -80,6 +83,7 @@ public class VoicemailProviderTest extends BaseVoicemailProviderTest {
}
public void testInsert() throws Exception {
+ setTimeForTest(1000L);
Uri uri = mResolver.insert(voicemailUri(), getTestVoicemailValues());
// We create on purpose a new set of ContentValues here, because the code above modifies
// the copy it gets.
@@ -87,7 +91,7 @@ public class VoicemailProviderTest extends BaseVoicemailProviderTest {
assertSelection(uri, getTestVoicemailValues(), Voicemails._ID, ContentUris.parseId(uri));
assertEquals(1, countFilesInTestDirectory());
- assertLastModified(uri);
+ assertLastModified(uri, 1000);
}
public void testInsertReadMessageIsNotNew() throws Exception {
@@ -131,6 +135,7 @@ public class VoicemailProviderTest extends BaseVoicemailProviderTest {
}
public void testUpdate() {
+ setTimeForTest(1000L);
Uri uri = insertVoicemail();
ContentValues values = new ContentValues();
values.put(Voicemails.NUMBER, "1-800-263-7643");
@@ -145,7 +150,7 @@ public class VoicemailProviderTest extends BaseVoicemailProviderTest {
int count = mResolver.update(uri, values, null, null);
assertEquals(1, count);
assertStoredValues(uri, values);
- assertLastModified(uri);
+ assertLastModified(uri, 1000);
}
public void testUpdateOwnPackageVoicemail_NotDirty() {
@@ -182,6 +187,7 @@ public class VoicemailProviderTest extends BaseVoicemailProviderTest {
public void testDeleteOtherPackageVoicemail_SetsDirtyStatus() {
setUpForFullPermission();
+ setTimeForTest(1000L);
final Uri anotherVoicemail = insertVoicemailForSourcePackage("another-package");
assertEquals(1, getCount(voicemailUri(), null, null));
@@ -195,7 +201,7 @@ public class VoicemailProviderTest extends BaseVoicemailProviderTest {
assertEquals(1, getCount(anotherVoicemail, null, null));
assertStoredValues(anotherVoicemail, values);
- assertLastModified(anotherVoicemail);
+ assertLastModified(anotherVoicemail, 1000);
}
public void testDelete() {
@@ -206,6 +212,29 @@ public class VoicemailProviderTest extends BaseVoicemailProviderTest {
assertEquals(0, getCount(uri, null, null));
}
+ public void testUpdateAfterDelete_lastModifiedNotChanged() {
+ setUpForFullPermission();
+ setTimeForTest(1000L);
+ final Uri anotherVoicemail = insertVoicemailForSourcePackage("another-package");
+ assertEquals(1, getCount(voicemailUri(), null, null));
+
+ // Clear the mapping for our own UID so that this doesn't look like an internal transaction.
+ mPackageManager.removePackage(Process.myUid());
+ mResolver.delete(anotherVoicemail, null, null);
+ assertLastModified(anotherVoicemail, 1000);
+
+ mPackageManager.addPackage(Process.myUid(), mActor.packageName);
+ setTimeForTest(2000L);
+ mResolver.update(anotherVoicemail, new ContentValues(), null, null);
+ assertLastModified(anotherVoicemail, 1000);
+
+ setTimeForTest(3000L);
+ ContentValues values = new ContentValues();
+ values.put(Voicemails.DELETED, "0");
+ mResolver.update(anotherVoicemail, values, null, null);
+ assertLastModified(anotherVoicemail, 3000);
+ }
+
public void testGetType_ItemUri() throws Exception {
// Random item uri.
assertEquals(Voicemails.ITEM_TYPE,