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