147394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler/* 247394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler * Copyright (C) 2017 The Android Open Source Project 347394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler * 447394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler * Licensed under the Apache License, Version 2.0 (the "License"); 547394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler * you may not use this file except in compliance with the License. 647394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler * You may obtain a copy of the License at 747394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler * 847394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler * http://www.apache.org/licenses/LICENSE-2.0 947394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler * 1047394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler * Unless required by applicable law or agreed to in writing, software 1147394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler * distributed under the License is distributed on an "AS IS" BASIS, 1247394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1347394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler * See the License for the specific language governing permissions and 1447394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler * limitations under the License. 1547394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler */ 1647394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler 1747394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantlerpackage com.android.settingslib.applications; 1847394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler 1947394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantlerimport static com.google.common.truth.Truth.assertThat; 2047394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantlerimport static org.mockito.ArgumentMatchers.anyList; 2147394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantlerimport static org.mockito.Mockito.mock; 2247394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantlerimport static org.mockito.Mockito.times; 2347394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantlerimport static org.mockito.Mockito.verify; 2447394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler 2547394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantlerimport android.content.ComponentName; 2647394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantlerimport android.provider.Settings; 2747394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler 2847394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantlerimport com.android.settingslib.SettingsLibRobolectricTestRunner; 2947394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler 3047394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantlerimport org.junit.Before; 3147394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantlerimport org.junit.Test; 3247394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantlerimport org.junit.runner.RunWith; 3347394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantlerimport org.robolectric.RuntimeEnvironment; 3447394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler 3547394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler@RunWith(SettingsLibRobolectricTestRunner.class) 3647394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantlerpublic class ServiceListingTest { 3747394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler 3847394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler private static final String TEST_SETTING = "testSetting"; 3947394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler private static final String TEST_INTENT = "com.example.intent"; 4047394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler 4147394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler private ServiceListing mServiceListing; 4247394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler 4347394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler @Before 4447394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler public void setUp() { 4547394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler mServiceListing = new ServiceListing.Builder(RuntimeEnvironment.application) 4647394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler .setTag("testTag") 4747394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler .setSetting(TEST_SETTING) 4847394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler .setNoun("testNoun") 4947394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler .setIntentAction(TEST_INTENT) 5047394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler .setPermission("testPermission") 5147394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler .build(); 5247394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler } 5347394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler 5447394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler @Test 5547394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler public void testCallback() { 5647394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler ServiceListing.Callback callback = mock(ServiceListing.Callback.class); 5747394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler mServiceListing.addCallback(callback); 5847394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler mServiceListing.reload(); 5947394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler verify(callback, times(1)).onServicesReloaded(anyList()); 6047394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler mServiceListing.removeCallback(callback); 6147394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler mServiceListing.reload(); 6247394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler verify(callback, times(1)).onServicesReloaded(anyList()); 6347394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler } 6447394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler 6547394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler @Test 6647394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler public void testSaveLoad() { 6747394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler ComponentName testComponent1 = new ComponentName("testPackage1", "testClass1"); 6847394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler ComponentName testComponent2 = new ComponentName("testPackage2", "testClass2"); 6947394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler Settings.Secure.putString(RuntimeEnvironment.application.getContentResolver(), 7047394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler TEST_SETTING, 7147394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler testComponent1.flattenToString() + ":" + testComponent2.flattenToString()); 7247394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler 7347394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler mServiceListing.reload(); 7447394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler 7547394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler assertThat(mServiceListing.isEnabled(testComponent1)).isTrue(); 7647394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler assertThat(mServiceListing.isEnabled(testComponent2)).isTrue(); 7747394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler assertThat(Settings.Secure.getString(RuntimeEnvironment.application.getContentResolver(), 7847394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler TEST_SETTING)).contains(testComponent1.flattenToString()); 7947394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler assertThat(Settings.Secure.getString(RuntimeEnvironment.application.getContentResolver(), 8047394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler TEST_SETTING)).contains(testComponent2.flattenToString()); 8147394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler 8247394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler mServiceListing.setEnabled(testComponent1, false); 8347394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler 8447394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler assertThat(mServiceListing.isEnabled(testComponent1)).isFalse(); 8547394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler assertThat(mServiceListing.isEnabled(testComponent2)).isTrue(); 8647394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler assertThat(Settings.Secure.getString(RuntimeEnvironment.application.getContentResolver(), 8747394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler TEST_SETTING)).doesNotContain(testComponent1.flattenToString()); 8847394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler assertThat(Settings.Secure.getString(RuntimeEnvironment.application.getContentResolver(), 8947394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler TEST_SETTING)).contains(testComponent2.flattenToString()); 9047394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler 9147394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler mServiceListing.setEnabled(testComponent1, true); 9247394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler 9347394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler assertThat(mServiceListing.isEnabled(testComponent1)).isTrue(); 9447394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler assertThat(mServiceListing.isEnabled(testComponent2)).isTrue(); 9547394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler assertThat(Settings.Secure.getString(RuntimeEnvironment.application.getContentResolver(), 9647394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler TEST_SETTING)).contains(testComponent1.flattenToString()); 9747394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler assertThat(Settings.Secure.getString(RuntimeEnvironment.application.getContentResolver(), 9847394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler TEST_SETTING)).contains(testComponent2.flattenToString()); 9947394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler } 10047394cdbb839de1da5065a1b8a661c68cc690db9Tony Mantler} 101