summaryrefslogtreecommitdiffstats
path: root/tests/src
diff options
context:
space:
mode:
Diffstat (limited to 'tests/src')
-rw-r--r--tests/src/com/android/providers/contacts/BaseContactsProvider2Test.java13
-rw-r--r--tests/src/com/android/providers/contacts/BaseVoicemailProviderTest.java14
-rw-r--r--tests/src/com/android/providers/contacts/CallLogProviderTest.java35
-rw-r--r--tests/src/com/android/providers/contacts/VoicemailProviderTest.java67
4 files changed, 108 insertions, 21 deletions
diff --git a/tests/src/com/android/providers/contacts/BaseContactsProvider2Test.java b/tests/src/com/android/providers/contacts/BaseContactsProvider2Test.java
index 512455b..45af26c 100644
--- a/tests/src/com/android/providers/contacts/BaseContactsProvider2Test.java
+++ b/tests/src/com/android/providers/contacts/BaseContactsProvider2Test.java
@@ -79,6 +79,19 @@ import java.util.Set;
*/
public abstract class BaseContactsProvider2Test extends PhotoLoadingTestCase {
+ static final String ADD_VOICEMAIL_PERMISSION =
+ "com.android.voicemail.permission.ADD_VOICEMAIL";
+ /*
+ * Permission to allow querying voicemails
+ */
+ static final String READ_ALL_VOICEMAIL_PERMISSION =
+ "com.android.voicemail.permission.READ_ALL_VOICEMAIL";
+ /*
+ * Permission to allow deleting and updating voicemails
+ */
+ static final String MANAGE_VOICEMAIL_PERMISSION =
+ "com.android.voicemail.permission.MANAGE_VOICEMAIL";
+
protected static final String PACKAGE = "ContactsProvider2Test";
public static final String READ_ONLY_ACCOUNT_TYPE =
SynchronousContactsProvider2.READ_ONLY_ACCOUNT_TYPE;
diff --git a/tests/src/com/android/providers/contacts/BaseVoicemailProviderTest.java b/tests/src/com/android/providers/contacts/BaseVoicemailProviderTest.java
index 5f02e3f..9373dc0 100644
--- a/tests/src/com/android/providers/contacts/BaseVoicemailProviderTest.java
+++ b/tests/src/com/android/providers/contacts/BaseVoicemailProviderTest.java
@@ -34,10 +34,6 @@ import java.util.List;
* Base class for all tests that require interacting with the voicemail content provider.
*/
public class BaseVoicemailProviderTest extends BaseContactsProvider2Test {
- private static final String READ_WRITE_ALL_PERMISSION =
- "com.android.voicemail.permission.READ_WRITE_ALL_VOICEMAIL";
- private static final String ADD_VOICEMAIL_PERMISSION =
- "com.android.voicemail.permission.ADD_VOICEMAIL";
protected boolean mUseSourceUri = false;
private File mTestDirectory;
@@ -66,21 +62,23 @@ public class BaseVoicemailProviderTest extends BaseContactsProvider2Test {
}
protected void setUpForOwnPermission() {
- // Give away full permission, in case it was granted previously.
- mActor.removePermissions(READ_WRITE_ALL_PERMISSION);
+ mActor.removePermissions(READ_ALL_VOICEMAIL_PERMISSION);
+ mActor.removePermissions(MANAGE_VOICEMAIL_PERMISSION);
mActor.addPermissions(ADD_VOICEMAIL_PERMISSION);
mUseSourceUri = true;
}
protected void setUpForFullPermission() {
mActor.addPermissions(ADD_VOICEMAIL_PERMISSION);
- mActor.addPermissions(READ_WRITE_ALL_PERMISSION);
+ mActor.addPermissions(READ_ALL_VOICEMAIL_PERMISSION);
+ mActor.addPermissions(MANAGE_VOICEMAIL_PERMISSION);
mUseSourceUri = false;
}
protected void setUpForNoPermission() {
mActor.removePermissions(ADD_VOICEMAIL_PERMISSION);
- mActor.removePermissions(READ_WRITE_ALL_PERMISSION);
+ mActor.removePermissions(READ_ALL_VOICEMAIL_PERMISSION);
+ mActor.removePermissions(MANAGE_VOICEMAIL_PERMISSION);
mUseSourceUri = true;
}
diff --git a/tests/src/com/android/providers/contacts/CallLogProviderTest.java b/tests/src/com/android/providers/contacts/CallLogProviderTest.java
index 072b572..2d11dc4 100644
--- a/tests/src/com/android/providers/contacts/CallLogProviderTest.java
+++ b/tests/src/com/android/providers/contacts/CallLogProviderTest.java
@@ -52,11 +52,6 @@ import java.util.List;
*/
@MediumTest
public class CallLogProviderTest extends BaseContactsProvider2Test {
- private static final String READ_WRITE_ALL_PERMISSION =
- "com.android.voicemail.permission.READ_WRITE_ALL_VOICEMAIL";
- private static final String ADD_VOICEMAIL_PERMISSION =
- "com.android.voicemail.permission.ADD_VOICEMAIL";
-
/** Fields specific to voicemail provider that should not be exposed by call_log*/
private static final String[] VOICEMAIL_PROVIDER_SPECIFIC_COLUMNS = new String[] {
Voicemails._DATA,
@@ -101,12 +96,8 @@ public class CallLogProviderTest extends BaseContactsProvider2Test {
private void setUpWithVoicemailPermissions() {
mActor.addPermissions(ADD_VOICEMAIL_PERMISSION);
- mActor.addPermissions(READ_WRITE_ALL_PERMISSION);
- }
-
- private void setUpWithNoVoicemailPermissions() {
- mActor.removePermissions(ADD_VOICEMAIL_PERMISSION);
- mActor.removePermissions(READ_WRITE_ALL_PERMISSION);
+ mActor.addPermissions(READ_ALL_VOICEMAIL_PERMISSION);
+ mActor.addPermissions(MANAGE_VOICEMAIL_PERMISSION);
}
public void testInsert_VoicemailCallRecord() {
@@ -349,7 +340,13 @@ public class CallLogProviderTest extends BaseContactsProvider2Test {
null, null);
}
});
- // Should now succeed with permissions granted.
+
+ // Should succeed with manage permission granted
+ mActor.addPermissions(MANAGE_VOICEMAIL_PERMISSION);
+ mResolver.update(Calls.CONTENT_URI_WITH_VOICEMAIL, getDefaultCallValues(), null, null);
+ mActor.removePermissions(MANAGE_VOICEMAIL_PERMISSION);
+
+ // Should also succeed with full permissions granted.
setUpWithVoicemailPermissions();
mResolver.update(Calls.CONTENT_URI_WITH_VOICEMAIL, getDefaultCallValues(), null, null);
}
@@ -361,7 +358,13 @@ public class CallLogProviderTest extends BaseContactsProvider2Test {
mResolver.query(Calls.CONTENT_URI_WITH_VOICEMAIL, null, null, null, null);
}
});
- // Should now succeed with permissions granted.
+
+ // Should succeed with read_all permission granted
+ mActor.addPermissions(READ_ALL_VOICEMAIL_PERMISSION);
+ mResolver.query(Calls.CONTENT_URI_WITH_VOICEMAIL, null, null, null, null);
+ mActor.removePermissions(READ_ALL_VOICEMAIL_PERMISSION);
+
+ // Should also succeed with full permissions granted.
setUpWithVoicemailPermissions();
mResolver.query(Calls.CONTENT_URI_WITH_VOICEMAIL, null, null, null, null);
}
@@ -373,6 +376,12 @@ public class CallLogProviderTest extends BaseContactsProvider2Test {
mResolver.delete(Calls.CONTENT_URI_WITH_VOICEMAIL, null, null);
}
});
+
+ // Should succeed with manage permission granted
+ mActor.addPermissions(MANAGE_VOICEMAIL_PERMISSION);
+ mResolver.delete(Calls.CONTENT_URI_WITH_VOICEMAIL, null, null);
+ mActor.removePermissions(MANAGE_VOICEMAIL_PERMISSION);
+
// Should now succeed with permissions granted.
setUpWithVoicemailPermissions();
mResolver.delete(Calls.CONTENT_URI_WITH_VOICEMAIL, null, null);
diff --git a/tests/src/com/android/providers/contacts/VoicemailProviderTest.java b/tests/src/com/android/providers/contacts/VoicemailProviderTest.java
index 8fdbccf..451d1ac 100644
--- a/tests/src/com/android/providers/contacts/VoicemailProviderTest.java
+++ b/tests/src/com/android/providers/contacts/VoicemailProviderTest.java
@@ -195,6 +195,20 @@ public class VoicemailProviderTest extends BaseVoicemailProviderTest {
insertVoicemailForSourcePackage("another-package");
}
});
+
+ setUpForNoPermission();
+ mUseSourceUri = false;
+ // With the READ_ALL_VOICEMAIL permission, we should now be able to read all voicemails
+ mActor.addPermissions(READ_ALL_VOICEMAIL_PERMISSION);
+ assertEquals(2, getCount(voicemailUri(), null, null));
+
+ // An insert for another package should still fail
+ EvenMoreAsserts.assertThrows(SecurityException.class, new Runnable() {
+ @Override
+ public void run() {
+ insertVoicemailForSourcePackage("another-package");
+ }
+ });
}
public void testPermissions_UpdateAndDelete() {
@@ -224,6 +238,25 @@ public class VoicemailProviderTest extends BaseVoicemailProviderTest {
mResolver.delete(anotherVoicemail, null, null);
}
});
+
+ // If we have the manage voicemail permission, we should be able to both update and delete
+ // voicemails from all packages
+ setUpForNoPermission();
+ mActor.addPermissions(MANAGE_VOICEMAIL_PERMISSION);
+ mResolver.update(anotherVoicemail, getTestVoicemailValues(), null, null);
+
+ // Now add the read voicemail permission temporarily to verify that the update actually
+ // worked
+ mActor.addPermissions(READ_ALL_VOICEMAIL_PERMISSION);
+ assertStoredValues(anotherVoicemail, getTestVoicemailValues());
+ mActor.removePermissions(READ_ALL_VOICEMAIL_PERMISSION);
+
+ mResolver.delete(anotherVoicemail, null, null);
+
+ // Now add the read voicemail permission temporarily to verify that the delete actually
+ // worked
+ mActor.addPermissions(READ_ALL_VOICEMAIL_PERMISSION);
+ assertEquals(0, getCount(anotherVoicemail, null, null));
}
private Uri withSourcePackageParam(Uri uri) {
@@ -250,6 +283,35 @@ public class VoicemailProviderTest extends BaseVoicemailProviderTest {
mActor.removeUriPermissions(uri1);
}
+ /*
+ * Checks that the READ_ALL_VOICEMAIL permission provides read access to a uri.
+ */
+ public void testUriPermissions_ReadAccess() {
+ setUpForFullPermission();
+ final Uri uri1 = insertVoicemail();
+ // Give away all permissions before querying. Access should be denied.
+ setUpForNoPermission();
+ mUseSourceUri = false;
+ checkHasNoAccessToUri(uri1);
+
+ mActor.addPermissions(READ_ALL_VOICEMAIL_PERMISSION);
+ checkHasReadAccessToUri(uri1);
+ }
+
+ /*
+ * Checks that the MANAGE_VOICEMAIL permission provides write access to a uri.
+ */
+ public void testUriPermissions_WriteAccess() {
+ setUpForFullPermission();
+ final Uri uri1 = insertVoicemail();
+ // Give away all permissions before querying. Access should be denied.
+ setUpForNoPermission();
+ checkHasNoAccessToUri(uri1);
+
+ mActor.addPermissions(MANAGE_VOICEMAIL_PERMISSION);
+ checkHasUpdateAndDeleteAccessToUri(uri1);
+ }
+
private void checkHasNoAccessToUri(final Uri uri) {
checkHasNoReadAccessToUri(uri);
checkHasNoWriteAccessToUri(uri);
@@ -298,6 +360,11 @@ public class VoicemailProviderTest extends BaseVoicemailProviderTest {
});
}
+ private void checkHasUpdateAndDeleteAccessToUri(final Uri uri) {
+ mResolver.update(uri, getTestVoicemailValues(), null, null);
+ mResolver.delete(uri, null, null);
+ }
+
private void checkHasNoWriteAccessToUri(final Uri uri) {
EvenMoreAsserts.assertThrows(SecurityException.class, new Runnable() {
@Override