[Wi-Fi] Enhance AddAppNetworksFragment unit test cases
Add new unit test cases in AddAppNetworksFragmentTest.java The coverage rate of com.android.settings.wifi.addappnetworks will raise from 65% to 81% Bug: 151696220 Test: make RunSettingsRoboTests ROBOTEST_FILTER=AddAppNetworksFragmentTest Change-Id: Iae15b5ad27b20f90cbf8b0318a24a9069b738a33
This commit is contained in:
@@ -86,9 +86,9 @@ public class AddAppNetworksFragment extends InstrumentedFragment implements
|
|||||||
static final int RESULT_NETWORK_ALREADY_EXISTS = 2;
|
static final int RESULT_NETWORK_ALREADY_EXISTS = 2;
|
||||||
|
|
||||||
// Handler messages for controlling different state and delay showing the status message.
|
// Handler messages for controlling different state and delay showing the status message.
|
||||||
private static final int MESSAGE_START_SAVING_NETWORK = 1;
|
@VisibleForTesting static final int MESSAGE_START_SAVING_NETWORK = 1;
|
||||||
private static final int MESSAGE_SHOW_SAVED_AND_CONNECT_NETWORK = 2;
|
@VisibleForTesting static final int MESSAGE_SHOW_SAVED_AND_CONNECT_NETWORK = 2;
|
||||||
private static final int MESSAGE_SHOW_SAVE_FAILED = 3;
|
@VisibleForTesting static final int MESSAGE_SHOW_SAVE_FAILED = 3;
|
||||||
private static final int MESSAGE_FINISH = 4;
|
private static final int MESSAGE_FINISH = 4;
|
||||||
|
|
||||||
// Signal level for the initial signal icon.
|
// Signal level for the initial signal icon.
|
||||||
@@ -137,7 +137,8 @@ public class AddAppNetworksFragment extends InstrumentedFragment implements
|
|||||||
private WifiManager.ActionListener mSaveListener;
|
private WifiManager.ActionListener mSaveListener;
|
||||||
private WifiManager mWifiManager;
|
private WifiManager mWifiManager;
|
||||||
|
|
||||||
private final Handler mHandler = new Handler() {
|
@VisibleForTesting
|
||||||
|
final Handler mHandler = new Handler() {
|
||||||
@Override
|
@Override
|
||||||
public void handleMessage(Message msg) {
|
public void handleMessage(Message msg) {
|
||||||
showSaveStatusByState(msg.what);
|
showSaveStatusByState(msg.what);
|
||||||
@@ -638,7 +639,8 @@ public class AddAppNetworksFragment extends InstrumentedFragment implements
|
|||||||
/**
|
/**
|
||||||
* Call framework API to save single network.
|
* Call framework API to save single network.
|
||||||
*/
|
*/
|
||||||
private void saveNetwork(int index) {
|
@VisibleForTesting
|
||||||
|
void saveNetwork(int index) {
|
||||||
final PasspointConfiguration passpointConfig =
|
final PasspointConfiguration passpointConfig =
|
||||||
mUiToRequestedList.get(index).mWifiNetworkSuggestion.getPasspointConfig();
|
mUiToRequestedList.get(index).mWifiNetworkSuggestion.getPasspointConfig();
|
||||||
if (passpointConfig != null) {
|
if (passpointConfig != null) {
|
||||||
@@ -689,7 +691,8 @@ public class AddAppNetworksFragment extends InstrumentedFragment implements
|
|||||||
return SettingsEnums.PANEL_ADD_WIFI_NETWORKS;
|
return SettingsEnums.PANEL_ADD_WIFI_NETWORKS;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void showSaveStatusByState(int status) {
|
@VisibleForTesting
|
||||||
|
void showSaveStatusByState(int status) {
|
||||||
switch (status) {
|
switch (status) {
|
||||||
case MESSAGE_START_SAVING_NETWORK:
|
case MESSAGE_START_SAVING_NETWORK:
|
||||||
if (mIsSingleNetwork) {
|
if (mIsSingleNetwork) {
|
||||||
|
@@ -18,9 +18,12 @@ package com.android.settings.wifi.addappnetworks;
|
|||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
|
import static org.mockito.ArgumentMatchers.anyInt;
|
||||||
import static org.mockito.Mockito.doReturn;
|
import static org.mockito.Mockito.doReturn;
|
||||||
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.mock;
|
||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
|
import static org.mockito.Mockito.times;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
@@ -35,6 +38,7 @@ import android.provider.Settings;
|
|||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.fragment.app.FragmentActivity;
|
||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.wifitrackerlib.WifiEntry;
|
import com.android.wifitrackerlib.WifiEntry;
|
||||||
@@ -43,8 +47,10 @@ import com.android.wifitrackerlib.WifiPickerTracker;
|
|||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
import org.mockito.ArgumentCaptor;
|
||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.MockitoAnnotations;
|
||||||
|
import org.robolectric.Robolectric;
|
||||||
import org.robolectric.RobolectricTestRunner;
|
import org.robolectric.RobolectricTestRunner;
|
||||||
import org.robolectric.shadows.androidx.fragment.FragmentController;
|
import org.robolectric.shadows.androidx.fragment.FragmentController;
|
||||||
|
|
||||||
@@ -74,26 +80,33 @@ public class AddAppNetworksFragmentTest {
|
|||||||
private ArrayList<Integer> mFakedResultArrayList = new ArrayList<>();
|
private ArrayList<Integer> mFakedResultArrayList = new ArrayList<>();
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private WifiEntry mMockWifiEntry;
|
private WifiEntry mWifiEntry;
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private WifiPickerTracker mMockWifiPickerTracker;
|
private WifiPickerTracker mWifiPickerTracker;
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private WifiManager mMockWifiManager;
|
private WifiManager mWifiManager;
|
||||||
|
|
||||||
|
private FragmentActivity mActivity;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
mAddAppNetworksFragment = spy(new AddAppNetworksFragment());
|
mAddAppNetworksFragment = spy(new AddAppNetworksFragment());
|
||||||
|
mActivity = spy(Robolectric.setupActivity(FragmentActivity.class));
|
||||||
|
doReturn(mActivity).when(mAddAppNetworksFragment).getActivity();
|
||||||
|
when(mWifiManager.isWifiEnabled()).thenReturn(true);
|
||||||
|
when(mActivity.getSystemService(WifiManager.class)).thenReturn(mWifiManager);
|
||||||
|
|
||||||
mNewWpaSuggestionEntry = generateRegularWifiSuggestion(FAKE_NEW_WPA_SSID,
|
mNewWpaSuggestionEntry = generateRegularWifiSuggestion(FAKE_NEW_WPA_SSID,
|
||||||
WifiConfiguration.KeyMgmt.WPA_PSK, "1234567890");
|
WifiConfiguration.KeyMgmt.WPA_PSK, "1234567890");
|
||||||
mNewOpenSuggestionEntry = generateRegularWifiSuggestion(FAKE_NEW_OPEN_SSID,
|
mNewOpenSuggestionEntry = generateRegularWifiSuggestion(FAKE_NEW_OPEN_SSID,
|
||||||
WifiConfiguration.KeyMgmt.NONE, null);
|
WifiConfiguration.KeyMgmt.NONE, null);
|
||||||
mSavedWpaConfigurationEntry = generateRegularWifiConfiguration(FAKE_NEW_SAVED_WPA_SSID,
|
mSavedWpaConfigurationEntry = generateRegularWifiConfiguration(FAKE_NEW_SAVED_WPA_SSID,
|
||||||
WifiConfiguration.KeyMgmt.WPA_PSK, "\"1234567890\"");
|
WifiConfiguration.KeyMgmt.WPA_PSK, "\"1234567890\"");
|
||||||
when(mMockWifiManager.isWifiEnabled()).thenReturn(true);
|
|
||||||
mAddAppNetworksFragment.mWifiPickerTracker = mMockWifiPickerTracker;
|
mAddAppNetworksFragment.mWifiPickerTracker = mWifiPickerTracker;
|
||||||
setUpOneScannedNetworkWithScanedLevel4();
|
setUpOneScannedNetworkWithScanedLevel4();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -213,7 +226,7 @@ public class AddAppNetworksFragmentTest {
|
|||||||
@Test
|
@Test
|
||||||
public void withOneSuggestion_whenScanResultChanged_uiListShouldHaveNewLevel() {
|
public void withOneSuggestion_whenScanResultChanged_uiListShouldHaveNewLevel() {
|
||||||
// Arrange
|
// Arrange
|
||||||
when(mMockWifiPickerTracker.getWifiState()).thenReturn(WifiManager.WIFI_STATE_ENABLED);
|
when(mWifiPickerTracker.getWifiState()).thenReturn(WifiManager.WIFI_STATE_ENABLED);
|
||||||
// Setup a fake saved network list and assign to fragment.
|
// Setup a fake saved network list and assign to fragment.
|
||||||
addOneSavedNetworkConfiguration(mSavedWpaConfigurationEntry);
|
addOneSavedNetworkConfiguration(mSavedWpaConfigurationEntry);
|
||||||
// Setup one specified networks and its results and assign to fragment.
|
// Setup one specified networks and its results and assign to fragment.
|
||||||
@@ -233,7 +246,7 @@ public class AddAppNetworksFragmentTest {
|
|||||||
@Test
|
@Test
|
||||||
public void withOneSuggestion_whenScanResultChangedButWifiOff_uiListShouldHaveZeroLevel() {
|
public void withOneSuggestion_whenScanResultChangedButWifiOff_uiListShouldHaveZeroLevel() {
|
||||||
// Arrange
|
// Arrange
|
||||||
when(mMockWifiPickerTracker.getWifiState()).thenReturn(WifiManager.WIFI_STATE_DISABLED);
|
when(mWifiPickerTracker.getWifiState()).thenReturn(WifiManager.WIFI_STATE_DISABLED);
|
||||||
// Setup a fake saved network list and assign to fragment.
|
// Setup a fake saved network list and assign to fragment.
|
||||||
addOneSavedNetworkConfiguration(mSavedWpaConfigurationEntry);
|
addOneSavedNetworkConfiguration(mSavedWpaConfigurationEntry);
|
||||||
// Setup one specified networks and its results and assign to fragment.
|
// Setup one specified networks and its results and assign to fragment.
|
||||||
@@ -263,12 +276,182 @@ public class AddAppNetworksFragmentTest {
|
|||||||
verify(mAddAppNetworksFragment.mWorkerThread).quit();
|
verify(mAddAppNetworksFragment.mWorkerThread).quit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void status_withOneNetworkSave_shouldShowOneNetworkSaving() {
|
||||||
|
addOneSpecifiedRegularNetworkSuggestion(mNewWpaSuggestionEntry);
|
||||||
|
setUpBundle(mFakedSpecifiedNetworksList);
|
||||||
|
setupFragment();
|
||||||
|
|
||||||
|
mAddAppNetworksFragment.showSaveStatusByState(
|
||||||
|
AddAppNetworksFragment.MESSAGE_START_SAVING_NETWORK);
|
||||||
|
|
||||||
|
final TextView textView = (TextView) mAddAppNetworksFragment.mLayoutView.findViewById(
|
||||||
|
R.id.single_status);
|
||||||
|
assertThat(textView.getText()).isEqualTo(mAddAppNetworksFragment.getString(
|
||||||
|
R.string.wifi_add_app_single_network_saving_summary));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void status_withTwoNetworksSave_shouldShowMultipleNetworksSaving() {
|
||||||
|
addOneSpecifiedRegularNetworkSuggestion(mNewWpaSuggestionEntry);
|
||||||
|
addOneSpecifiedRegularNetworkSuggestion(mNewOpenSuggestionEntry);
|
||||||
|
setUpBundle(mFakedSpecifiedNetworksList);
|
||||||
|
setupFragment();
|
||||||
|
|
||||||
|
mAddAppNetworksFragment.showSaveStatusByState(
|
||||||
|
AddAppNetworksFragment.MESSAGE_START_SAVING_NETWORK);
|
||||||
|
|
||||||
|
final TextView textView = (TextView) mAddAppNetworksFragment.mLayoutView.findViewById(
|
||||||
|
R.id.app_summary);
|
||||||
|
assertThat(textView.getText()).isEqualTo(
|
||||||
|
mAddAppNetworksFragment.getString(R.string.wifi_add_app_networks_saving_summary,
|
||||||
|
2));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void status_withOneNetworkSaved_shouldShowOneNetworkSaved() {
|
||||||
|
addOneSpecifiedRegularNetworkSuggestion(mNewWpaSuggestionEntry);
|
||||||
|
setUpBundle(mFakedSpecifiedNetworksList);
|
||||||
|
setupFragment();
|
||||||
|
|
||||||
|
mAddAppNetworksFragment.showSaveStatusByState(
|
||||||
|
AddAppNetworksFragment.MESSAGE_SHOW_SAVED_AND_CONNECT_NETWORK);
|
||||||
|
|
||||||
|
final TextView textView = (TextView) mAddAppNetworksFragment.mLayoutView.findViewById(
|
||||||
|
R.id.single_status);
|
||||||
|
assertThat(textView.getText()).isEqualTo(mAddAppNetworksFragment.getString(
|
||||||
|
R.string.wifi_add_app_single_network_saved_summary));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void status_withTwoNetworksSaved_shouldShowMultipleNetworksSaved() {
|
||||||
|
addOneSpecifiedRegularNetworkSuggestion(mNewWpaSuggestionEntry);
|
||||||
|
addOneSpecifiedRegularNetworkSuggestion(mNewOpenSuggestionEntry);
|
||||||
|
setUpBundle(mFakedSpecifiedNetworksList);
|
||||||
|
setupFragment();
|
||||||
|
|
||||||
|
mAddAppNetworksFragment.showSaveStatusByState(
|
||||||
|
AddAppNetworksFragment.MESSAGE_SHOW_SAVED_AND_CONNECT_NETWORK);
|
||||||
|
|
||||||
|
final TextView textView = (TextView) mAddAppNetworksFragment.mLayoutView.findViewById(
|
||||||
|
R.id.app_summary);
|
||||||
|
assertThat(textView.getText()).isEqualTo(
|
||||||
|
mAddAppNetworksFragment.getString(R.string.wifi_add_app_networks_saved_summary));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void status_withOneNetworkSaveFailed_shouldShowOneNetworkFailed() {
|
||||||
|
addOneSpecifiedRegularNetworkSuggestion(mNewWpaSuggestionEntry);
|
||||||
|
setUpBundle(mFakedSpecifiedNetworksList);
|
||||||
|
setupFragment();
|
||||||
|
|
||||||
|
mAddAppNetworksFragment.showSaveStatusByState(
|
||||||
|
AddAppNetworksFragment.MESSAGE_SHOW_SAVE_FAILED);
|
||||||
|
|
||||||
|
final TextView textView = (TextView) mAddAppNetworksFragment.mLayoutView.findViewById(
|
||||||
|
R.id.single_status);
|
||||||
|
assertThat(textView.getText()).isEqualTo(mAddAppNetworksFragment.getString(
|
||||||
|
R.string.wifi_add_app_network_save_failed_summary));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void status_withTwoNetworksSaveFailed_shouldShowMultipleNetworksFailed() {
|
||||||
|
addOneSpecifiedRegularNetworkSuggestion(mNewWpaSuggestionEntry);
|
||||||
|
addOneSpecifiedRegularNetworkSuggestion(mNewOpenSuggestionEntry);
|
||||||
|
setUpBundle(mFakedSpecifiedNetworksList);
|
||||||
|
setupFragment();
|
||||||
|
|
||||||
|
mAddAppNetworksFragment.showSaveStatusByState(
|
||||||
|
AddAppNetworksFragment.MESSAGE_SHOW_SAVE_FAILED);
|
||||||
|
|
||||||
|
final TextView textView = (TextView) mAddAppNetworksFragment.mLayoutView.findViewById(
|
||||||
|
R.id.app_summary);
|
||||||
|
assertThat(textView.getText()).isEqualTo(mAddAppNetworksFragment.getString(
|
||||||
|
R.string.wifi_add_app_network_save_failed_summary));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void saveOneNetwork_shouldCallWifiManagerSaveOnce() {
|
||||||
|
addOneSpecifiedRegularNetworkSuggestion(mNewWpaSuggestionEntry);
|
||||||
|
setUpBundle(mFakedSpecifiedNetworksList);
|
||||||
|
setupFragment();
|
||||||
|
|
||||||
|
mAddAppNetworksFragment.saveNetwork(0 /* index */);
|
||||||
|
|
||||||
|
verify(mWifiManager, times(1)).save(any(), any());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onSuccess_saveTwoNetworks_shouldCallWifiNamagerSaveTwice() {
|
||||||
|
addOneSpecifiedRegularNetworkSuggestion(mNewWpaSuggestionEntry);
|
||||||
|
addOneSpecifiedRegularNetworkSuggestion(mNewOpenSuggestionEntry);
|
||||||
|
setUpBundle(mFakedSpecifiedNetworksList);
|
||||||
|
setupFragment();
|
||||||
|
mAddAppNetworksFragment.saveNetwork(0 /* index */);
|
||||||
|
|
||||||
|
final ArgumentCaptor<WifiManager.ActionListener> wifiCallbackCaptor =
|
||||||
|
ArgumentCaptor.forClass(WifiManager.ActionListener.class);
|
||||||
|
verify(mWifiManager).save(any(WifiConfiguration.class), wifiCallbackCaptor.capture());
|
||||||
|
wifiCallbackCaptor.getValue().onSuccess();
|
||||||
|
|
||||||
|
verify(mWifiManager, times(2)).save(any(), any());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onFailedFirstOne_saveTwoNetworks_shouldAlsoCallWifiNamagerSaveTwice() {
|
||||||
|
addOneSpecifiedRegularNetworkSuggestion(mNewWpaSuggestionEntry);
|
||||||
|
addOneSpecifiedRegularNetworkSuggestion(mNewOpenSuggestionEntry);
|
||||||
|
setUpBundle(mFakedSpecifiedNetworksList);
|
||||||
|
setupFragment();
|
||||||
|
mAddAppNetworksFragment.saveNetwork(0 /* index */);
|
||||||
|
|
||||||
|
final ArgumentCaptor<WifiManager.ActionListener> wifiCallbackCaptor =
|
||||||
|
ArgumentCaptor.forClass(WifiManager.ActionListener.class);
|
||||||
|
verify(mWifiManager).save(any(WifiConfiguration.class), wifiCallbackCaptor.capture());
|
||||||
|
wifiCallbackCaptor.getValue().onFailure(anyInt());
|
||||||
|
|
||||||
|
verify(mWifiManager, times(2)).save(any(), any());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void saveSuccess_shouldEnterShowAndConnectState() {
|
||||||
|
addOneSpecifiedRegularNetworkSuggestion(mNewWpaSuggestionEntry);
|
||||||
|
setUpBundle(mFakedSpecifiedNetworksList);
|
||||||
|
setupFragment();
|
||||||
|
mAddAppNetworksFragment.saveNetwork(0 /* index */);
|
||||||
|
|
||||||
|
final ArgumentCaptor<WifiManager.ActionListener> wifiCallbackCaptor =
|
||||||
|
ArgumentCaptor.forClass(WifiManager.ActionListener.class);
|
||||||
|
verify(mWifiManager).save(any(WifiConfiguration.class), wifiCallbackCaptor.capture());
|
||||||
|
wifiCallbackCaptor.getValue().onSuccess();
|
||||||
|
|
||||||
|
assertThat(mAddAppNetworksFragment.mHandler.hasMessages(
|
||||||
|
AddAppNetworksFragment.MESSAGE_SHOW_SAVED_AND_CONNECT_NETWORK)).isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void saveFailed_shouldEnterFailedState() {
|
||||||
|
addOneSpecifiedRegularNetworkSuggestion(mNewWpaSuggestionEntry);
|
||||||
|
setUpBundle(mFakedSpecifiedNetworksList);
|
||||||
|
setupFragment();
|
||||||
|
mAddAppNetworksFragment.saveNetwork(0 /* index */);
|
||||||
|
|
||||||
|
final ArgumentCaptor<WifiManager.ActionListener> wifiCallbackCaptor =
|
||||||
|
ArgumentCaptor.forClass(
|
||||||
|
WifiManager.ActionListener.class);
|
||||||
|
verify(mWifiManager).save(any(WifiConfiguration.class), wifiCallbackCaptor.capture());
|
||||||
|
wifiCallbackCaptor.getValue().onFailure(1 /* reason */);
|
||||||
|
|
||||||
|
assertThat(mAddAppNetworksFragment.mHandler.hasMessages(
|
||||||
|
AddAppNetworksFragment.MESSAGE_SHOW_SAVE_FAILED)).isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
private void setUpOneScannedNetworkWithScanedLevel4() {
|
private void setUpOneScannedNetworkWithScanedLevel4() {
|
||||||
final ArrayList list = new ArrayList<>();
|
final ArrayList list = new ArrayList<>();
|
||||||
list.add(mMockWifiEntry);
|
list.add(mWifiEntry);
|
||||||
when(mMockWifiPickerTracker.getWifiEntries()).thenReturn(list);
|
when(mWifiPickerTracker.getWifiEntries()).thenReturn(list);
|
||||||
when(mMockWifiEntry.getSsid()).thenReturn(FAKE_NEW_OPEN_SSID);
|
when(mWifiEntry.getSsid()).thenReturn(FAKE_NEW_OPEN_SSID);
|
||||||
when(mMockWifiEntry.getLevel()).thenReturn(SCANED_LEVEL4);
|
when(mWifiEntry.getLevel()).thenReturn(SCANED_LEVEL4);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addOneSavedNetworkConfiguration(@NonNull WifiConfiguration wifiConfiguration) {
|
private void addOneSavedNetworkConfiguration(@NonNull WifiConfiguration wifiConfiguration) {
|
||||||
|
Reference in New Issue
Block a user