| /* |
| * Copyright 2016, 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.managedprovisioning.parser; |
| |
| import static android.app.admin.DevicePolicyManager.ACTION_PROVISION_FINANCED_DEVICE; |
| import static android.app.admin.DevicePolicyManager.ACTION_PROVISION_MANAGED_DEVICE; |
| import static android.app.admin.DevicePolicyManager.ACTION_PROVISION_MANAGED_DEVICE_FROM_TRUSTED_SOURCE; |
| import static android.app.admin.DevicePolicyManager.ACTION_PROVISION_MANAGED_PROFILE; |
| import static android.app.admin.DevicePolicyManager.ACTION_PROVISION_MANAGED_SHAREABLE_DEVICE; |
| import static android.app.admin.DevicePolicyManager.ACTION_PROVISION_MANAGED_USER; |
| import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_ACCOUNT_TO_MIGRATE; |
| import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE; |
| import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME; |
| import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_DEVICE_ADMIN_MINIMUM_VERSION_CODE; |
| import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM; |
| import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_COOKIE_HEADER; |
| import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION; |
| |
| import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_ICON_URI; |
| import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_LABEL; |
| import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME; |
| import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_DEVICE_ADMIN_SIGNATURE_CHECKSUM; |
| import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_DISCLAIMERS; |
| import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_DISCLAIMER_CONTENT; |
| import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_DISCLAIMER_HEADER; |
| import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_LEAVE_ALL_SYSTEM_APPS_ENABLED; |
| import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_LOCALE; |
| import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_LOCAL_TIME; |
| import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_LOGO_URI; |
| import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_MAIN_COLOR; |
| import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_KEEP_ACCOUNT_ON_MIGRATION; |
| import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_ORGANIZATION_NAME; |
| import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_SKIP_ENCRYPTION; |
| import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_SKIP_USER_CONSENT; |
| import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_SKIP_USER_SETUP; |
| import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_SUPPORT_URL; |
| import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_TIME_ZONE; |
| import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_USE_MOBILE_DATA; |
| import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_WIFI_ANONYMOUS_IDENTITY; |
| import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_WIFI_CA_CERTIFICATE; |
| import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_WIFI_DOMAIN; |
| import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_WIFI_EAP_METHOD; |
| import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_WIFI_HIDDEN; |
| import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_WIFI_IDENTITY; |
| import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_WIFI_PAC_URL; |
| import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_WIFI_PASSWORD; |
| import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_WIFI_PHASE2_AUTH; |
| import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_WIFI_PROXY_BYPASS; |
| import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_WIFI_PROXY_HOST; |
| import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_WIFI_PROXY_PORT; |
| import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_WIFI_SECURITY_TYPE; |
| import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_WIFI_SSID; |
| import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_WIFI_USER_CERTIFICATE; |
| import static android.nfc.NfcAdapter.ACTION_NDEF_DISCOVERED; |
| import static com.android.managedprovisioning.TestUtils.createTestAdminExtras; |
| import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_ACCOUNT_TO_MIGRATE_SHORT; |
| import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE_SHORT; |
| import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME_SHORT; |
| import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_DEVICE_ADMIN_MINIMUM_VERSION_CODE_SHORT; |
| import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM_SHORT; |
| import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_COOKIE_HEADER_SHORT; |
| import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION_SHORT; |
| import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_ICON_URI_SHORT; |
| import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_LABEL_SHORT; |
| import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME_SHORT; |
| import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_DEVICE_ADMIN_SIGNATURE_CHECKSUM_SHORT; |
| import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_DISCLAIMERS_SHORT; |
| import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_DISCLAIMER_CONTENT_SHORT; |
| import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_DISCLAIMER_HEADER_SHORT; |
| import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_LEAVE_ALL_SYSTEM_APPS_ENABLED_SHORT; |
| import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_LOCALE_SHORT; |
| import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_LOCAL_TIME_SHORT; |
| import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_LOGO_URI_SHORT; |
| import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_MAIN_COLOR_SHORT; |
| import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_KEEP_ACCOUNT_ON_MIGRATION_SHORT; |
| import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_ORGANIZATION_NAME_SHORT; |
| import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_SKIP_ENCRYPTION_SHORT; |
| import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_SKIP_USER_CONSENT_SHORT; |
| import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_SKIP_USER_SETUP_SHORT; |
| import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_SUPPORT_URL_SHORT; |
| import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_TIME_ZONE_SHORT; |
| import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_USE_MOBILE_DATA_SHORT; |
| import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_WIFI_ANONYMOUS_IDENTITY_SHORT; |
| import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_WIFI_CA_CERTIFICATE_SHORT; |
| import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_WIFI_DOMAIN_SHORT; |
| import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_WIFI_EAP_METHOD_SHORT; |
| import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_WIFI_HIDDEN_SHORT; |
| import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_WIFI_IDENTITY_SHORT; |
| import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_WIFI_PAC_URL_SHORT; |
| import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_WIFI_PASSWORD_SHORT; |
| import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_WIFI_PHASE2_AUTH_SHORT; |
| import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_WIFI_PROXY_BYPASS_SHORT; |
| import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_WIFI_PROXY_HOST_SHORT; |
| import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_WIFI_PROXY_PORT_SHORT; |
| import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_WIFI_SECURITY_TYPE_SHORT; |
| import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_WIFI_SSID_SHORT; |
| import static com.android.managedprovisioning.parser.ExtrasProvisioningDataParser.EXTRA_PROVISIONING_WIFI_USER_CERTIFICATE_SHORT; |
| |
| import static com.google.common.truth.Truth.assertThat; |
| import static org.mockito.Mockito.doReturn; |
| import static org.mockito.Mockito.spy; |
| import static org.mockito.Mockito.when; |
| |
| import android.accounts.Account; |
| import android.app.admin.DevicePolicyManager; |
| import android.content.ComponentName; |
| import android.content.Context; |
| import android.content.Intent; |
| import android.net.Uri; |
| import android.os.Bundle; |
| import android.os.Parcelable; |
| import android.os.UserHandle; |
| import android.test.AndroidTestCase; |
| import android.test.suitebuilder.annotation.SmallTest; |
| import android.util.Base64; |
| import com.android.managedprovisioning.common.Globals; |
| import com.android.managedprovisioning.common.IllegalProvisioningArgumentException; |
| import com.android.managedprovisioning.common.ManagedProvisioningSharedPreferences; |
| import com.android.managedprovisioning.common.StoreUtils; |
| import com.android.managedprovisioning.common.Utils; |
| import com.android.managedprovisioning.model.PackageDownloadInfo; |
| import com.android.managedprovisioning.model.ProvisioningParams; |
| import com.android.managedprovisioning.model.WifiInfo; |
| |
| import java.lang.reflect.Field; |
| import java.util.Arrays; |
| import java.util.Locale; |
| import java.util.stream.Stream; |
| |
| import org.mockito.Mock; |
| import org.mockito.MockitoAnnotations; |
| |
| /** Tests for {@link ExtrasProvisioningDataParser}. */ |
| @SmallTest |
| public class ExtrasProvisioningDataParserTest extends AndroidTestCase { |
| private static final String TEST_PACKAGE_NAME = "com.afwsamples.testdpc"; |
| private static final ComponentName TEST_COMPONENT_NAME = |
| ComponentName.unflattenFromString( |
| "com.afwsamples.testdpc/com.afwsamples.testdpc.DeviceAdminReceiver"); |
| private static final ComponentName TEST_COMPONENT_NAME_2 = |
| ComponentName.unflattenFromString( |
| "com.afwsamples.testdpc2/com.afwsamples.testdpc.DeviceAdminReceiver"); |
| private static final long TEST_LOCAL_TIME = 1456939524713L; |
| private static final Locale TEST_LOCALE = Locale.UK; |
| private static final String TEST_TIME_ZONE = "GMT"; |
| private static final Integer TEST_MAIN_COLOR = 65280; |
| private static final boolean TEST_STARTED_BY_TRUSTED_SOURCE = true; |
| private static final boolean TEST_LEAVE_ALL_SYSTEM_APP_ENABLED = true; |
| private static final boolean TEST_SKIP_ENCRYPTION = true; |
| private static final boolean TEST_SKIP_USER_CONSENT = true; |
| private static final boolean TEST_KEEP_ACCOUNT_MIGRATED = true; |
| private static final boolean TEST_SKIP_USER_SETUP = true; |
| private static final long TEST_PROVISIONING_ID = 1000L; |
| private static final Account TEST_ACCOUNT_TO_MIGRATE = |
| new Account("user@gmail.com", "com.google"); |
| private static final String TEST_SHARED_PREFERENCE = "ExtrasProvisioningDataParserTest"; |
| private static final String TEST_DEVICE_ADMIN_PACKAGE_LABEL = "TestPackage"; |
| private static final String TEST_ORGANIZATION_NAME = "TestOrganizationName"; |
| private static final String TEST_SUPPORT_URL = "https://www.support.url/"; |
| private static final String TEST_ILL_FORMED_LOCALE = "aaa_"; |
| |
| // Wifi info |
| private static final String TEST_SSID = "TestWifi"; |
| private static final boolean TEST_HIDDEN = true; |
| private static final String TEST_SECURITY_TYPE = "WPA2"; |
| private static final String TEST_SECURITY_TYPE_EAP = "EAP"; |
| private static final String TEST_PASSWORD = "GoogleRock"; |
| private static final String TEST_PROXY_HOST = "testhost.com"; |
| private static final int TEST_PROXY_PORT = 7689; |
| private static final String TEST_PROXY_BYPASS_HOSTS = "http://host1.com;https://host2.com"; |
| private static final String TEST_PAC_URL = "pac.test.com"; |
| private static final String TEST_EAP_METHOD = "TTLS"; |
| private static final String TEST_PHASE2_AUTH = "PAP"; |
| private static final String TEST_CA_CERT = "certificate"; |
| private static final String TEST_USER_CERT = "certificate"; |
| private static final String TEST_IDENTITY = "TestUser"; |
| private static final String TEST_ANONYMOUS_IDENTITY = "TestAUser"; |
| private static final String TEST_DOMAIN = "google.com"; |
| private static final WifiInfo TEST_WIFI_INFO = WifiInfo.Builder.builder() |
| .setSsid(TEST_SSID) |
| .setHidden(TEST_HIDDEN) |
| .setSecurityType(TEST_SECURITY_TYPE) |
| .setPassword(TEST_PASSWORD) |
| .setProxyHost(TEST_PROXY_HOST) |
| .setProxyPort(TEST_PROXY_PORT) |
| .setProxyBypassHosts(TEST_PROXY_BYPASS_HOSTS) |
| .setPacUrl(TEST_PAC_URL) |
| .build(); |
| |
| // Device admin package download info |
| private static final String TEST_DOWNLOAD_LOCATION = |
| "http://example/dpc.apk"; |
| private static final String TEST_COOKIE_HEADER = |
| "Set-Cookie: sessionToken=foobar; Expires=Thu, 18 Feb 2016 23:59:59 GMT"; |
| private static final byte[] TEST_PACKAGE_CHECKSUM = new byte[] { '1', '2', '3', '4', '5' }; |
| private static final byte[] TEST_SIGNATURE_CHECKSUM = new byte[] { '5', '4', '3', '2', '1' }; |
| private static final int TEST_MIN_SUPPORT_VERSION = 17689; |
| private static final PackageDownloadInfo TEST_DOWNLOAD_INFO = |
| PackageDownloadInfo.Builder.builder() |
| .setLocation(TEST_DOWNLOAD_LOCATION) |
| .setCookieHeader(TEST_COOKIE_HEADER) |
| .setPackageChecksum(TEST_PACKAGE_CHECKSUM) |
| .setSignatureChecksum(TEST_SIGNATURE_CHECKSUM) |
| .setMinVersion(TEST_MIN_SUPPORT_VERSION) |
| .build(); |
| private static final boolean TEST_USE_MOBILE_DATA = true; |
| private static final Uri TEST_URI = Uri.parse("https://www.google.com/"); |
| private static final String TEST_DISCLAMER_HEADER = "Google"; |
| |
| @Mock |
| private Context mContext; |
| |
| @Mock |
| private DevicePolicyManager mDpm; |
| |
| @Mock |
| private ManagedProvisioningSharedPreferences mSharedPreferences; |
| |
| private ExtrasProvisioningDataParser mExtrasProvisioningDataParser; |
| |
| private Utils mUtils; |
| |
| @Override |
| public void setUp() { |
| // this is necessary for mockito to work |
| System.setProperty("dexmaker.dexcache", getContext().getCacheDir().toString()); |
| |
| MockitoAnnotations.initMocks(this); |
| when(mContext.getSystemServiceName(DevicePolicyManager.class)) |
| .thenReturn(Context.DEVICE_POLICY_SERVICE); |
| when(mContext.getSystemService(Context.DEVICE_POLICY_SERVICE)).thenReturn(mDpm); |
| when(mContext.getContentResolver()).thenReturn(getContext().getContentResolver()); |
| when(mContext.getFilesDir()).thenReturn(getContext().getFilesDir()); |
| when(mSharedPreferences.incrementAndGetProvisioningId()).thenReturn(TEST_PROVISIONING_ID); |
| mUtils = spy(new Utils()); |
| mExtrasProvisioningDataParser = new ExtrasProvisioningDataParser(mContext, mUtils, |
| mSharedPreferences); |
| } |
| |
| public void testParse_trustedSourceProvisioningIntent() throws Exception { |
| // GIVEN a ACTION_PROVISION_MANAGED_DEVICE_FROM_TRUSTED_SOURCE intent and other extras. |
| Intent intent = new Intent(ACTION_PROVISION_MANAGED_DEVICE_FROM_TRUSTED_SOURCE) |
| // GIVEN a device admin package name and component name |
| .putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME, TEST_PACKAGE_NAME) |
| .putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME, TEST_COMPONENT_NAME) |
| .putExtras(getTestTimeTimeZoneAndLocaleExtras()) |
| .putExtras(getTestWifiInfoExtras()) |
| .putExtras(getTestDeviceAdminDownloadExtras()) |
| .putExtra(EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE, createTestAdminExtras()) |
| .putExtra(EXTRA_PROVISIONING_SKIP_ENCRYPTION, TEST_SKIP_ENCRYPTION) |
| .putExtra(EXTRA_PROVISIONING_SKIP_USER_CONSENT, TEST_SKIP_USER_CONSENT) |
| .putExtra(EXTRA_PROVISIONING_KEEP_ACCOUNT_ON_MIGRATION, TEST_KEEP_ACCOUNT_MIGRATED) |
| .putExtra(EXTRA_PROVISIONING_LEAVE_ALL_SYSTEM_APPS_ENABLED, |
| TEST_LEAVE_ALL_SYSTEM_APP_ENABLED) |
| .putExtra(EXTRA_PROVISIONING_MAIN_COLOR, TEST_MAIN_COLOR) |
| .putExtra(EXTRA_PROVISIONING_ACCOUNT_TO_MIGRATE, TEST_ACCOUNT_TO_MIGRATE) |
| .putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_LABEL, |
| TEST_DEVICE_ADMIN_PACKAGE_LABEL) |
| .putExtra(EXTRA_PROVISIONING_ORGANIZATION_NAME, TEST_ORGANIZATION_NAME) |
| .putExtra(EXTRA_PROVISIONING_SUPPORT_URL, TEST_SUPPORT_URL); |
| |
| // WHEN the intent is parsed by the parser. |
| ProvisioningParams params = mExtrasProvisioningDataParser.parse(intent); |
| |
| // THEN ProvisionParams is constructed as expected. |
| assertThat( |
| ProvisioningParams.Builder.builder() |
| // THEN ACTION_PROVISION_MANAGED_DEVICE_FROM_TRUSTED_SOURCE is translated to |
| // ACTION_PROVISION_MANAGED_DEVICE |
| .setProvisioningAction(ACTION_PROVISION_MANAGED_DEVICE) |
| .setDeviceAdminComponentName(TEST_COMPONENT_NAME) |
| .setDeviceAdminDownloadInfo(TEST_DOWNLOAD_INFO) |
| .setProvisioningId(TEST_PROVISIONING_ID) |
| .setLocalTime(TEST_LOCAL_TIME) |
| .setLocale(TEST_LOCALE) |
| .setTimeZone(TEST_TIME_ZONE) |
| // THEN customizable color is not supported. |
| .setMainColor(ProvisioningParams.DEFAULT_MAIN_COLOR) |
| // THEN the trusted source is set to true. |
| .setStartedByTrustedSource(true) |
| .setSkipEncryption(TEST_SKIP_ENCRYPTION) |
| // THEN skipping user consent flag is ignored |
| .setSkipUserConsent(false) |
| // THEN keep account migrated flag is ignored |
| .setKeepAccountMigrated(false) |
| .setLeaveAllSystemAppsEnabled(true) |
| .setWifiInfo(TEST_WIFI_INFO) |
| .setAdminExtrasBundle(createTestAdminExtras()) |
| .setAccountToMigrate(TEST_ACCOUNT_TO_MIGRATE) |
| .setDeviceAdminLabel(TEST_DEVICE_ADMIN_PACKAGE_LABEL) |
| .setOrganizationName(TEST_ORGANIZATION_NAME) |
| .setSupportUrl(TEST_SUPPORT_URL) |
| .build()) |
| .isEqualTo(params); |
| } |
| |
| public void testParse_financedDeviceProvisioningIntent() throws Exception { |
| // GIVEN a ACTION_PROVISION_FINANCED_DEVICE intent and other extras. |
| Intent intent = new Intent(ACTION_PROVISION_FINANCED_DEVICE) |
| // GIVEN a device admin package name and component name |
| .putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME, TEST_PACKAGE_NAME) |
| .putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME, TEST_COMPONENT_NAME) |
| .putExtras(getTestDeviceAdminDownloadExtras()) |
| .putExtra(EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE, createTestAdminExtras()) |
| .putExtra(EXTRA_PROVISIONING_SKIP_USER_CONSENT, TEST_SKIP_USER_CONSENT) |
| .putExtra(EXTRA_PROVISIONING_KEEP_ACCOUNT_ON_MIGRATION, TEST_KEEP_ACCOUNT_MIGRATED) |
| .putExtra(EXTRA_PROVISIONING_LEAVE_ALL_SYSTEM_APPS_ENABLED, |
| TEST_LEAVE_ALL_SYSTEM_APP_ENABLED) |
| .putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_LABEL, |
| TEST_DEVICE_ADMIN_PACKAGE_LABEL) |
| .putExtra(EXTRA_PROVISIONING_ORGANIZATION_NAME, TEST_ORGANIZATION_NAME) |
| .putExtra(EXTRA_PROVISIONING_SUPPORT_URL, TEST_SUPPORT_URL); |
| |
| // WHEN the intent is parsed by the parser. |
| ProvisioningParams params = mExtrasProvisioningDataParser.parse(intent); |
| |
| // THEN ProvisionParams is constructed as expected. |
| assertThat( |
| ProvisioningParams.Builder.builder() |
| .setProvisioningAction(ACTION_PROVISION_FINANCED_DEVICE) |
| .setDeviceAdminComponentName(TEST_COMPONENT_NAME) |
| .setDeviceAdminDownloadInfo(TEST_DOWNLOAD_INFO) |
| .setProvisioningId(TEST_PROVISIONING_ID) |
| // THEN customizable color is not supported. |
| .setMainColor(ProvisioningParams.DEFAULT_MAIN_COLOR) |
| // THEN skipping user consent flag is ignored |
| .setSkipUserConsent(false) |
| // THEN keep account migrated flag is ignored |
| .setKeepAccountMigrated(false) |
| // THEN leave all system apps is always true |
| .setLeaveAllSystemAppsEnabled(true) |
| // THEN skip user setup is always false |
| .setSkipUserSetup(false) |
| .setAdminExtrasBundle(createTestAdminExtras()) |
| .setDeviceAdminLabel(TEST_DEVICE_ADMIN_PACKAGE_LABEL) |
| .setOrganizationName(TEST_ORGANIZATION_NAME) |
| .setSupportUrl(TEST_SUPPORT_URL) |
| .build()) |
| .isEqualTo(params); |
| } |
| |
| public void testParse_resumeProvisioningIntent() throws Exception { |
| // GIVEN a ProvisioningParams stored in an intent |
| ProvisioningParams expected = ProvisioningParams.Builder.builder() |
| .setProvisioningAction(ACTION_PROVISION_MANAGED_DEVICE) |
| .setDeviceAdminComponentName(TEST_COMPONENT_NAME) |
| .build(); |
| Intent intent = new Intent(Globals.ACTION_RESUME_PROVISIONING) |
| .putExtra(ProvisioningParams.EXTRA_PROVISIONING_PARAMS, expected); |
| // WHEN the intent is parsed by the parser |
| ProvisioningParams params = mExtrasProvisioningDataParser.parse(intent); |
| // THEN we get back the original ProvisioningParams. |
| assertThat(expected).isEqualTo(params); |
| } |
| |
| public void testParse_managedProfileIntent() throws Exception { |
| // GIVEN a managed profile provisioning intent and other extras. |
| Intent intent = new Intent(ACTION_PROVISION_MANAGED_PROFILE) |
| .putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME, TEST_PACKAGE_NAME) |
| .putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME, TEST_COMPONENT_NAME) |
| .putExtras(getTestTimeTimeZoneAndLocaleExtras()) |
| .putExtras(getTestWifiInfoExtras()) |
| .putExtras(getTestDeviceAdminDownloadExtras()) |
| .putExtra(EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE, createTestAdminExtras()) |
| .putExtra(EXTRA_PROVISIONING_SKIP_ENCRYPTION, TEST_SKIP_ENCRYPTION) |
| .putExtra(EXTRA_PROVISIONING_MAIN_COLOR, TEST_MAIN_COLOR) |
| .putExtra(EXTRA_PROVISIONING_SKIP_USER_CONSENT, TEST_SKIP_USER_CONSENT) |
| .putExtra(EXTRA_PROVISIONING_KEEP_ACCOUNT_ON_MIGRATION, TEST_KEEP_ACCOUNT_MIGRATED) |
| .putExtra(EXTRA_PROVISIONING_LEAVE_ALL_SYSTEM_APPS_ENABLED, |
| TEST_LEAVE_ALL_SYSTEM_APP_ENABLED) |
| .putExtra(EXTRA_PROVISIONING_ACCOUNT_TO_MIGRATE, TEST_ACCOUNT_TO_MIGRATE); |
| |
| // GIVEN the device admin is installed. |
| mockInstalledDeviceAdminForTestPackageName(); |
| |
| // WHEN the intent is parsed by the parser. |
| ProvisioningParams params = mExtrasProvisioningDataParser.parse(intent); |
| |
| // THEN ProvisionParams is constructed as expected. |
| assertThat( |
| ProvisioningParams.Builder.builder() |
| // THEN provisioning action is ACTION_PROVISION_MANAGED_PROFILE |
| .setProvisioningAction(ACTION_PROVISION_MANAGED_PROFILE) |
| .setDeviceAdminComponentName(TEST_COMPONENT_NAME) |
| .setProvisioningId(TEST_PROVISIONING_ID) |
| // THEN device admin package name is not supported. |
| .setDeviceAdminPackageName(null) |
| // THEN device admin download info is not supported. |
| .setDeviceAdminDownloadInfo(null) |
| // THEN wifi info is not supported. |
| .setWifiInfo(null) |
| .setMainColor(TEST_MAIN_COLOR) |
| .setSkipEncryption(TEST_SKIP_ENCRYPTION) |
| // THEN leave all system apps flag is ignored |
| .setLeaveAllSystemAppsEnabled(false) |
| // THEN skipping user consent flag is ignored |
| .setSkipUserConsent(false) |
| .setKeepAccountMigrated(TEST_KEEP_ACCOUNT_MIGRATED) |
| .setAdminExtrasBundle(createTestAdminExtras()) |
| .setAccountToMigrate(TEST_ACCOUNT_TO_MIGRATE) |
| .build()) |
| .isEqualTo(params); |
| } |
| |
| public void testParse_managedProfileIntent_CompProvisioning() throws Exception { |
| // GIVEN a managed profile provisioning intent and other extras. |
| Intent intent = buildTestManagedProfileIntent(); |
| |
| // GIVEN the device admin is installed. |
| mockInstalledDeviceAdminForTestPackageName(); |
| |
| // GIVEN the device admin is also device owner in primary user. |
| when(mDpm.getDeviceOwnerComponentOnCallingUser()).thenReturn(TEST_COMPONENT_NAME); |
| |
| // WHEN the intent is parsed by the parser. |
| ProvisioningParams params = mExtrasProvisioningDataParser.parse(intent); |
| |
| // THEN ProvisionParams is constructed as expected. |
| assertThat( |
| ProvisioningParams.Builder.builder() |
| // THEN provisioning action is ACTION_PROVISION_MANAGED_PROFILE |
| .setProvisioningAction(ACTION_PROVISION_MANAGED_PROFILE) |
| .setDeviceAdminComponentName(TEST_COMPONENT_NAME) |
| .setProvisioningId(TEST_PROVISIONING_ID) |
| // THEN device admin package name is not supported. |
| .setDeviceAdminPackageName(null) |
| // THEN device admin download info is not supported. |
| .setDeviceAdminDownloadInfo(null) |
| // THEN wifi info is not supported. |
| .setWifiInfo(null) |
| .setMainColor(TEST_MAIN_COLOR) |
| .setSkipEncryption(TEST_SKIP_ENCRYPTION) |
| .setSkipUserConsent(TEST_SKIP_USER_CONSENT) |
| .setKeepAccountMigrated(TEST_KEEP_ACCOUNT_MIGRATED) |
| .setAdminExtrasBundle(createTestAdminExtras()) |
| .setAccountToMigrate(TEST_ACCOUNT_TO_MIGRATE) |
| .build()) |
| .isEqualTo(params); |
| } |
| |
| public void testParse_managedProfileIntent_DeviceOwnerWithByodProvisioning() throws Exception { |
| // GIVEN a managed profile provisioning intent and other extras. |
| Intent intent = new Intent(ACTION_PROVISION_MANAGED_PROFILE) |
| .putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME, TEST_COMPONENT_NAME) |
| .putExtra(EXTRA_PROVISIONING_SKIP_USER_CONSENT, TEST_SKIP_USER_CONSENT) |
| .putExtra(EXTRA_PROVISIONING_KEEP_ACCOUNT_ON_MIGRATION, TEST_KEEP_ACCOUNT_MIGRATED); |
| |
| // GIVEN the device admin is installed. |
| mockInstalledDeviceAdminForNullPackageName(); |
| |
| // GIVEN a different device admin is a device owner in primary user. |
| when(mDpm.getDeviceOwnerComponentOnCallingUser()).thenReturn(TEST_COMPONENT_NAME_2); |
| |
| // WHEN the intent is parsed by the parser. |
| ProvisioningParams params = mExtrasProvisioningDataParser.parse(intent); |
| |
| // THEN ProvisionParams is constructed as expected. |
| assertThat( |
| ProvisioningParams.Builder.builder() |
| .setProvisioningAction(ACTION_PROVISION_MANAGED_PROFILE) |
| .setDeviceAdminComponentName(TEST_COMPONENT_NAME) |
| .setProvisioningId(TEST_PROVISIONING_ID) |
| // THEN skipping user consent flag is ignored |
| .setSkipUserConsent(false) |
| .setKeepAccountMigrated(TEST_KEEP_ACCOUNT_MIGRATED) |
| .build()) |
| .isEqualTo(params); |
| } |
| |
| public void testParse_managedUserIntent() throws Exception { |
| // GIVEN a managed user provisioning intent and other extras. |
| Intent intent = new Intent(ACTION_PROVISION_MANAGED_USER) |
| // GIVEN a device admin package name and component name |
| .putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME, TEST_PACKAGE_NAME) |
| .putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME, TEST_COMPONENT_NAME) |
| .putExtras(getTestTimeTimeZoneAndLocaleExtras()) |
| .putExtras(getTestWifiInfoExtras()) |
| .putExtras(getTestDeviceAdminDownloadExtras()) |
| .putExtra(EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE, createTestAdminExtras()) |
| .putExtra(EXTRA_PROVISIONING_SKIP_ENCRYPTION, TEST_SKIP_ENCRYPTION) |
| .putExtra(EXTRA_PROVISIONING_MAIN_COLOR, TEST_MAIN_COLOR) |
| .putExtra(EXTRA_PROVISIONING_ACCOUNT_TO_MIGRATE, TEST_ACCOUNT_TO_MIGRATE); |
| |
| // WHEN the intent is parsed by the parser. |
| ProvisioningParams params = mExtrasProvisioningDataParser.parse(intent); |
| |
| // THEN ProvisionParams is constructed as expected. |
| assertThat( |
| ProvisioningParams.Builder.builder() |
| // THEN provisioning action is ACTION_PROVISION_MANAGED_USER |
| .setProvisioningAction(ACTION_PROVISION_MANAGED_USER) |
| .setDeviceAdminComponentName(TEST_COMPONENT_NAME) |
| .setProvisioningId(TEST_PROVISIONING_ID) |
| // THEN device admin package name is not supported in Managed User |
| // provisioning. |
| .setDeviceAdminPackageName(null) |
| // THEN device admin download info is not supported. |
| .setDeviceAdminDownloadInfo(null) |
| // THEN wifi info is not supported. |
| .setWifiInfo(null) |
| .setMainColor(TEST_MAIN_COLOR) |
| .setSkipEncryption(TEST_SKIP_ENCRYPTION) |
| .setAdminExtrasBundle(createTestAdminExtras()) |
| .setAccountToMigrate(TEST_ACCOUNT_TO_MIGRATE) |
| .build()) |
| .isEqualTo(params); |
| } |
| |
| public void testParse_shortExtras_sameAsLongExtras() throws Exception { |
| assertThat(mExtrasProvisioningDataParser.parse(buildIntentWithAllLongExtras())) |
| .isEqualTo(mExtrasProvisioningDataParser.parse(buildIntentWithAllShortExtras())); |
| } |
| |
| public void testParse_managedDeviceIntent() throws Exception { |
| // GIVEN a managed device provisioning intent and other extras. |
| Intent intent = new Intent(ACTION_PROVISION_MANAGED_DEVICE) |
| // GIVEN a device admin package name and component name |
| .putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME, TEST_PACKAGE_NAME) |
| .putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME, TEST_COMPONENT_NAME) |
| .putExtras(getTestTimeTimeZoneAndLocaleExtras()) |
| .putExtras(getTestWifiInfoExtras()) |
| .putExtras(getTestDeviceAdminDownloadExtras()) |
| .putExtra(EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE, createTestAdminExtras()) |
| .putExtra(EXTRA_PROVISIONING_SKIP_ENCRYPTION, TEST_SKIP_ENCRYPTION) |
| .putExtra(EXTRA_PROVISIONING_LEAVE_ALL_SYSTEM_APPS_ENABLED, |
| TEST_LEAVE_ALL_SYSTEM_APP_ENABLED) |
| .putExtra(EXTRA_PROVISIONING_MAIN_COLOR, TEST_MAIN_COLOR) |
| .putExtra(EXTRA_PROVISIONING_ACCOUNT_TO_MIGRATE, TEST_ACCOUNT_TO_MIGRATE); |
| |
| // WHEN the intent is parsed by the parser. |
| ProvisioningParams params = mExtrasProvisioningDataParser.parse(intent); |
| |
| // THEN ProvisionParams is constructed as expected. |
| assertThat( |
| ProvisioningParams.Builder.builder() |
| // THEN provisioning action is ACTION_PROVISION_MANAGED_DEVICE |
| .setProvisioningAction(ACTION_PROVISION_MANAGED_DEVICE) |
| .setDeviceAdminComponentName(TEST_COMPONENT_NAME) |
| .setProvisioningId(TEST_PROVISIONING_ID) |
| // THEN device admin package name is not supported in Device Owner |
| // provisioning. |
| .setDeviceAdminPackageName(null) |
| // THEN Device Admin download info is not supported. |
| .setDeviceAdminDownloadInfo(null) |
| // THEN time, time zone and locale are not supported. |
| .setMainColor(TEST_MAIN_COLOR) |
| .setSkipEncryption(TEST_SKIP_ENCRYPTION) |
| .setLeaveAllSystemAppsEnabled(true) |
| // THEN wifi configuration is not supported. |
| .setWifiInfo(null) |
| .setAdminExtrasBundle(createTestAdminExtras()) |
| .setAccountToMigrate(TEST_ACCOUNT_TO_MIGRATE) |
| .build()) |
| .isEqualTo(params); |
| } |
| |
| public void testParse_managedSharableDeviceIntent() throws Exception { |
| // GIVEN a managed device provisioning intent and other extras. |
| Intent intent = new Intent(ACTION_PROVISION_MANAGED_SHAREABLE_DEVICE) |
| // GIVEN a device admin package name and component name |
| .putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME, TEST_PACKAGE_NAME) |
| .putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME, TEST_COMPONENT_NAME) |
| .putExtras(getTestTimeTimeZoneAndLocaleExtras()) |
| .putExtras(getTestWifiInfoExtras()) |
| .putExtras(getTestDeviceAdminDownloadExtras()) |
| .putExtra(EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE, createTestAdminExtras()) |
| .putExtra(EXTRA_PROVISIONING_SKIP_ENCRYPTION, TEST_SKIP_ENCRYPTION) |
| .putExtra(EXTRA_PROVISIONING_MAIN_COLOR, TEST_MAIN_COLOR) |
| .putExtra(EXTRA_PROVISIONING_ACCOUNT_TO_MIGRATE, TEST_ACCOUNT_TO_MIGRATE); |
| |
| // WHEN the intent is parsed by the parser. |
| ProvisioningParams params = mExtrasProvisioningDataParser.parse(intent); |
| |
| // THEN ProvisionParams is constructed as expected. |
| assertThat( |
| ProvisioningParams.Builder.builder() |
| // THEN provisioning action is ACTION_PROVISION_MANAGED_SHAREABLE_DEVICE |
| .setProvisioningAction(ACTION_PROVISION_MANAGED_SHAREABLE_DEVICE) |
| .setDeviceAdminComponentName(TEST_COMPONENT_NAME) |
| .setProvisioningId(TEST_PROVISIONING_ID) |
| // THEN device admin package name is not supported in Device Owner |
| // provisioning. |
| .setDeviceAdminPackageName(null) |
| // THEN Device Admin download info is not supported. |
| .setDeviceAdminDownloadInfo(null) |
| // THEN time, time zone and locale are not supported. |
| .setMainColor(TEST_MAIN_COLOR) |
| .setSkipEncryption(TEST_SKIP_ENCRYPTION) |
| // THEN wifi configuration is not supported. |
| .setWifiInfo(null) |
| .setAdminExtrasBundle(createTestAdminExtras()) |
| .setAccountToMigrate(TEST_ACCOUNT_TO_MIGRATE) |
| .build()) |
| .isEqualTo(params); |
| } |
| |
| public void testParse_nfcProvisioningIntentThrowsException() { |
| // GIVEN a NFC provisioning intent and other extras. |
| Intent intent = new Intent(ACTION_NDEF_DISCOVERED) |
| // GIVEN a device admin package name and component name |
| .putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME, TEST_PACKAGE_NAME) |
| .putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME, TEST_COMPONENT_NAME) |
| .putExtras(getTestTimeTimeZoneAndLocaleExtras()) |
| .putExtras(getTestWifiInfoExtras()) |
| .putExtras(getTestDeviceAdminDownloadExtras()) |
| .putExtra(EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE, createTestAdminExtras()) |
| .putExtra(EXTRA_PROVISIONING_SKIP_ENCRYPTION, TEST_SKIP_ENCRYPTION) |
| .putExtra(EXTRA_PROVISIONING_MAIN_COLOR, TEST_MAIN_COLOR) |
| .putExtra(EXTRA_PROVISIONING_ACCOUNT_TO_MIGRATE, TEST_ACCOUNT_TO_MIGRATE); |
| |
| try { |
| // WHEN the intent is parsed by the parser. |
| ProvisioningParams params = mExtrasProvisioningDataParser.parse(intent); |
| fail("ExtrasProvisioningDataParser doesn't support NFC intent. " |
| + "IllegalProvisioningArgumentException should be thrown"); |
| } catch (IllegalProvisioningArgumentException e) { |
| // THEN IllegalProvisioningArgumentException is thrown. |
| } |
| } |
| |
| public void testParse_illFormedLocaleThrowsException() throws Exception { |
| // GIVEN a managed device provisioning intent and other extras. |
| Intent intent = new Intent(ACTION_PROVISION_MANAGED_DEVICE_FROM_TRUSTED_SOURCE) |
| // GIVEN a device admin package name and component name |
| .putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME, TEST_PACKAGE_NAME) |
| .putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME, TEST_COMPONENT_NAME) |
| // GIVEN a ill formed locale string. |
| .putExtras(getTestTimeTimeZoneAndLocaleExtras(TEST_ILL_FORMED_LOCALE)) |
| .putExtras(getTestWifiInfoExtras()) |
| .putExtras(getTestDeviceAdminDownloadExtras()) |
| .putExtra(EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE, createTestAdminExtras()) |
| .putExtra(EXTRA_PROVISIONING_SKIP_ENCRYPTION, TEST_SKIP_ENCRYPTION) |
| .putExtra(EXTRA_PROVISIONING_MAIN_COLOR, TEST_MAIN_COLOR) |
| .putExtra(EXTRA_PROVISIONING_ACCOUNT_TO_MIGRATE, TEST_ACCOUNT_TO_MIGRATE); |
| |
| try { |
| // WHEN the intent is parsed by the parser. |
| ProvisioningParams params = mExtrasProvisioningDataParser.parse(intent); |
| fail("ExtrasProvisioningDataParser parsing an ill formed locale string. " |
| + "IllegalProvisioningArgumentException should be thrown"); |
| } catch (IllegalProvisioningArgumentException e) { |
| // THEN IllegalProvisioningArgumentException is thrown. |
| } |
| } |
| |
| public void testSetUseMobileData_forManagedProfile_alwaysFalse() throws Exception { |
| Intent intent = |
| buildTestManagedProfileIntent().putExtra(EXTRA_PROVISIONING_USE_MOBILE_DATA, true); |
| mockInstalledDeviceAdminForTestPackageName(); |
| |
| assertThat(mExtrasProvisioningDataParser.parse(intent).useMobileData).isFalse(); |
| } |
| |
| public void testSetUseMobileData_fromTrustedSource_toFalse() throws Exception { |
| Intent intent = |
| buildTestTrustedSourceIntent().putExtra(EXTRA_PROVISIONING_USE_MOBILE_DATA, true); |
| mockInstalledDeviceAdminForTestPackageName(); |
| |
| assertThat(mExtrasProvisioningDataParser.parse(intent).useMobileData).isTrue(); |
| } |
| |
| public void testSetUseMobileData_fromTrustedSource_toTrue() throws Exception { |
| Intent intent = |
| buildTestTrustedSourceIntent().putExtra(EXTRA_PROVISIONING_USE_MOBILE_DATA, true); |
| mockInstalledDeviceAdminForTestPackageName(); |
| |
| assertThat(mExtrasProvisioningDataParser.parse(intent).useMobileData).isTrue(); |
| } |
| |
| public void testSetUseMobileData_fromTrustedSource_defaultsToFalse() throws Exception { |
| Intent intent = buildTestTrustedSourceIntent(); |
| intent.removeExtra(EXTRA_PROVISIONING_USE_MOBILE_DATA); |
| mockInstalledDeviceAdminForTestPackageName(); |
| |
| assertThat(mExtrasProvisioningDataParser.parse(intent).useMobileData).isFalse(); |
| } |
| |
| public void testParse_WifiInfoWithCertificates() throws Exception { |
| Intent intent = new Intent(ACTION_PROVISION_MANAGED_DEVICE_FROM_TRUSTED_SOURCE) |
| .putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME, TEST_COMPONENT_NAME) |
| .putExtra(EXTRA_PROVISIONING_WIFI_SSID, TEST_SSID) |
| .putExtra(EXTRA_PROVISIONING_WIFI_HIDDEN, TEST_HIDDEN) |
| .putExtra(EXTRA_PROVISIONING_WIFI_SECURITY_TYPE, TEST_SECURITY_TYPE_EAP) |
| .putExtra(EXTRA_PROVISIONING_WIFI_PASSWORD, TEST_PASSWORD) |
| .putExtra(EXTRA_PROVISIONING_WIFI_EAP_METHOD, TEST_EAP_METHOD) |
| .putExtra(EXTRA_PROVISIONING_WIFI_PHASE2_AUTH, TEST_PHASE2_AUTH) |
| .putExtra(EXTRA_PROVISIONING_WIFI_CA_CERTIFICATE, TEST_CA_CERT) |
| .putExtra(EXTRA_PROVISIONING_WIFI_USER_CERTIFICATE, TEST_USER_CERT) |
| .putExtra(EXTRA_PROVISIONING_WIFI_IDENTITY, TEST_IDENTITY) |
| .putExtra(EXTRA_PROVISIONING_WIFI_ANONYMOUS_IDENTITY, TEST_ANONYMOUS_IDENTITY) |
| .putExtra(EXTRA_PROVISIONING_WIFI_DOMAIN, TEST_DOMAIN) |
| .putExtra(EXTRA_PROVISIONING_WIFI_PROXY_HOST, TEST_PROXY_HOST) |
| .putExtra(EXTRA_PROVISIONING_WIFI_PROXY_PORT, TEST_PROXY_PORT) |
| .putExtra(EXTRA_PROVISIONING_WIFI_PROXY_BYPASS, TEST_PROXY_BYPASS_HOSTS) |
| .putExtra(EXTRA_PROVISIONING_WIFI_PAC_URL, TEST_PAC_URL); |
| |
| ProvisioningParams params = mExtrasProvisioningDataParser.parse(intent); |
| |
| assertThat(params).isEqualTo(createTestProvisioningParamsBuilder() |
| .setProvisioningAction(ACTION_PROVISION_MANAGED_DEVICE) |
| .setStartedByTrustedSource(true) |
| .setDeviceAdminComponentName(TEST_COMPONENT_NAME) |
| .setWifiInfo(WifiInfo.Builder.builder() |
| .setSsid(TEST_SSID) |
| .setHidden(TEST_HIDDEN) |
| .setSecurityType(TEST_SECURITY_TYPE_EAP) |
| .setPassword(TEST_PASSWORD) |
| .setEapMethod(TEST_EAP_METHOD) |
| .setPhase2Auth(TEST_PHASE2_AUTH) |
| .setCaCertificate(TEST_CA_CERT) |
| .setUserCertificate(TEST_USER_CERT) |
| .setIdentity(TEST_IDENTITY) |
| .setAnonymousIdentity(TEST_ANONYMOUS_IDENTITY) |
| .setDomain(TEST_DOMAIN) |
| .setProxyHost(TEST_PROXY_HOST) |
| .setProxyPort(TEST_PROXY_PORT) |
| .setProxyBypassHosts(TEST_PROXY_BYPASS_HOSTS) |
| .setPacUrl(TEST_PAC_URL) |
| .build()) |
| .build()); |
| } |
| |
| public void testShortNamesOfExtrasAreUnique() { |
| assertEquals(buildAllShortExtras().distinct().count(), buildAllShortExtras().count()); |
| } |
| |
| private Stream<Field> buildAllShortExtras() { |
| Field[] fields = ExtrasProvisioningDataParser.class.getDeclaredFields(); |
| return Arrays.stream(fields) |
| .filter(field -> field.getName().startsWith("EXTRA_") |
| && field.getName().endsWith("_SHORT")); |
| } |
| |
| private ProvisioningParams.Builder createTestProvisioningParamsBuilder() { |
| return ProvisioningParams.Builder.builder().setProvisioningId(TEST_PROVISIONING_ID); |
| } |
| |
| private Intent buildIntentWithAllShortExtras() { |
| Bundle bundleShort = new Bundle(); |
| bundleShort.putString( |
| EXTRA_PROVISIONING_DISCLAIMER_HEADER_SHORT, TEST_DISCLAMER_HEADER); |
| bundleShort.putParcelable(EXTRA_PROVISIONING_DISCLAIMER_CONTENT_SHORT, TEST_URI); |
| Parcelable[] parcelablesShort = {bundleShort}; |
| return new Intent(ACTION_PROVISION_MANAGED_DEVICE) |
| .putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME_SHORT, |
| TEST_PACKAGE_NAME) |
| .putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME_SHORT, |
| TEST_COMPONENT_NAME) |
| .putExtras(getShortTestTimeTimeZoneAndLocaleExtras()) |
| .putExtras(getAllShortTestWifiInfoExtras()) |
| .putExtras(getShortTestDeviceAdminDownloadExtras()) |
| .putExtra(EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE_SHORT, |
| createTestAdminExtras()) |
| .putExtra(EXTRA_PROVISIONING_SKIP_ENCRYPTION_SHORT, TEST_SKIP_ENCRYPTION) |
| .putExtra(EXTRA_PROVISIONING_LEAVE_ALL_SYSTEM_APPS_ENABLED_SHORT, |
| TEST_LEAVE_ALL_SYSTEM_APP_ENABLED) |
| .putExtra(EXTRA_PROVISIONING_MAIN_COLOR_SHORT, TEST_MAIN_COLOR) |
| .putExtra(EXTRA_PROVISIONING_ACCOUNT_TO_MIGRATE_SHORT, TEST_ACCOUNT_TO_MIGRATE) |
| .putExtra(EXTRA_PROVISIONING_KEEP_ACCOUNT_ON_MIGRATION_SHORT, |
| TEST_KEEP_ACCOUNT_MIGRATED) |
| .putExtra(EXTRA_PROVISIONING_ORGANIZATION_NAME_SHORT, |
| TEST_ORGANIZATION_NAME) |
| .putExtra(EXTRA_PROVISIONING_SUPPORT_URL_SHORT, TEST_SUPPORT_URL) |
| .putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_LABEL_SHORT, |
| TEST_DEVICE_ADMIN_PACKAGE_LABEL) |
| .putExtra(EXTRA_PROVISIONING_SKIP_USER_CONSENT_SHORT, |
| TEST_SKIP_USER_CONSENT) |
| .putExtra(EXTRA_PROVISIONING_USE_MOBILE_DATA_SHORT, |
| TEST_USE_MOBILE_DATA) |
| .putExtra(EXTRA_PROVISIONING_SKIP_USER_SETUP_SHORT, |
| ExtrasProvisioningDataParserTest.TEST_SKIP_USER_SETUP) |
| .putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_ICON_URI_SHORT, TEST_URI) |
| .putExtra(EXTRA_PROVISIONING_LOGO_URI_SHORT, TEST_URI) |
| .putExtra(EXTRA_PROVISIONING_DISCLAIMERS_SHORT, parcelablesShort); |
| } |
| |
| private Intent buildIntentWithAllLongExtras() { |
| Bundle bundleLong = new Bundle(); |
| bundleLong.putString(EXTRA_PROVISIONING_DISCLAIMER_HEADER, TEST_DISCLAMER_HEADER); |
| bundleLong.putParcelable(EXTRA_PROVISIONING_DISCLAIMER_CONTENT, TEST_URI); |
| Parcelable[] parcelablesLong = {bundleLong}; |
| return new Intent(ACTION_PROVISION_MANAGED_DEVICE) |
| .putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME, TEST_PACKAGE_NAME) |
| .putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME, TEST_COMPONENT_NAME) |
| .putExtras(getTestTimeTimeZoneAndLocaleExtras()) |
| .putExtras(getAllTestWifiInfoExtras()) |
| .putExtras(getTestDeviceAdminDownloadExtras()) |
| .putExtra(EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE, createTestAdminExtras()) |
| .putExtra(EXTRA_PROVISIONING_SKIP_ENCRYPTION, TEST_SKIP_ENCRYPTION) |
| .putExtra(EXTRA_PROVISIONING_LEAVE_ALL_SYSTEM_APPS_ENABLED, |
| TEST_LEAVE_ALL_SYSTEM_APP_ENABLED) |
| .putExtra(EXTRA_PROVISIONING_MAIN_COLOR, TEST_MAIN_COLOR) |
| .putExtra(EXTRA_PROVISIONING_ACCOUNT_TO_MIGRATE, TEST_ACCOUNT_TO_MIGRATE) |
| .putExtra(EXTRA_PROVISIONING_KEEP_ACCOUNT_ON_MIGRATION, TEST_KEEP_ACCOUNT_MIGRATED) |
| .putExtra(EXTRA_PROVISIONING_ORGANIZATION_NAME, TEST_ORGANIZATION_NAME) |
| .putExtra(EXTRA_PROVISIONING_SUPPORT_URL, TEST_SUPPORT_URL) |
| .putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_LABEL, |
| TEST_DEVICE_ADMIN_PACKAGE_LABEL) |
| .putExtra(EXTRA_PROVISIONING_SKIP_USER_CONSENT, TEST_SKIP_USER_CONSENT) |
| .putExtra(EXTRA_PROVISIONING_USE_MOBILE_DATA, TEST_USE_MOBILE_DATA) |
| .putExtra(EXTRA_PROVISIONING_SKIP_USER_SETUP, |
| ExtrasProvisioningDataParserTest.TEST_SKIP_USER_SETUP) |
| .putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_ICON_URI, TEST_URI) |
| .putExtra(EXTRA_PROVISIONING_LOGO_URI, TEST_URI) |
| .putExtra(EXTRA_PROVISIONING_DISCLAIMERS, parcelablesLong); |
| } |
| |
| private static Intent buildTestManagedProfileIntent() { |
| return new Intent(ACTION_PROVISION_MANAGED_PROFILE) |
| .putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME, TEST_PACKAGE_NAME) |
| .putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME, TEST_COMPONENT_NAME) |
| .putExtras(getTestTimeTimeZoneAndLocaleExtras()) |
| .putExtras(getTestWifiInfoExtras()) |
| .putExtras(getTestDeviceAdminDownloadExtras()) |
| .putExtra(EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE, createTestAdminExtras()) |
| .putExtra(EXTRA_PROVISIONING_SKIP_ENCRYPTION, TEST_SKIP_ENCRYPTION) |
| .putExtra(EXTRA_PROVISIONING_MAIN_COLOR, TEST_MAIN_COLOR) |
| .putExtra(EXTRA_PROVISIONING_SKIP_USER_CONSENT, TEST_SKIP_USER_CONSENT) |
| .putExtra(EXTRA_PROVISIONING_KEEP_ACCOUNT_ON_MIGRATION, TEST_KEEP_ACCOUNT_MIGRATED) |
| .putExtra(EXTRA_PROVISIONING_LEAVE_ALL_SYSTEM_APPS_ENABLED, |
| TEST_LEAVE_ALL_SYSTEM_APP_ENABLED) |
| .putExtra(EXTRA_PROVISIONING_ACCOUNT_TO_MIGRATE, TEST_ACCOUNT_TO_MIGRATE); |
| } |
| |
| private static Intent buildTestTrustedSourceIntent() { |
| return new Intent(ACTION_PROVISION_MANAGED_DEVICE_FROM_TRUSTED_SOURCE) |
| .putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME, TEST_PACKAGE_NAME) |
| .putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME, TEST_COMPONENT_NAME) |
| .putExtras(getTestTimeTimeZoneAndLocaleExtras()) |
| .putExtras(getTestWifiInfoExtras()) |
| .putExtras(getTestDeviceAdminDownloadExtras()) |
| .putExtra(EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE, createTestAdminExtras()) |
| .putExtra(EXTRA_PROVISIONING_SKIP_ENCRYPTION, TEST_SKIP_ENCRYPTION) |
| .putExtra(EXTRA_PROVISIONING_SKIP_USER_CONSENT, TEST_SKIP_USER_CONSENT) |
| .putExtra(EXTRA_PROVISIONING_KEEP_ACCOUNT_ON_MIGRATION, TEST_KEEP_ACCOUNT_MIGRATED) |
| .putExtra(EXTRA_PROVISIONING_LEAVE_ALL_SYSTEM_APPS_ENABLED, |
| TEST_LEAVE_ALL_SYSTEM_APP_ENABLED) |
| .putExtra(EXTRA_PROVISIONING_MAIN_COLOR, TEST_MAIN_COLOR) |
| .putExtra(EXTRA_PROVISIONING_ACCOUNT_TO_MIGRATE, TEST_ACCOUNT_TO_MIGRATE) |
| .putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_LABEL, |
| TEST_DEVICE_ADMIN_PACKAGE_LABEL) |
| .putExtra(EXTRA_PROVISIONING_ORGANIZATION_NAME, TEST_ORGANIZATION_NAME) |
| .putExtra(EXTRA_PROVISIONING_SUPPORT_URL, TEST_SUPPORT_URL); |
| } |
| |
| private static Bundle getTestWifiInfoExtras() { |
| Bundle wifiInfoExtras = new Bundle(); |
| wifiInfoExtras.putString(EXTRA_PROVISIONING_WIFI_SSID, TEST_SSID); |
| wifiInfoExtras.putString(EXTRA_PROVISIONING_WIFI_SECURITY_TYPE, TEST_SECURITY_TYPE); |
| wifiInfoExtras.putString(EXTRA_PROVISIONING_WIFI_PASSWORD, TEST_PASSWORD); |
| wifiInfoExtras.putString(EXTRA_PROVISIONING_WIFI_PROXY_HOST, TEST_PROXY_HOST); |
| wifiInfoExtras.putString(EXTRA_PROVISIONING_WIFI_PROXY_BYPASS, TEST_PROXY_BYPASS_HOSTS); |
| wifiInfoExtras.putString(EXTRA_PROVISIONING_WIFI_PAC_URL, TEST_PAC_URL); |
| wifiInfoExtras.putInt(EXTRA_PROVISIONING_WIFI_PROXY_PORT, TEST_PROXY_PORT); |
| wifiInfoExtras.putBoolean(EXTRA_PROVISIONING_WIFI_HIDDEN, TEST_HIDDEN); |
| return wifiInfoExtras; |
| } |
| |
| private static Bundle getAllTestWifiInfoExtras() { |
| Bundle wifiInfoExtras = new Bundle(); |
| wifiInfoExtras.putString(EXTRA_PROVISIONING_WIFI_SSID, TEST_SSID); |
| wifiInfoExtras.putString(EXTRA_PROVISIONING_WIFI_SECURITY_TYPE, TEST_SECURITY_TYPE); |
| wifiInfoExtras.putString(EXTRA_PROVISIONING_WIFI_PASSWORD, TEST_PASSWORD); |
| wifiInfoExtras.putString(EXTRA_PROVISIONING_WIFI_EAP_METHOD, TEST_EAP_METHOD); |
| wifiInfoExtras.putString(EXTRA_PROVISIONING_WIFI_PHASE2_AUTH, TEST_PHASE2_AUTH); |
| wifiInfoExtras.putString(EXTRA_PROVISIONING_WIFI_CA_CERTIFICATE, TEST_CA_CERT); |
| wifiInfoExtras.putString(EXTRA_PROVISIONING_WIFI_USER_CERTIFICATE, TEST_USER_CERT); |
| wifiInfoExtras.putString(EXTRA_PROVISIONING_WIFI_IDENTITY, TEST_IDENTITY); |
| wifiInfoExtras.putString( |
| EXTRA_PROVISIONING_WIFI_ANONYMOUS_IDENTITY, TEST_ANONYMOUS_IDENTITY); |
| wifiInfoExtras.putString(EXTRA_PROVISIONING_WIFI_DOMAIN, TEST_DOMAIN); |
| wifiInfoExtras.putString(EXTRA_PROVISIONING_WIFI_PROXY_HOST, TEST_PROXY_HOST); |
| wifiInfoExtras.putString(EXTRA_PROVISIONING_WIFI_PROXY_BYPASS, TEST_PROXY_BYPASS_HOSTS); |
| wifiInfoExtras.putString(EXTRA_PROVISIONING_WIFI_PAC_URL, TEST_PAC_URL); |
| wifiInfoExtras.putInt(EXTRA_PROVISIONING_WIFI_PROXY_PORT, TEST_PROXY_PORT); |
| wifiInfoExtras.putBoolean(EXTRA_PROVISIONING_WIFI_HIDDEN, TEST_HIDDEN); |
| return wifiInfoExtras; |
| } |
| |
| private static Bundle getAllShortTestWifiInfoExtras() { |
| Bundle wifiInfoExtras = new Bundle(); |
| wifiInfoExtras.putString(EXTRA_PROVISIONING_WIFI_SSID_SHORT, TEST_SSID); |
| wifiInfoExtras.putString( |
| EXTRA_PROVISIONING_WIFI_SECURITY_TYPE_SHORT, TEST_SECURITY_TYPE); |
| wifiInfoExtras.putString(EXTRA_PROVISIONING_WIFI_PASSWORD_SHORT, TEST_PASSWORD); |
| wifiInfoExtras.putString(EXTRA_PROVISIONING_WIFI_EAP_METHOD_SHORT, TEST_EAP_METHOD); |
| wifiInfoExtras.putString(EXTRA_PROVISIONING_WIFI_PHASE2_AUTH_SHORT, TEST_PHASE2_AUTH); |
| wifiInfoExtras.putString(EXTRA_PROVISIONING_WIFI_CA_CERTIFICATE_SHORT, TEST_CA_CERT); |
| wifiInfoExtras.putString(EXTRA_PROVISIONING_WIFI_USER_CERTIFICATE_SHORT, TEST_USER_CERT); |
| wifiInfoExtras.putString(EXTRA_PROVISIONING_WIFI_IDENTITY_SHORT, TEST_IDENTITY); |
| wifiInfoExtras.putString( |
| EXTRA_PROVISIONING_WIFI_ANONYMOUS_IDENTITY_SHORT, TEST_ANONYMOUS_IDENTITY); |
| wifiInfoExtras.putString(EXTRA_PROVISIONING_WIFI_DOMAIN_SHORT, TEST_DOMAIN); |
| wifiInfoExtras.putString(EXTRA_PROVISIONING_WIFI_PROXY_HOST_SHORT, TEST_PROXY_HOST); |
| wifiInfoExtras.putString( |
| EXTRA_PROVISIONING_WIFI_PROXY_BYPASS_SHORT, TEST_PROXY_BYPASS_HOSTS); |
| wifiInfoExtras.putString(EXTRA_PROVISIONING_WIFI_PAC_URL_SHORT, TEST_PAC_URL); |
| wifiInfoExtras.putInt(EXTRA_PROVISIONING_WIFI_PROXY_PORT_SHORT, TEST_PROXY_PORT); |
| wifiInfoExtras.putBoolean(EXTRA_PROVISIONING_WIFI_HIDDEN_SHORT, TEST_HIDDEN); |
| return wifiInfoExtras; |
| } |
| |
| private void mockInstalledDeviceAdminForTestPackageName() |
| throws IllegalProvisioningArgumentException { |
| mockInstalledDeviceAdmin(TEST_PACKAGE_NAME); |
| } |
| |
| private void mockInstalledDeviceAdminForNullPackageName() |
| throws IllegalProvisioningArgumentException { |
| mockInstalledDeviceAdmin(null); |
| } |
| |
| private void mockInstalledDeviceAdmin(String packageName) |
| throws IllegalProvisioningArgumentException { |
| doReturn(TEST_COMPONENT_NAME) |
| .when(mUtils) |
| .findDeviceAdmin(packageName, TEST_COMPONENT_NAME, mContext, UserHandle.myUserId()); |
| } |
| |
| private static String buildTestLocaleString() { |
| return StoreUtils.localeToString(TEST_LOCALE); |
| } |
| |
| private static Bundle getTestTimeTimeZoneAndLocaleExtras() { |
| return getTestTimeTimeZoneAndLocaleExtrasInternal(buildTestLocaleString()); |
| } |
| |
| private static Bundle getShortTestTimeTimeZoneAndLocaleExtras() { |
| return getShortTestTimeTimeZoneAndLocaleExtrasInternal(buildTestLocaleString()); |
| } |
| |
| private static Bundle getTestTimeTimeZoneAndLocaleExtras(String locale) { |
| return getTestTimeTimeZoneAndLocaleExtrasInternal(locale); |
| } |
| |
| private static Bundle getTestTimeTimeZoneAndLocaleExtrasInternal(String locale){ |
| Bundle timeTimezoneAndLocaleExtras = new Bundle(); |
| timeTimezoneAndLocaleExtras.putLong(EXTRA_PROVISIONING_LOCAL_TIME, TEST_LOCAL_TIME); |
| timeTimezoneAndLocaleExtras.putString(EXTRA_PROVISIONING_TIME_ZONE, TEST_TIME_ZONE); |
| timeTimezoneAndLocaleExtras.putString(EXTRA_PROVISIONING_LOCALE, locale); |
| return timeTimezoneAndLocaleExtras; |
| } |
| |
| private static Bundle getShortTestTimeTimeZoneAndLocaleExtrasInternal(String locale){ |
| Bundle timeTimezoneAndLocaleExtras = new Bundle(); |
| timeTimezoneAndLocaleExtras.putLong( |
| EXTRA_PROVISIONING_LOCAL_TIME_SHORT, TEST_LOCAL_TIME); |
| timeTimezoneAndLocaleExtras.putString( |
| EXTRA_PROVISIONING_TIME_ZONE_SHORT, TEST_TIME_ZONE); |
| timeTimezoneAndLocaleExtras.putString( |
| EXTRA_PROVISIONING_LOCALE_SHORT, locale); |
| return timeTimezoneAndLocaleExtras; |
| } |
| |
| private static Bundle getTestDeviceAdminDownloadExtras() { |
| Bundle downloadInfoExtras = new Bundle(); |
| downloadInfoExtras.putInt( |
| EXTRA_PROVISIONING_DEVICE_ADMIN_MINIMUM_VERSION_CODE, TEST_MIN_SUPPORT_VERSION); |
| downloadInfoExtras.putString( |
| EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION, TEST_DOWNLOAD_LOCATION); |
| downloadInfoExtras.putString( |
| EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_COOKIE_HEADER, TEST_COOKIE_HEADER); |
| downloadInfoExtras.putString( |
| EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM, |
| buildTestPackageChecksum()); |
| downloadInfoExtras.putString( |
| EXTRA_PROVISIONING_DEVICE_ADMIN_SIGNATURE_CHECKSUM, |
| buildTestSignatureChecksum()); |
| return downloadInfoExtras; |
| } |
| |
| private static String buildTestPackageChecksum() { |
| return Base64.encodeToString(TEST_PACKAGE_CHECKSUM, |
| Base64.URL_SAFE | Base64.NO_PADDING | Base64.NO_WRAP); |
| } |
| |
| private static Bundle getShortTestDeviceAdminDownloadExtras() { |
| Bundle downloadInfoExtras = new Bundle(); |
| downloadInfoExtras.putInt( |
| EXTRA_PROVISIONING_DEVICE_ADMIN_MINIMUM_VERSION_CODE_SHORT, |
| TEST_MIN_SUPPORT_VERSION); |
| downloadInfoExtras.putString( |
| EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION_SHORT, |
| TEST_DOWNLOAD_LOCATION); |
| downloadInfoExtras.putString( |
| EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_COOKIE_HEADER_SHORT, |
| TEST_COOKIE_HEADER); |
| downloadInfoExtras.putString( |
| EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM_SHORT, |
| buildTestPackageChecksum()); |
| downloadInfoExtras.putString( |
| EXTRA_PROVISIONING_DEVICE_ADMIN_SIGNATURE_CHECKSUM_SHORT, |
| buildTestSignatureChecksum()); |
| return downloadInfoExtras; |
| } |
| |
| private static String buildTestSignatureChecksum() { |
| return Base64.encodeToString(TEST_SIGNATURE_CHECKSUM, |
| Base64.URL_SAFE | Base64.NO_PADDING | Base64.NO_WRAP); |
| } |
| } |