diff options
author | Makoto Onuki <omakoto@google.com> | 2014-07-17 13:32:22 -0700 |
---|---|---|
committer | Makoto Onuki <omakoto@google.com> | 2014-07-22 10:29:34 -0700 |
commit | b0828df351e8b261ab36c8af37929bf3d9d6a4f9 (patch) | |
tree | eec8d6e4519ef0379f4adb7553937b673591e9e1 /tests/src/com/android | |
parent | 17c74a2eb2e7b0d7d5ff5f3f679688c1719b8c06 (diff) | |
download | packages_providers_ContactsProvider-b0828df351e8b261ab36c8af37929bf3d9d6a4f9.zip packages_providers_ContactsProvider-b0828df351e8b261ab36c8af37929bf3d9d6a4f9.tar.gz packages_providers_ContactsProvider-b0828df351e8b261ab36c8af37929bf3d9d6a4f9.tar.bz2 |
Check DPM.getCrossProfileCallerIdDisabled in caller-id
- Also add a test for UserUtils
- Also fix broken tests due to UserUtils.
Bug 16467654
Bug 15779911
Bug 16458399
Change-Id: I64a4526b512fce94590b75eae037a8bdcd874064
Diffstat (limited to 'tests/src/com/android')
-rw-r--r-- | tests/src/com/android/providers/contacts/ContactsActor.java | 99 | ||||
-rw-r--r-- | tests/src/com/android/providers/contacts/util/UserUtilsTest.java | 83 |
2 files changed, 180 insertions, 2 deletions
diff --git a/tests/src/com/android/providers/contacts/ContactsActor.java b/tests/src/com/android/providers/contacts/ContactsActor.java index 8da2800..57dd45f 100644 --- a/tests/src/com/android/providers/contacts/ContactsActor.java +++ b/tests/src/com/android/providers/contacts/ContactsActor.java @@ -23,6 +23,7 @@ import android.accounts.AccountManagerFuture; import android.accounts.AuthenticatorException; import android.accounts.OnAccountsUpdateListener; import android.accounts.OperationCanceledException; +import android.app.admin.DevicePolicyManager; import android.content.ContentProvider; import android.content.ContentResolver; import android.content.ContentUris; @@ -33,6 +34,7 @@ import android.content.SharedPreferences; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.content.pm.ProviderInfo; +import android.content.pm.UserInfo; import android.content.res.Configuration; import android.content.res.Resources; import android.database.Cursor; @@ -40,8 +42,12 @@ import android.location.Country; import android.location.CountryDetector; import android.location.CountryListener; import android.net.Uri; +import android.os.Bundle; import android.os.Handler; +import android.os.IUserManager; import android.os.Looper; +import android.os.UserHandle; +import android.os.UserManager; import android.provider.BaseColumns; import android.provider.ContactsContract; import android.provider.ContactsContract.AggregationExceptions; @@ -62,7 +68,9 @@ import com.google.android.collect.Sets; import java.io.File; import java.io.IOException; +import java.util.ArrayList; import java.util.Arrays; +import java.util.List; import java.util.Locale; import java.util.Set; @@ -135,6 +143,83 @@ public class ContactsActor { } } + public MockUserManager mockUserManager; + + public static class MockUserManager extends UserManager { + public static UserInfo createUserInfo(String name, int id, int groupId, int flags) { + final UserInfo ui = new UserInfo(); + ui.name = name; + ui.id = id; + ui.profileGroupId = groupId; + ui.flags = flags | UserInfo.FLAG_INITIALIZED; + return ui; + } + + public static final UserInfo PRIMARY_USER = createUserInfo("primary", 0, 0, + UserInfo.FLAG_PRIMARY | UserInfo.FLAG_ADMIN); + public static final UserInfo CORP_USER = createUserInfo("corp", 10, 0, + UserInfo.FLAG_MANAGED_PROFILE); + public static final UserInfo SECONDARY_USER = createUserInfo("2nd", 11, 11, 0); + + /** "My" user. Set it to change the current user. */ + public int myUser = 0; + + private ArrayList<UserInfo> mUsers = new ArrayList<>(); + + public MockUserManager(Context context) { + super(context, /* IUserManager */ null); + + mUsers.add(PRIMARY_USER); // Add the primary user. + } + + /** Replaces users. */ + public void setUsers(UserInfo... users) { + mUsers.clear(); + for (UserInfo ui : users) { + mUsers.add(ui); + } + } + + @Override + public int getUserHandle() { + return myUser; + } + + @Override + public UserInfo getUserInfo(int userHandle) { + for (UserInfo ui : mUsers) { + if (ui.id == userHandle) { + return ui; + } + } + return null; + } + + @Override + public UserInfo getProfileParent(int userHandle) { + final UserInfo child = getUserInfo(userHandle); + if (child == null) { + return null; + } + for (UserInfo ui : mUsers) { + if (ui.id != userHandle && ui.id == child.profileGroupId) { + return ui; + } + } + return null; + } + + @Override + public List<UserInfo> getUsers() { + return mUsers; + } + + @Override + public Bundle getUserRestrictions(UserHandle userHandle) { + return new Bundle(); + } + } + private IsolatedContext mProviderContext; /** @@ -143,7 +228,7 @@ public class ContactsActor { * a new instance of {@link RestrictionMockContext}, which stubs out the * security infrastructure. */ - public ContactsActor(Context overallContext, String packageName, + public ContactsActor(final Context overallContext, String packageName, Class<? extends ContentProvider> providerClass, String authority) throws Exception { resolver = new MockContentResolver(); context = new RestrictionMockContext(overallContext, packageName, resolver, @@ -177,7 +262,12 @@ public class ContactsActor { if (Context.ACCOUNT_SERVICE.equals(name)) { return mMockAccountManager; } - return super.getSystemService(name); + if (Context.USER_SERVICE.equals(name)) { + return mockUserManager; + } + // Use overallContext here; super.getSystemService() somehow won't return + // DevicePolicyManager. + return overallContext.getSystemService(name); } @Override @@ -187,9 +277,14 @@ public class ContactsActor { }; mMockAccountManager = new MockAccountManager(mProviderContext); + mockUserManager = new MockUserManager(mProviderContext); provider = addProvider(providerClass, authority); } + public Context getProviderContext() { + return mProviderContext; + } + public void addAuthority(String authority) { resolver.addProvider(authority, provider); } diff --git a/tests/src/com/android/providers/contacts/util/UserUtilsTest.java b/tests/src/com/android/providers/contacts/util/UserUtilsTest.java new file mode 100644 index 0000000..4417ad5 --- /dev/null +++ b/tests/src/com/android/providers/contacts/util/UserUtilsTest.java @@ -0,0 +1,83 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ +package com.android.providers.contacts.util; + +import com.android.providers.contacts.ContactsActor; +import com.android.providers.contacts.ContactsActor.MockUserManager; +import com.android.providers.contacts.SynchronousContactsProvider2; + +import android.content.ContentProvider; +import android.content.Context; +import android.os.UserManager; +import android.provider.ContactsContract; +import android.test.AndroidTestCase; +import android.test.suitebuilder.annotation.SmallTest; + +import static com.android.providers.contacts.ContactsActor.PACKAGE_GREY; + +@SmallTest +public class UserUtilsTest extends AndroidTestCase { + + protected ContactsActor mActor; + + @Override + protected void setUp() throws Exception { + super.setUp(); + + mActor = new ContactsActor(getContext(), PACKAGE_GREY, + SynchronousContactsProvider2.class, + ContactsContract.AUTHORITY); + } + + public void testGetCorpUserId() { + final Context c = mActor.getProviderContext(); + final MockUserManager um = mActor.mockUserManager; + + // No corp user. Primary only. + assertEquals(-1, UserUtils.getCorpUserId(c)); + + // Primary + corp + um.setUsers(MockUserManager.PRIMARY_USER, MockUserManager.CORP_USER); + + um.myUser = MockUserManager.PRIMARY_USER.id; + assertEquals(MockUserManager.CORP_USER.id, UserUtils.getCorpUserId(c)); + + um.myUser = MockUserManager.CORP_USER.id; + assertEquals(-1, UserUtils.getCorpUserId(c)); + + // Primary + secondary + corp + um.setUsers(MockUserManager.PRIMARY_USER, MockUserManager.SECONDARY_USER, + MockUserManager.CORP_USER); + + um.myUser = MockUserManager.PRIMARY_USER.id; + assertEquals(MockUserManager.CORP_USER.id, UserUtils.getCorpUserId(c)); + + um.myUser = MockUserManager.CORP_USER.id; + assertEquals(-1, UserUtils.getCorpUserId(c)); + + um.myUser = MockUserManager.SECONDARY_USER.id; + assertEquals(-1, UserUtils.getCorpUserId(c)); + + // Primary + secondary + um.setUsers(MockUserManager.PRIMARY_USER, MockUserManager.SECONDARY_USER); + + um.myUser = MockUserManager.PRIMARY_USER.id; + assertEquals(-1, UserUtils.getCorpUserId(c)); + + um.myUser = MockUserManager.SECONDARY_USER.id; + assertEquals(-1, UserUtils.getCorpUserId(c)); + } +} |