1ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski/* 2ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski * Copyright (C) 2017 The Android Open Source Project 3ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski * 4ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski * Licensed under the Apache License, Version 2.0 (the "License"); 5ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski * you may not use this file except in compliance with the License. 6ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski * You may obtain a copy of the License at 7ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski * 8ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski * http://www.apache.org/licenses/LICENSE-2.0 9ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski * 10ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski * Unless required by applicable law or agreed to in writing, software 11ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski * distributed under the License is distributed on an "AS IS" BASIS, 12ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski * See the License for the specific language governing permissions and 14ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski * limitations under the License. 15ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski */ 16ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski 17ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowskipackage com.android.settings.enterprise; 18ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski 19ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowskiimport android.content.Context; 20ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowskiimport android.content.res.Resources; 21ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowskiimport android.support.v7.preference.Preference; 22ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski 23ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowskiimport com.android.settings.R; 24ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowskiimport com.android.settings.SettingsRobolectricTestRunner; 25ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowskiimport com.android.settings.TestConfig; 26493495452a93c708c9181d5837a8351f4e0b07ebBartosz Fabianowskiimport com.android.settings.core.PreferenceAvailabilityObserver; 27ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowskiimport com.android.settings.testutils.FakeFeatureFactory; 28ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski 29ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowskiimport org.junit.Before; 30ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowskiimport org.junit.Test; 31ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowskiimport org.junit.runner.RunWith; 32ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowskiimport org.mockito.Answers; 33ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowskiimport org.mockito.Mock; 34ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowskiimport org.mockito.MockitoAnnotations; 35ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowskiimport org.robolectric.annotation.Config; 36ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski 37ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowskiimport static com.google.common.truth.Truth.assertThat; 38493495452a93c708c9181d5837a8351f4e0b07ebBartosz Fabianowskiimport static org.mockito.Mockito.verify; 39ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowskiimport static org.mockito.Mockito.when; 40ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski 41ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski/** 42ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski * Tests for {@link EnterprisePrivacyPreferenceController}. 43ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski */ 44ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski@RunWith(SettingsRobolectricTestRunner.class) 45ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) 46ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowskipublic final class EnterprisePrivacyPreferenceControllerTest { 47ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski 48493495452a93c708c9181d5837a8351f4e0b07ebBartosz Fabianowski private static final String MANAGED_GENERIC = "managed by organization"; 49493495452a93c708c9181d5837a8351f4e0b07ebBartosz Fabianowski private static final String MANAGED_WITH_NAME = "managed by Foo, Inc."; 50493495452a93c708c9181d5837a8351f4e0b07ebBartosz Fabianowski private static final String MANAGING_ORGANIZATION = "Foo, Inc."; 51493495452a93c708c9181d5837a8351f4e0b07ebBartosz Fabianowski private static final String KEY_ENTERPRISE_PRIVACY = "enterprise_privacy"; 52ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski 53ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski @Mock(answer = Answers.RETURNS_DEEP_STUBS) 54ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski private Context mContext; 55ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski private FakeFeatureFactory mFeatureFactory; 56493495452a93c708c9181d5837a8351f4e0b07ebBartosz Fabianowski @Mock private PreferenceAvailabilityObserver mObserver; 57ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski 58ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski private EnterprisePrivacyPreferenceController mController; 59ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski 60ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski @Before 61ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski public void setUp() { 62ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski MockitoAnnotations.initMocks(this); 63ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski FakeFeatureFactory.setupForTest(mContext); 64ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski mFeatureFactory = (FakeFeatureFactory) FakeFeatureFactory.getFactory(mContext); 65ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski mController = new EnterprisePrivacyPreferenceController(mContext, null /* lifecycle */); 66493495452a93c708c9181d5837a8351f4e0b07ebBartosz Fabianowski mController.setAvailabilityObserver(mObserver); 67493495452a93c708c9181d5837a8351f4e0b07ebBartosz Fabianowski } 68493495452a93c708c9181d5837a8351f4e0b07ebBartosz Fabianowski 69493495452a93c708c9181d5837a8351f4e0b07ebBartosz Fabianowski @Test 70493495452a93c708c9181d5837a8351f4e0b07ebBartosz Fabianowski public void testGetAvailabilityObserver() { 71493495452a93c708c9181d5837a8351f4e0b07ebBartosz Fabianowski assertThat(mController.getAvailabilityObserver()).isEqualTo(mObserver); 72ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski } 73ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski 74ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski @Test 75ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski public void testUpdateState() { 76ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski final Preference preference = new Preference(mContext, null, 0, 0); 77ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski 78ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski when(mContext.getString(R.string.enterprise_privacy_settings_summary_generic)) 79ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski .thenReturn(MANAGED_GENERIC); 80ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski when(mFeatureFactory.enterprisePrivacyFeatureProvider.getDeviceOwnerOrganizationName()) 81ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski .thenReturn(null); 82ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski mController.updateState(preference); 83ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski assertThat(preference.getSummary()).isEqualTo(MANAGED_GENERIC); 84ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski 85ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski when(mContext.getResources().getString( 86ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski R.string.enterprise_privacy_settings_summary_with_name, MANAGING_ORGANIZATION)) 87ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski .thenReturn(MANAGED_WITH_NAME); 88ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski when(mFeatureFactory.enterprisePrivacyFeatureProvider.getDeviceOwnerOrganizationName()) 89ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski .thenReturn(MANAGING_ORGANIZATION); 90ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski mController.updateState(preference); 91ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski assertThat(preference.getSummary()).isEqualTo(MANAGED_WITH_NAME); 92ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski } 93ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski 94ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski @Test 95ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski public void testIsAvailable() { 96ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski when(mFeatureFactory.enterprisePrivacyFeatureProvider.hasDeviceOwner()).thenReturn(false); 97ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski assertThat(mController.isAvailable()).isFalse(); 98493495452a93c708c9181d5837a8351f4e0b07ebBartosz Fabianowski verify(mObserver).onPreferenceAvailabilityUpdated(KEY_ENTERPRISE_PRIVACY, false); 99ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski 100ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski when(mFeatureFactory.enterprisePrivacyFeatureProvider.hasDeviceOwner()).thenReturn(true); 101ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski assertThat(mController.isAvailable()).isTrue(); 102493495452a93c708c9181d5837a8351f4e0b07ebBartosz Fabianowski verify(mObserver).onPreferenceAvailabilityUpdated(KEY_ENTERPRISE_PRIVACY, true); 103ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski } 104ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski 105ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski @Test 106ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski public void testHandlePreferenceTreeClick() { 107ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski assertThat(mController.handlePreferenceTreeClick(new Preference(mContext, null, 0, 0))) 108ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski .isFalse(); 109ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski } 110ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski 111ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski @Test 112ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski public void testGetPreferenceKey() { 113493495452a93c708c9181d5837a8351f4e0b07ebBartosz Fabianowski assertThat(mController.getPreferenceKey()).isEqualTo(KEY_ENTERPRISE_PRIVACY); 114ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski } 115ba66a0ef09a6bbeb6e7e2cfbef82f15b9b625bc8Bartosz Fabianowski} 116