1 /* 2 * Copyright 2017, The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 package com.android.managedprovisioning.model; 17 18 import static android.app.admin.DevicePolicyManager.ACTION_PROVISION_MANAGED_DEVICE; 19 import static android.app.admin.DevicePolicyManager.ACTION_PROVISION_MANAGED_PROFILE; 20 21 import static org.hamcrest.MatcherAssert.assertThat; 22 import static org.hamcrest.Matchers.equalTo; 23 import static org.hamcrest.Matchers.nullValue; 24 import static org.mockito.ArgumentMatchers.any; 25 import static org.mockito.Mockito.when; 26 27 import android.content.ComponentName; 28 import android.content.Context; 29 import android.graphics.Color; 30 31 import androidx.test.InstrumentationRegistry; 32 import androidx.test.filters.SmallTest; 33 34 import com.android.managedprovisioning.common.Utils; 35 36 import org.junit.Before; 37 import org.junit.Test; 38 import org.junit.runner.RunWith; 39 import org.mockito.Mock; 40 import org.mockito.junit.MockitoJUnitRunner; 41 42 @SmallTest 43 @RunWith(MockitoJUnitRunner.class) 44 public class CustomizationParamsTest { 45 private static final Context mContext = InstrumentationRegistry.getTargetContext(); 46 private static final ComponentName COMPONENT_NAME = new ComponentName("org.test", "ATestDPC"); 47 private static final String SAMPLE_URL = "http://d.android.com"; 48 private static final int DEFAULT_LOGO_COLOR = Color.rgb(99, 99, 99); 49 50 @Mock 51 private Utils mUtils; 52 53 @Before setup()54 public void setup() { 55 when(mUtils.getAccentColor(any())).thenReturn(DEFAULT_LOGO_COLOR); 56 } 57 58 @Test defaultColorManagedProfile()59 public void defaultColorManagedProfile() { 60 // given 61 ProvisioningParams params = createParams(ACTION_PROVISION_MANAGED_PROFILE, null, null); 62 63 // when 64 CustomizationParams instance = createInstance(params); 65 66 // then 67 assertThat(instance.logoColor, equalTo(DEFAULT_LOGO_COLOR)); 68 } 69 70 @Test defaultColorDeviceOwner()71 public void defaultColorDeviceOwner() { 72 // given 73 ProvisioningParams params = createParams(ACTION_PROVISION_MANAGED_DEVICE, null, null); 74 75 // when 76 CustomizationParams instance = createInstance(params); 77 78 // then 79 assertThat(instance.logoColor, equalTo(DEFAULT_LOGO_COLOR)); 80 } 81 82 @Test respectsUrl()83 public void respectsUrl() { 84 // given 85 ProvisioningParams params = createParams(null, SAMPLE_URL, null); 86 87 // when 88 CustomizationParams instance = createInstance(params); 89 90 // then 91 assertThat(instance.supportUrl, equalTo(SAMPLE_URL)); 92 } 93 94 @Test urlDefaultsToNull()95 public void urlDefaultsToNull() { 96 // given 97 ProvisioningParams params = createParams(null, null, null); 98 99 // when 100 CustomizationParams instance = createInstance(params); 101 102 // then 103 assertThat(instance.supportUrl, nullValue()); 104 } 105 106 @Test ignoresInvalidUrl()107 public void ignoresInvalidUrl() { 108 // given 109 ProvisioningParams params = createParams(null, "not a valid web url", null); 110 111 // when 112 CustomizationParams instance = createInstance(params); 113 114 // then 115 assertThat(instance.supportUrl, nullValue()); 116 } 117 createInstance(ProvisioningParams params)118 private CustomizationParams createInstance(ProvisioningParams params) { 119 return CustomizationParams.createInstance(params, mContext, mUtils); 120 } 121 createParams( String provisioningAction, String supportUrl, String orgName)122 private ProvisioningParams createParams( 123 String provisioningAction, String supportUrl, String orgName) { 124 ProvisioningParams.Builder builder = 125 new ProvisioningParams.Builder().setDeviceAdminComponentName(COMPONENT_NAME); 126 127 builder.setProvisioningAction(provisioningAction == null ? ACTION_PROVISION_MANAGED_DEVICE 128 : provisioningAction); 129 130 if (supportUrl != null) { 131 builder.setSupportUrl(supportUrl); 132 } 133 134 if (orgName != null) { 135 builder.setOrganizationName(orgName); 136 } 137 138 return builder.build(); 139 } 140 getColor(int colorId)141 private int getColor(int colorId) { 142 return mContext.getColor(colorId); 143 } 144 } 145