[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:
govenliu
2020-05-15 15:59:18 +08:00
parent 2c8448e927
commit 23d91663f6
2 changed files with 203 additions and 17 deletions

View File

@@ -86,9 +86,9 @@ public class AddAppNetworksFragment extends InstrumentedFragment implements
static final int RESULT_NETWORK_ALREADY_EXISTS = 2;
// Handler messages for controlling different state and delay showing the status message.
private static final int MESSAGE_START_SAVING_NETWORK = 1;
private static final int MESSAGE_SHOW_SAVED_AND_CONNECT_NETWORK = 2;
private static final int MESSAGE_SHOW_SAVE_FAILED = 3;
@VisibleForTesting static final int MESSAGE_START_SAVING_NETWORK = 1;
@VisibleForTesting static final int MESSAGE_SHOW_SAVED_AND_CONNECT_NETWORK = 2;
@VisibleForTesting static final int MESSAGE_SHOW_SAVE_FAILED = 3;
private static final int MESSAGE_FINISH = 4;
// Signal level for the initial signal icon.
@@ -137,7 +137,8 @@ public class AddAppNetworksFragment extends InstrumentedFragment implements
private WifiManager.ActionListener mSaveListener;
private WifiManager mWifiManager;
private final Handler mHandler = new Handler() {
@VisibleForTesting
final Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
showSaveStatusByState(msg.what);
@@ -638,7 +639,8 @@ public class AddAppNetworksFragment extends InstrumentedFragment implements
/**
* Call framework API to save single network.
*/
private void saveNetwork(int index) {
@VisibleForTesting
void saveNetwork(int index) {
final PasspointConfiguration passpointConfig =
mUiToRequestedList.get(index).mWifiNetworkSuggestion.getPasspointConfig();
if (passpointConfig != null) {
@@ -689,7 +691,8 @@ public class AddAppNetworksFragment extends InstrumentedFragment implements
return SettingsEnums.PANEL_ADD_WIFI_NETWORKS;
}
private void showSaveStatusByState(int status) {
@VisibleForTesting
void showSaveStatusByState(int status) {
switch (status) {
case MESSAGE_START_SAVING_NETWORK:
if (mIsSingleNetwork) {

View File

@@ -18,9 +18,12 @@ package com.android.settings.wifi.addappnetworks;
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.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -35,6 +38,7 @@ import android.provider.Settings;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.fragment.app.FragmentActivity;
import com.android.settings.R;
import com.android.wifitrackerlib.WifiEntry;
@@ -43,8 +47,10 @@ import com.android.wifitrackerlib.WifiPickerTracker;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.shadows.androidx.fragment.FragmentController;
@@ -74,26 +80,33 @@ public class AddAppNetworksFragmentTest {
private ArrayList<Integer> mFakedResultArrayList = new ArrayList<>();
@Mock
private WifiEntry mMockWifiEntry;
private WifiEntry mWifiEntry;
@Mock
private WifiPickerTracker mMockWifiPickerTracker;
private WifiPickerTracker mWifiPickerTracker;
@Mock
private WifiManager mMockWifiManager;
private WifiManager mWifiManager;
private FragmentActivity mActivity;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
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,
WifiConfiguration.KeyMgmt.WPA_PSK, "1234567890");
mNewOpenSuggestionEntry = generateRegularWifiSuggestion(FAKE_NEW_OPEN_SSID,
WifiConfiguration.KeyMgmt.NONE, null);
mSavedWpaConfigurationEntry = generateRegularWifiConfiguration(FAKE_NEW_SAVED_WPA_SSID,
WifiConfiguration.KeyMgmt.WPA_PSK, "\"1234567890\"");
when(mMockWifiManager.isWifiEnabled()).thenReturn(true);
mAddAppNetworksFragment.mWifiPickerTracker = mMockWifiPickerTracker;
mAddAppNetworksFragment.mWifiPickerTracker = mWifiPickerTracker;
setUpOneScannedNetworkWithScanedLevel4();
}
@@ -213,7 +226,7 @@ public class AddAppNetworksFragmentTest {
@Test
public void withOneSuggestion_whenScanResultChanged_uiListShouldHaveNewLevel() {
// 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.
addOneSavedNetworkConfiguration(mSavedWpaConfigurationEntry);
// Setup one specified networks and its results and assign to fragment.
@@ -233,7 +246,7 @@ public class AddAppNetworksFragmentTest {
@Test
public void withOneSuggestion_whenScanResultChangedButWifiOff_uiListShouldHaveZeroLevel() {
// 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.
addOneSavedNetworkConfiguration(mSavedWpaConfigurationEntry);
// Setup one specified networks and its results and assign to fragment.
@@ -263,12 +276,182 @@ public class AddAppNetworksFragmentTest {
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() {
final ArrayList list = new ArrayList<>();
list.add(mMockWifiEntry);
when(mMockWifiPickerTracker.getWifiEntries()).thenReturn(list);
when(mMockWifiEntry.getSsid()).thenReturn(FAKE_NEW_OPEN_SSID);
when(mMockWifiEntry.getLevel()).thenReturn(SCANED_LEVEL4);
list.add(mWifiEntry);
when(mWifiPickerTracker.getWifiEntries()).thenReturn(list);
when(mWifiEntry.getSsid()).thenReturn(FAKE_NEW_OPEN_SSID);
when(mWifiEntry.getLevel()).thenReturn(SCANED_LEVEL4);
}
private void addOneSavedNetworkConfiguration(@NonNull WifiConfiguration wifiConfiguration) {