1 package com.android.settings.wifi; 2 3 import static com.google.common.truth.Truth.assertThat; 4 5 import static org.mockito.Mockito.doReturn; 6 import static org.mockito.Mockito.mock; 7 import static org.mockito.Mockito.spy; 8 import static org.mockito.Mockito.when; 9 10 import android.content.Context; 11 import android.net.ConnectivityManager; 12 import android.net.NetworkInfo; 13 14 import com.android.settings.testutils.XmlTestUtils; 15 16 import org.junit.Before; 17 import org.junit.Test; 18 import org.junit.runner.RunWith; 19 import org.robolectric.RobolectricTestRunner; 20 import org.robolectric.RuntimeEnvironment; 21 import org.robolectric.annotation.Config; 22 23 import java.util.List; 24 25 @RunWith(RobolectricTestRunner.class) 26 public class ConfigureWifiSettingsTest { 27 28 private Context mContext; 29 30 @Before setUp()31 public void setUp() { 32 mContext = spy(RuntimeEnvironment.application); 33 } 34 35 @Test testNonIndexableKeys_existInXmlLayout()36 public void testNonIndexableKeys_existInXmlLayout() { 37 final List<String> niks = 38 ConfigureWifiSettings.SEARCH_INDEX_DATA_PROVIDER.getNonIndexableKeys(mContext); 39 final int xmlId = new ConfigureWifiSettings().getPreferenceScreenResId(); 40 41 final List<String> keys = XmlTestUtils.getKeysFromPreferenceXml(mContext, xmlId); 42 43 assertThat(keys).containsAllIn(niks); 44 } 45 46 @Test 47 @Config(qualifiers = "mcc999") testNonIndexableKeys_ifPageDisabled_shouldNotIndexResource()48 public void testNonIndexableKeys_ifPageDisabled_shouldNotIndexResource() { 49 final List<String> niks = 50 ConfigureWifiSettings.SEARCH_INDEX_DATA_PROVIDER.getNonIndexableKeys(mContext); 51 final int xmlId = new ConfigureWifiSettings().getPreferenceScreenResId(); 52 53 final List<String> keys = XmlTestUtils.getKeysFromPreferenceXml(mContext, xmlId); 54 assertThat(keys).isNotNull(); 55 assertThat(niks).containsAllIn(keys); 56 } 57 58 @Test testNonIndexableKeys_noConnection_blocksIP()59 public void testNonIndexableKeys_noConnection_blocksIP() { 60 ConnectivityManager manager = mock(ConnectivityManager.class); 61 when(manager.getActiveNetworkInfo()).thenReturn(null); 62 doReturn(manager).when(mContext).getSystemService(Context.CONNECTIVITY_SERVICE); 63 64 final List<String> niks = 65 ConfigureWifiSettings.SEARCH_INDEX_DATA_PROVIDER.getNonIndexableKeys(mContext); 66 assertThat(niks).contains(ConfigureWifiSettings.KEY_IP_ADDRESS); 67 } 68 69 @Test testNonIndexableKeys_wifiConnection_blocksIP()70 public void testNonIndexableKeys_wifiConnection_blocksIP() { 71 ConnectivityManager manager = mock(ConnectivityManager.class); 72 NetworkInfo info = mock(NetworkInfo.class); 73 when(info.getType()).thenReturn(ConnectivityManager.TYPE_WIFI); 74 when(manager.getActiveNetworkInfo()).thenReturn(info); 75 doReturn(manager).when(mContext).getSystemService(Context.CONNECTIVITY_SERVICE); 76 77 final List<String> niks = 78 ConfigureWifiSettings.SEARCH_INDEX_DATA_PROVIDER.getNonIndexableKeys(mContext); 79 assertThat(niks).contains(ConfigureWifiSettings.KEY_IP_ADDRESS); 80 } 81 82 @Test testNonIndexableKeys_mobileConnection_blocksIP()83 public void testNonIndexableKeys_mobileConnection_blocksIP() { 84 ConnectivityManager manager = mock(ConnectivityManager.class); 85 NetworkInfo info = mock(NetworkInfo.class); 86 when(info.getType()).thenReturn(ConnectivityManager.TYPE_MOBILE); 87 when(manager.getActiveNetworkInfo()).thenReturn(info); 88 doReturn(manager).when(mContext).getSystemService(Context.CONNECTIVITY_SERVICE); 89 90 final List<String> niks = 91 ConfigureWifiSettings.SEARCH_INDEX_DATA_PROVIDER.getNonIndexableKeys(mContext); 92 assertThat(niks).doesNotContain(ConfigureWifiSettings.KEY_IP_ADDRESS); 93 } 94 } 95