14b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritzepackage com.android.settings.wifi;
24b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritze
34b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritzeimport static com.google.common.truth.Truth.assertThat;
44b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritzeimport static org.mockito.Mockito.doReturn;
54b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritzeimport static org.mockito.Mockito.mock;
64b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritzeimport static org.mockito.Mockito.spy;
74b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritzeimport static org.mockito.Mockito.when;
84b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritze
94b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritzeimport android.content.Context;
104b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritzeimport android.net.ConnectivityManager;
114b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritzeimport android.net.NetworkInfo;
1222a39c2b93bc66db71238274a7683d329232d124James Lemieux
134b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritzeimport com.android.settings.testutils.SettingsRobolectricTestRunner;
144b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritzeimport com.android.settings.testutils.XmlTestUtils;
154b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritze
164b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritzeimport org.junit.Before;
174b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritzeimport org.junit.Test;
184b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritzeimport org.junit.runner.RunWith;
194b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritzeimport org.robolectric.RuntimeEnvironment;
204b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritzeimport org.robolectric.annotation.Config;
214b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritze
224b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritzeimport java.util.List;
234b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritze
244b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritze@RunWith(SettingsRobolectricTestRunner.class)
254b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritzepublic class ConfigureWifiSettingsTest {
264b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritze
274b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritze    private Context mContext;
284b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritze
294b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritze    @Before
304b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritze    public void setUp() {
314b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritze        mContext = spy(RuntimeEnvironment.application);
324b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritze    }
334b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritze
344b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritze    @Test
354b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritze    public void testNonIndexableKeys_existInXmlLayout() {
3622a39c2b93bc66db71238274a7683d329232d124James Lemieux        final List<String> niks =
3722a39c2b93bc66db71238274a7683d329232d124James Lemieux            ConfigureWifiSettings.SEARCH_INDEX_DATA_PROVIDER.getNonIndexableKeys(mContext);
384b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritze        final int xmlId = new ConfigureWifiSettings().getPreferenceScreenResId();
394b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritze
404b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritze        final List<String> keys = XmlTestUtils.getKeysFromPreferenceXml(mContext, xmlId);
414b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritze
424b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritze        assertThat(keys).containsAllIn(niks);
434b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritze    }
444b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritze
454b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritze    @Test
46848f67d17a2a452da8549ab787e4419b927e5698Ben Lin    @Config(qualifiers = "mcc999")
47848f67d17a2a452da8549ab787e4419b927e5698Ben Lin    public void testNonIndexableKeys_ifPageDisabled_shouldNotIndexResource() {
4822a39c2b93bc66db71238274a7683d329232d124James Lemieux        final List<String> niks =
4922a39c2b93bc66db71238274a7683d329232d124James Lemieux            ConfigureWifiSettings.SEARCH_INDEX_DATA_PROVIDER.getNonIndexableKeys(mContext);
50848f67d17a2a452da8549ab787e4419b927e5698Ben Lin        final int xmlId = new ConfigureWifiSettings().getPreferenceScreenResId();
51848f67d17a2a452da8549ab787e4419b927e5698Ben Lin
52848f67d17a2a452da8549ab787e4419b927e5698Ben Lin        final List<String> keys = XmlTestUtils.getKeysFromPreferenceXml(mContext, xmlId);
5322a39c2b93bc66db71238274a7683d329232d124James Lemieux        assertThat(keys).isNotNull();
54848f67d17a2a452da8549ab787e4419b927e5698Ben Lin        assertThat(niks).containsAllIn(keys);
55848f67d17a2a452da8549ab787e4419b927e5698Ben Lin    }
56848f67d17a2a452da8549ab787e4419b927e5698Ben Lin
57848f67d17a2a452da8549ab787e4419b927e5698Ben Lin    @Test
584b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritze    public void testNonIndexableKeys_noConnection_blocksIP() {
594b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritze        ConnectivityManager manager = mock(ConnectivityManager.class);
604b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritze        when(manager.getActiveNetworkInfo()).thenReturn(null);
614b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritze        doReturn(manager).when(mContext).getSystemService(Context.CONNECTIVITY_SERVICE);
624b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritze
6322a39c2b93bc66db71238274a7683d329232d124James Lemieux        final List<String> niks =
6422a39c2b93bc66db71238274a7683d329232d124James Lemieux            ConfigureWifiSettings.SEARCH_INDEX_DATA_PROVIDER.getNonIndexableKeys(mContext);
654b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritze        assertThat(niks).contains(ConfigureWifiSettings.KEY_IP_ADDRESS);
664b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritze    }
674b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritze
684b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritze    @Test
694b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritze    public void testNonIndexableKeys_wifiConnection_blocksIP() {
704b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritze        ConnectivityManager manager = mock(ConnectivityManager.class);
714b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritze        NetworkInfo info = mock(NetworkInfo.class);
724b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritze        when(info.getType()).thenReturn(ConnectivityManager.TYPE_WIFI);
734b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritze        when(manager.getActiveNetworkInfo()).thenReturn(info);
744b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritze        doReturn(manager).when(mContext).getSystemService(Context.CONNECTIVITY_SERVICE);
754b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritze
7622a39c2b93bc66db71238274a7683d329232d124James Lemieux        final List<String> niks =
7722a39c2b93bc66db71238274a7683d329232d124James Lemieux            ConfigureWifiSettings.SEARCH_INDEX_DATA_PROVIDER.getNonIndexableKeys(mContext);
784b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritze        assertThat(niks).contains(ConfigureWifiSettings.KEY_IP_ADDRESS);
794b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritze    }
804b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritze
814b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritze    @Test
824b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritze    public void testNonIndexableKeys_mobileConnection_blocksIP() {
834b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritze        ConnectivityManager manager = mock(ConnectivityManager.class);
844b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritze        NetworkInfo info = mock(NetworkInfo.class);
854b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritze        when(info.getType()).thenReturn(ConnectivityManager.TYPE_MOBILE);
864b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritze        when(manager.getActiveNetworkInfo()).thenReturn(info);
874b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritze        doReturn(manager).when(mContext).getSystemService(Context.CONNECTIVITY_SERVICE);
884b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritze
8922a39c2b93bc66db71238274a7683d329232d124James Lemieux        final List<String> niks =
9022a39c2b93bc66db71238274a7683d329232d124James Lemieux            ConfigureWifiSettings.SEARCH_INDEX_DATA_PROVIDER.getNonIndexableKeys(mContext);
914b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritze        assertThat(niks).doesNotContain(ConfigureWifiSettings.KEY_IP_ADDRESS);
924b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritze    }
934b0677a2a45e2542b44e906c91e4bf57ed00f44eMatthew Fritze}
94