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 com.android.managedprovisioning.model.CustomizationParams.DEFAULT_STATUS_BAR_COLOR_ID; 22 23 import static org.hamcrest.MatcherAssert.assertThat; 24 import static org.hamcrest.Matchers.equalTo; 25 import static org.hamcrest.Matchers.nullValue; 26 import static org.mockito.ArgumentMatchers.any; 27 import static org.mockito.Mockito.when; 28 29 import android.content.ComponentName; 30 import android.content.Context; 31 import android.graphics.Color; 32 import android.support.test.InstrumentationRegistry; 33 import android.support.test.filters.SmallTest; 34 35 import com.android.managedprovisioning.common.Utils; 36 37 import org.junit.Before; 38 import org.junit.Test; 39 import org.junit.runner.RunWith; 40 import org.mockito.Mock; 41 import org.mockito.junit.MockitoJUnitRunner; 42 43 @SmallTest 44 @RunWith(MockitoJUnitRunner.class) 45 public class CustomizationParamsTest { 46 private static final Context mContext = InstrumentationRegistry.getTargetContext(); 47 private static final ComponentName COMPONENT_NAME = new ComponentName("org.test", "ATestDPC"); 48 private static final int SAMPLE_COLOR = Color.rgb(11, 22, 33); 49 private static final String SAMPLE_URL = "http://d.android.com"; 50 private static final String SAMPLE_ORG_NAME = "Organization Inc."; 51 private static final int DEFAULT_MAIN_COLOR = Color.rgb(99, 99, 99); 52 53 @Mock 54 private Utils mUtils; 55 56 @Before setup()57 public void setup() { 58 when(mUtils.getAccentColor(any())).thenReturn(DEFAULT_MAIN_COLOR); 59 } 60 61 @Test defaultColorManagedProfile()62 public void defaultColorManagedProfile() { 63 // given 64 ProvisioningParams params = createParams(ACTION_PROVISION_MANAGED_PROFILE, null, null, 65 null); 66 67 // when 68 CustomizationParams instance = createInstance(params); 69 70 // then 71 assertThat(instance.statusBarColor, equalTo(getColor(DEFAULT_STATUS_BAR_COLOR_ID))); 72 assertThat(instance.mainColor, equalTo(DEFAULT_MAIN_COLOR)); 73 } 74 75 @Test defaultColorDeviceOwner()76 public void defaultColorDeviceOwner() { 77 // given 78 ProvisioningParams params = createParams(ACTION_PROVISION_MANAGED_DEVICE, null, null, null); 79 80 // when 81 CustomizationParams instance = createInstance(params); 82 83 // then 84 assertThat(instance.statusBarColor, equalTo(getColor(DEFAULT_STATUS_BAR_COLOR_ID))); 85 assertThat(instance.mainColor, equalTo(DEFAULT_MAIN_COLOR)); 86 } 87 88 @Test respectsMainColor()89 public void respectsMainColor() { 90 // given 91 ProvisioningParams params = createParams(null, SAMPLE_COLOR, null, null); 92 93 // when 94 CustomizationParams instance = createInstance(params); 95 96 // then 97 assertThat(instance.statusBarColor, equalTo(SAMPLE_COLOR)); 98 assertThat(instance.mainColor, equalTo(SAMPLE_COLOR)); 99 } 100 101 @Test orgNameDefaultsToNull()102 public void orgNameDefaultsToNull() { 103 // given 104 ProvisioningParams params = createParams(null, null, null, null); 105 106 // when 107 CustomizationParams instance = createInstance(params); 108 109 // then 110 assertThat(instance.orgName, nullValue()); 111 } 112 113 @Test respectsOrgName()114 public void respectsOrgName() { 115 // given 116 ProvisioningParams params = createParams(null, null, null, SAMPLE_ORG_NAME); 117 118 // when 119 CustomizationParams instance = createInstance(params); 120 121 // then 122 assertThat(instance.orgName, equalTo(SAMPLE_ORG_NAME)); 123 } 124 125 @Test respectsUrl()126 public void respectsUrl() { 127 // given 128 ProvisioningParams params = createParams(null, null, SAMPLE_URL, null); 129 130 // when 131 CustomizationParams instance = createInstance(params); 132 133 // then 134 assertThat(instance.supportUrl, equalTo(SAMPLE_URL)); 135 } 136 137 @Test urlDefaultsToNull()138 public void urlDefaultsToNull() { 139 // given 140 ProvisioningParams params = createParams(null, null, null, null); 141 142 // when 143 CustomizationParams instance = createInstance(params); 144 145 // then 146 assertThat(instance.supportUrl, nullValue()); 147 } 148 149 @Test ignoresInvalidUrl()150 public void ignoresInvalidUrl() { 151 // given 152 ProvisioningParams params = createParams(null, null, "not a valid web url", null); 153 154 // when 155 CustomizationParams instance = createInstance(params); 156 157 // then 158 assertThat(instance.supportUrl, nullValue()); 159 } 160 createInstance(ProvisioningParams params)161 private CustomizationParams createInstance(ProvisioningParams params) { 162 return CustomizationParams.createInstance(params, mContext, mUtils); 163 } 164 createParams(String provisioningAction, Integer mainColor, String supportUrl, String orgName)165 private ProvisioningParams createParams(String provisioningAction, Integer mainColor, 166 String supportUrl, String orgName) { 167 ProvisioningParams.Builder builder = 168 new ProvisioningParams.Builder().setDeviceAdminComponentName(COMPONENT_NAME); 169 170 builder.setProvisioningAction(provisioningAction == null ? ACTION_PROVISION_MANAGED_DEVICE 171 : provisioningAction); 172 173 if (mainColor != null) { 174 builder.setMainColor(mainColor); 175 } 176 177 if (supportUrl != null) { 178 builder.setSupportUrl(supportUrl); 179 } 180 181 if (orgName != null) { 182 builder.setOrganizationName(orgName); 183 } 184 185 return builder.build(); 186 } 187 getColor(int colorId)188 private int getColor(int colorId) { 189 return mContext.getColor(colorId); 190 } 191 }