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 import com.android.settings.TestConfig; 14 import com.android.settings.testutils.SettingsRobolectricTestRunner; 15 import com.android.settings.testutils.XmlTestUtils; 16 17 import org.junit.Before; 18 import org.junit.Test; 19 import org.junit.runner.RunWith; 20 import org.robolectric.RuntimeEnvironment; 21 import org.robolectric.annotation.Config; 22 23 import java.util.List; 24 25 @RunWith(SettingsRobolectricTestRunner.class) 26 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) 27 public class ConfigureWifiSettingsTest { 28 29 private Context mContext; 30 31 @Before 32 public void setUp() { 33 mContext = spy(RuntimeEnvironment.application); 34 } 35 36 @Test 37 public void testNonIndexableKeys_existInXmlLayout() { 38 final List<String> niks = ConfigureWifiSettings.SEARCH_INDEX_DATA_PROVIDER 39 .getNonIndexableKeys(mContext); 40 final int xmlId = new ConfigureWifiSettings().getPreferenceScreenResId(); 41 42 final List<String> keys = XmlTestUtils.getKeysFromPreferenceXml(mContext, xmlId); 43 44 assertThat(keys).containsAllIn(niks); 45 } 46 47 @Test 48 public void testNonIndexableKeys_noConnection_blocksIP() { 49 ConnectivityManager manager = mock(ConnectivityManager.class); 50 when(manager.getActiveNetworkInfo()).thenReturn(null); 51 doReturn(manager).when(mContext).getSystemService(Context.CONNECTIVITY_SERVICE); 52 53 final List<String> niks = ConfigureWifiSettings.SEARCH_INDEX_DATA_PROVIDER 54 .getNonIndexableKeys(mContext); 55 assertThat(niks).contains(ConfigureWifiSettings.KEY_IP_ADDRESS); 56 } 57 58 @Test 59 public void testNonIndexableKeys_wifiConnection_blocksIP() { 60 ConnectivityManager manager = mock(ConnectivityManager.class); 61 NetworkInfo info = mock(NetworkInfo.class); 62 when(info.getType()).thenReturn(ConnectivityManager.TYPE_WIFI); 63 when(manager.getActiveNetworkInfo()).thenReturn(info); 64 doReturn(manager).when(mContext).getSystemService(Context.CONNECTIVITY_SERVICE); 65 66 final List<String> niks = ConfigureWifiSettings.SEARCH_INDEX_DATA_PROVIDER 67 .getNonIndexableKeys(mContext); 68 assertThat(niks).contains(ConfigureWifiSettings.KEY_IP_ADDRESS); 69 } 70 71 @Test 72 public void testNonIndexableKeys_mobileConnection_blocksIP() { 73 ConnectivityManager manager = mock(ConnectivityManager.class); 74 NetworkInfo info = mock(NetworkInfo.class); 75 when(info.getType()).thenReturn(ConnectivityManager.TYPE_MOBILE); 76 when(manager.getActiveNetworkInfo()).thenReturn(info); 77 doReturn(manager).when(mContext).getSystemService(Context.CONNECTIVITY_SERVICE); 78 79 final List<String> niks = ConfigureWifiSettings.SEARCH_INDEX_DATA_PROVIDER 80 .getNonIndexableKeys(mContext); 81 assertThat(niks).doesNotContain(ConfigureWifiSettings.KEY_IP_ADDRESS); 82 } 83 } 84