13cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak/* 23cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak * Copyright 2017, The Android Open Source Project 33cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak * 43cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak * Licensed under the Apache License, Version 2.0 (the "License"); 53cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak * you may not use this file except in compliance with the License. 63cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak * You may obtain a copy of the License at 73cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak * 83cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak * http://www.apache.org/licenses/LICENSE-2.0 93cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak * 103cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak * Unless required by applicable law or agreed to in writing, software 113cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak * distributed under the License is distributed on an "AS IS" BASIS, 123cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 133cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak * See the License for the specific language governing permissions and 143cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak * limitations under the License. 153cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak */ 163cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzakpackage com.android.managedprovisioning.model; 173cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak 183cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzakimport static android.app.admin.DevicePolicyManager.ACTION_PROVISION_MANAGED_DEVICE; 193cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzakimport static android.app.admin.DevicePolicyManager.ACTION_PROVISION_MANAGED_PROFILE; 203cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak 2176c9d6f39b203080117409b1548eea0aeb60ef47Tony Makimport static com.android.managedprovisioning.model.CustomizationParams.DEFAULT_STATUS_BAR_COLOR_ID; 223cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak 233cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzakimport static org.hamcrest.MatcherAssert.assertThat; 243cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzakimport static org.hamcrest.Matchers.equalTo; 253cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzakimport static org.hamcrest.Matchers.nullValue; 2676c9d6f39b203080117409b1548eea0aeb60ef47Tony Makimport static org.mockito.ArgumentMatchers.any; 2776c9d6f39b203080117409b1548eea0aeb60ef47Tony Makimport static org.mockito.Mockito.when; 283cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak 293cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzakimport android.content.ComponentName; 303cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzakimport android.content.Context; 313cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzakimport android.graphics.Color; 323cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzakimport android.support.test.InstrumentationRegistry; 333cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzakimport android.support.test.filters.SmallTest; 343cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak 353cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzakimport com.android.managedprovisioning.common.Utils; 363cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak 3776c9d6f39b203080117409b1548eea0aeb60ef47Tony Makimport org.junit.Before; 383cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzakimport org.junit.Test; 3976c9d6f39b203080117409b1548eea0aeb60ef47Tony Makimport org.junit.runner.RunWith; 4076c9d6f39b203080117409b1548eea0aeb60ef47Tony Makimport org.mockito.Mock; 4176c9d6f39b203080117409b1548eea0aeb60ef47Tony Makimport org.mockito.junit.MockitoJUnitRunner; 423cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak 433cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak@SmallTest 4476c9d6f39b203080117409b1548eea0aeb60ef47Tony Mak@RunWith(MockitoJUnitRunner.class) 453cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzakpublic class CustomizationParamsTest { 463cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak private static final Context mContext = InstrumentationRegistry.getTargetContext(); 473cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak private static final ComponentName COMPONENT_NAME = new ComponentName("org.test", "ATestDPC"); 483cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak private static final int SAMPLE_COLOR = Color.rgb(11, 22, 33); 493cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak private static final String SAMPLE_URL = "http://d.android.com"; 503cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak private static final String SAMPLE_ORG_NAME = "Organization Inc."; 5176c9d6f39b203080117409b1548eea0aeb60ef47Tony Mak private static final int DEFAULT_MAIN_COLOR = Color.rgb(99, 99, 99); 5276c9d6f39b203080117409b1548eea0aeb60ef47Tony Mak 5376c9d6f39b203080117409b1548eea0aeb60ef47Tony Mak @Mock 5476c9d6f39b203080117409b1548eea0aeb60ef47Tony Mak private Utils mUtils; 5576c9d6f39b203080117409b1548eea0aeb60ef47Tony Mak 5676c9d6f39b203080117409b1548eea0aeb60ef47Tony Mak @Before 5776c9d6f39b203080117409b1548eea0aeb60ef47Tony Mak public void setup() { 5876c9d6f39b203080117409b1548eea0aeb60ef47Tony Mak when(mUtils.getAccentColor(any())).thenReturn(DEFAULT_MAIN_COLOR); 5976c9d6f39b203080117409b1548eea0aeb60ef47Tony Mak } 603cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak 613cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak @Test 623cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak public void defaultColorManagedProfile() { 633cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak // given 643cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak ProvisioningParams params = createParams(ACTION_PROVISION_MANAGED_PROFILE, null, null, 653cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak null); 663cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak 673cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak // when 683cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak CustomizationParams instance = createInstance(params); 693cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak 703cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak // then 7176c9d6f39b203080117409b1548eea0aeb60ef47Tony Mak assertThat(instance.statusBarColor, equalTo(getColor(DEFAULT_STATUS_BAR_COLOR_ID))); 7276c9d6f39b203080117409b1548eea0aeb60ef47Tony Mak assertThat(instance.mainColor, equalTo(DEFAULT_MAIN_COLOR)); 733cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak } 743cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak 753cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak @Test 763cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak public void defaultColorDeviceOwner() { 773cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak // given 783cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak ProvisioningParams params = createParams(ACTION_PROVISION_MANAGED_DEVICE, null, null, null); 793cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak 803cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak // when 813cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak CustomizationParams instance = createInstance(params); 823cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak 833cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak // then 8476c9d6f39b203080117409b1548eea0aeb60ef47Tony Mak assertThat(instance.statusBarColor, equalTo(getColor(DEFAULT_STATUS_BAR_COLOR_ID))); 8576c9d6f39b203080117409b1548eea0aeb60ef47Tony Mak assertThat(instance.mainColor, equalTo(DEFAULT_MAIN_COLOR)); 863cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak } 873cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak 883cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak @Test 893cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak public void respectsMainColor() { 903cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak // given 913cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak ProvisioningParams params = createParams(null, SAMPLE_COLOR, null, null); 923cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak 933cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak // when 943cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak CustomizationParams instance = createInstance(params); 953cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak 963cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak // then 97b0e275f0511cfe10c698d6a260fcfdb194e7c810Jakub Gielzak assertThat(instance.statusBarColor, equalTo(SAMPLE_COLOR)); 9876c9d6f39b203080117409b1548eea0aeb60ef47Tony Mak assertThat(instance.mainColor, equalTo(SAMPLE_COLOR)); 993cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak } 1003cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak 1013cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak @Test 1023cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak public void orgNameDefaultsToNull() { 1033cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak // given 1043cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak ProvisioningParams params = createParams(null, null, null, null); 1053cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak 1063cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak // when 1073cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak CustomizationParams instance = createInstance(params); 1083cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak 1093cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak // then 1103cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak assertThat(instance.orgName, nullValue()); 1113cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak } 1123cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak 1133cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak @Test 1143cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak public void respectsOrgName() { 1153cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak // given 1163cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak ProvisioningParams params = createParams(null, null, null, SAMPLE_ORG_NAME); 1173cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak 1183cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak // when 1193cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak CustomizationParams instance = createInstance(params); 1203cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak 1213cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak // then 1223cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak assertThat(instance.orgName, equalTo(SAMPLE_ORG_NAME)); 1233cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak } 1243cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak 1253cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak @Test 1263cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak public void respectsUrl() { 1273cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak // given 1283cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak ProvisioningParams params = createParams(null, null, SAMPLE_URL, null); 1293cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak 1303cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak // when 1313cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak CustomizationParams instance = createInstance(params); 1323cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak 1333cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak // then 1343cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak assertThat(instance.supportUrl, equalTo(SAMPLE_URL)); 1353cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak } 1363cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak 1373cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak @Test 1383cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak public void urlDefaultsToNull() { 1393cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak // given 1403cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak ProvisioningParams params = createParams(null, null, null, null); 1413cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak 1423cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak // when 1433cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak CustomizationParams instance = createInstance(params); 1443cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak 1453cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak // then 1463cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak assertThat(instance.supportUrl, nullValue()); 1473cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak } 1483cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak 1493cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak @Test 1503cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak public void ignoresInvalidUrl() { 1513cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak // given 1523cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak ProvisioningParams params = createParams(null, null, "not a valid web url", null); 1533cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak 1543cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak // when 1553cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak CustomizationParams instance = createInstance(params); 1563cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak 1573cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak // then 1583cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak assertThat(instance.supportUrl, nullValue()); 1593cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak } 1603cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak 1613cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak private CustomizationParams createInstance(ProvisioningParams params) { 16276c9d6f39b203080117409b1548eea0aeb60ef47Tony Mak return CustomizationParams.createInstance(params, mContext, mUtils); 1633cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak } 1643cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak 1653cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak private ProvisioningParams createParams(String provisioningAction, Integer mainColor, 1663cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak String supportUrl, String orgName) { 1673cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak ProvisioningParams.Builder builder = 1683cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak new ProvisioningParams.Builder().setDeviceAdminComponentName(COMPONENT_NAME); 1693cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak 1703cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak builder.setProvisioningAction(provisioningAction == null ? ACTION_PROVISION_MANAGED_DEVICE 1713cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak : provisioningAction); 1723cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak 1733cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak if (mainColor != null) { 1743cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak builder.setMainColor(mainColor); 1753cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak } 1763cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak 1773cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak if (supportUrl != null) { 1783cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak builder.setSupportUrl(supportUrl); 1793cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak } 1803cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak 1813cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak if (orgName != null) { 1823cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak builder.setOrganizationName(orgName); 1833cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak } 1843cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak 1853cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak return builder.build(); 1863cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak } 1873cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak 18876c9d6f39b203080117409b1548eea0aeb60ef47Tony Mak private int getColor(int colorId) { 18976c9d6f39b203080117409b1548eea0aeb60ef47Tony Mak return mContext.getColor(colorId); 1903cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak } 1913cc3880a7d61101d439cf6c5fdd351e22fdc8f4fJakub Gielzak}