| package com.android.settings.wifi; |
| |
| import static com.android.settings.wifi.ConfigureWifiSettings.KEY_INSTALL_CREDENTIALS; |
| |
| import static com.google.common.truth.Truth.assertThat; |
| |
| import static org.mockito.Mockito.any; |
| import static org.mockito.Mockito.doReturn; |
| import static org.mockito.Mockito.mock; |
| import static org.mockito.Mockito.never; |
| import static org.mockito.Mockito.spy; |
| import static org.mockito.Mockito.verify; |
| import static org.mockito.Mockito.when; |
| |
| import android.annotation.Nullable; |
| import android.content.Context; |
| import android.net.wifi.WifiManager; |
| import android.os.Bundle; |
| import android.os.UserManager; |
| import android.view.View; |
| import android.widget.TextView; |
| |
| import androidx.fragment.app.FragmentActivity; |
| import androidx.preference.Preference; |
| import androidx.preference.PreferenceScreen; |
| import androidx.test.core.app.ApplicationProvider; |
| |
| import com.android.settings.dashboard.DashboardFragment; |
| import com.android.settings.testutils.XmlTestUtils; |
| import com.android.settingslib.core.AbstractPreferenceController; |
| |
| import org.junit.Before; |
| import org.junit.Rule; |
| import org.junit.Test; |
| import org.junit.runner.RunWith; |
| import org.mockito.Mock; |
| import org.mockito.Spy; |
| import org.mockito.junit.MockitoJUnit; |
| import org.mockito.junit.MockitoRule; |
| import org.robolectric.RobolectricTestRunner; |
| import org.robolectric.annotation.Config; |
| import org.robolectric.annotation.Implementation; |
| import org.robolectric.annotation.Implements; |
| |
| import java.util.List; |
| |
| @RunWith(RobolectricTestRunner.class) |
| @Config(shadows = { |
| com.android.settings.testutils.shadow.ShadowFragment.class, |
| }) |
| public class ConfigureWifiSettingsTest { |
| |
| @Rule |
| public final MockitoRule mMockitoRule = MockitoJUnit.rule(); |
| @Spy |
| Context mContext = ApplicationProvider.getApplicationContext(); |
| @Mock |
| UserManager mUserManager; |
| @Mock |
| WifiManager mWifiManager; |
| @Mock |
| FragmentActivity mActivity; |
| @Mock |
| WifiWakeupPreferenceController mWifiWakeupPreferenceController; |
| @Mock |
| Preference mInstallCredentialsPref; |
| @Mock |
| PreferenceScreen mPreferenceScreen; |
| @Mock |
| TextView mEmptyView; |
| |
| TestConfigureWifiSettings mSettings; |
| |
| @Before |
| public void setUp() { |
| when(mContext.getSystemService(UserManager.class)).thenReturn(mUserManager); |
| when(mUserManager.isGuestUser()).thenReturn(false); |
| when(mActivity.getSystemService(WifiManager.class)).thenReturn(mWifiManager); |
| |
| mSettings = spy(new TestConfigureWifiSettings()); |
| when(mSettings.getContext()).thenReturn(mContext); |
| when(mSettings.getActivity()).thenReturn(mActivity); |
| when(mSettings.use(WifiWakeupPreferenceController.class)) |
| .thenReturn(mWifiWakeupPreferenceController); |
| when(mSettings.findPreference(KEY_INSTALL_CREDENTIALS)).thenReturn(mInstallCredentialsPref); |
| } |
| |
| @Test |
| public void onAttach_isNotGuestUser_setupController() { |
| when(mUserManager.isGuestUser()).thenReturn(false); |
| |
| mSettings.onAttach(mContext); |
| |
| verify(mWifiWakeupPreferenceController).setFragment(any()); |
| } |
| |
| @Test |
| public void onAttach_isGuestUser_doNotSetupController() { |
| when(mUserManager.isGuestUser()).thenReturn(true); |
| |
| mSettings.onAttach(mContext); |
| |
| verify(mWifiWakeupPreferenceController, never()).setFragment(any()); |
| } |
| |
| @Test |
| @Config(shadows = ShadowDashboardFragment.class) |
| public void onCreate_isNotGuestUser_setupPreference() { |
| when(mUserManager.isGuestUser()).thenReturn(false); |
| |
| mSettings.onCreate(null); |
| |
| verify(mInstallCredentialsPref).setOnPreferenceClickListener(any()); |
| } |
| |
| @Test |
| @Config(shadows = ShadowDashboardFragment.class) |
| public void onCreate_isGuestUser_doNotSetupPreference() { |
| when(mUserManager.isGuestUser()).thenReturn(true); |
| |
| mSettings.onCreate(null); |
| |
| verify(mInstallCredentialsPref, never()).setOnPreferenceClickListener(any()); |
| } |
| |
| @Test |
| @Config(shadows = ShadowDashboardFragment.class) |
| public void onViewCreated_isNotGuestUser_doNotRestrictUi() { |
| when(mUserManager.isGuestUser()).thenReturn(false); |
| when(mActivity.findViewById(android.R.id.empty)).thenReturn(mEmptyView); |
| doReturn(mPreferenceScreen).when(mSettings).getPreferenceScreen(); |
| |
| mSettings.onViewCreated(mock(View.class), null); |
| |
| verify(mEmptyView, never()).setVisibility(View.VISIBLE); |
| verify(mPreferenceScreen, never()).removeAll(); |
| } |
| |
| @Test |
| @Config(shadows = ShadowDashboardFragment.class) |
| public void onViewCreated_isGuestUser_restrictUi() { |
| when(mUserManager.isGuestUser()).thenReturn(true); |
| when(mActivity.findViewById(android.R.id.empty)).thenReturn(mEmptyView); |
| doReturn(mPreferenceScreen).when(mSettings).getPreferenceScreen(); |
| |
| mSettings.onViewCreated(mock(View.class), null); |
| |
| verify(mEmptyView).setVisibility(View.VISIBLE); |
| verify(mPreferenceScreen).removeAll(); |
| } |
| |
| @Test |
| @Config(qualifiers = "mcc999") |
| public void getNonIndexableKeys_ifPageDisabled_shouldNotIndexResource() { |
| final List<String> niks = |
| ConfigureWifiSettings.SEARCH_INDEX_DATA_PROVIDER.getNonIndexableKeys(mContext); |
| |
| final int xmlId = mSettings.getPreferenceScreenResId(); |
| final List<String> keys = XmlTestUtils.getKeysFromPreferenceXml(mContext, xmlId); |
| assertThat(keys).isNotNull(); |
| assertThat(niks).containsAtLeastElementsIn(keys); |
| } |
| |
| public static class TestConfigureWifiSettings extends ConfigureWifiSettings { |
| @Override |
| public <T extends AbstractPreferenceController> T use(Class<T> clazz) { |
| return super.use(clazz); |
| } |
| } |
| |
| @Implements(DashboardFragment.class) |
| public static class ShadowDashboardFragment { |
| @Implementation |
| public void onCreate(Bundle icicle) { |
| // do nothing |
| } |
| |
| @Implementation |
| public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { |
| // do nothing |
| } |
| } |
| } |