Merge "[Wi-Fi] Add multiple networks request case for adding Wi-Fi for apps feature."

This commit is contained in:
Goven Liu
2019-12-06 02:33:25 +00:00
committed by Android (Google) Code Review
5 changed files with 372 additions and 91 deletions

View File

@@ -21,13 +21,14 @@ import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy;
import android.content.Context;
import android.net.wifi.WifiConfiguration;
import android.os.Bundle;
import android.os.Parcelable;
import android.provider.Settings;
import android.widget.TextView;
import androidx.annotation.NonNull;
import com.android.settings.R;
import org.junit.Before;
@@ -42,18 +43,34 @@ import java.util.List;
@RunWith(RobolectricTestRunner.class)
public class AddAppNetworksFragmentTest {
private static final String FAKE_APP_NAME = "fake_app_name";
private static final String FAKE_SSID = "fake_ssid";
private static final String FAKE_NEW_WPA_SSID = "fake_new_wpa_ssid";
private static final String FAKE_NEW_OPEN_SSID = "fake_new_open_ssid";
private static final String FAKE_NEW_SAVED_WPA_SSID = "\"fake_new_wpa_ssid\"";
private AddAppNetworksFragment mAddAppNetworksFragment;
private Context mContext;
private List<WifiConfiguration> mFakedSpecifiedNetworksList;
private List<WifiConfiguration> mFakeSavedNetworksList;
private WifiConfiguration mNewWpaConfigEntry;
private WifiConfiguration mNewOpenConfigEntry;
private WifiConfiguration mSavedWpaConfigEntry;
private Bundle mBundle;
private ArrayList<Integer> mFakedResultArrayList = new ArrayList<>();
@Before
public void setUp() {
mAddAppNetworksFragment = spy(new AddAppNetworksFragment());
mNewWpaConfigEntry = generateWifiConfig(FAKE_NEW_WPA_SSID,
WifiConfiguration.KeyMgmt.WPA_PSK, "\"1234567890\"");
mNewOpenConfigEntry = generateWifiConfig(FAKE_NEW_OPEN_SSID,
WifiConfiguration.KeyMgmt.NONE, null);
mSavedWpaConfigEntry = generateWifiConfig(FAKE_NEW_SAVED_WPA_SSID,
WifiConfiguration.KeyMgmt.WPA_PSK, "\"1234567890\"");
}
@Test
public void callingPackageName_onCreateView_shouldBeCorrect() {
setUpOneNetworkBundle();
addOneSpecifiedNetworkConfig(mNewWpaConfigEntry);
setUpBundle(mFakedSpecifiedNetworksList);
setupFragment();
assertThat(mAddAppNetworksFragment.mCallingPackageName).isEqualTo(FAKE_APP_NAME);
@@ -61,7 +78,8 @@ public class AddAppNetworksFragmentTest {
@Test
public void launchFragment_shouldShowSaveButton() {
setUpOneNetworkBundle();
addOneSpecifiedNetworkConfig(mNewWpaConfigEntry);
setUpBundle(mFakedSpecifiedNetworksList);
setupFragment();
assertThat(mAddAppNetworksFragment.mSaveButton).isNotNull();
@@ -69,7 +87,8 @@ public class AddAppNetworksFragmentTest {
@Test
public void launchFragment_shouldShowCancelButton() {
setUpOneNetworkBundle();
addOneSpecifiedNetworkConfig(mNewWpaConfigEntry);
setUpBundle(mFakedSpecifiedNetworksList);
setupFragment();
assertThat(mAddAppNetworksFragment.mCancelButton).isNotNull();
@@ -77,40 +96,72 @@ public class AddAppNetworksFragmentTest {
@Test
public void requestOneNetwork_shouldShowCorrectSSID() {
setUpOneNetworkBundle();
addOneSpecifiedNetworkConfig(mNewWpaConfigEntry);
setUpBundle(mFakedSpecifiedNetworksList);
setupFragment();
TextView ssidView = (TextView) mAddAppNetworksFragment.mLayoutView.findViewById(
R.id.single_ssid);
assertThat(ssidView.getText()).isEqualTo(FAKE_SSID);
assertThat(ssidView.getText()).isEqualTo(FAKE_NEW_WPA_SSID);
}
@Test
public void withNoExtra_requestNetwork_shouldFinished() {
setUpNoNetworkBundle();
addOneSpecifiedNetworkConfig(null);
setUpBundle(mFakedSpecifiedNetworksList);
setupFragment();
assertThat(mAddAppNetworksFragment.mActivity.isFinishing()).isTrue();
}
private void setUpOneNetworkBundle() {
// Setup one network.
List<WifiConfiguration> wifiConfigurationList = new ArrayList<>();
wifiConfigurationList.add(
generateWifiConfig(FAKE_SSID, WifiConfiguration.KeyMgmt.WPA_PSK, "\"1234567890\""));
@Test
public void withOneHalfSavedNetworks_uiListAndResultListShouldBeCorrect() {
// Arrange
// Setup a fake saved network list and assign to fragment.
addOneSavedNetworkConfig(mSavedWpaConfigEntry);
// Setup two specified networks and their results and assign to fragment.
addOneSpecifiedNetworkConfig(mNewWpaConfigEntry);
addOneSpecifiedNetworkConfig(mNewOpenConfigEntry);
mAddAppNetworksFragment.mAllSpecifiedNetworksList = mFakedSpecifiedNetworksList;
mFakedResultArrayList.add(mAddAppNetworksFragment.RESULT_NETWORK_INITIAL);
mFakedResultArrayList.add(mAddAppNetworksFragment.RESULT_NETWORK_INITIAL);
mAddAppNetworksFragment.mResultCodeArrayList = mFakedResultArrayList;
// Act
mAddAppNetworksFragment.mUiToRequestedList = mAddAppNetworksFragment.filterSavedNetworks(
mFakeSavedNetworksList);
// Assert
assertThat(mAddAppNetworksFragment.mUiToRequestedList).hasSize(1);
assertThat(mAddAppNetworksFragment.mResultCodeArrayList.get(0)).isEqualTo(
mAddAppNetworksFragment.RESULT_NETWORK_ALREADY_EXISTS);
assertThat(mAddAppNetworksFragment.mUiToRequestedList.get(
0).mWifiConfiguration.SSID).isEqualTo(FAKE_NEW_OPEN_SSID);
}
private void addOneSavedNetworkConfig(@NonNull WifiConfiguration wifiConfiguration) {
if (mFakeSavedNetworksList == null) {
mFakeSavedNetworksList = new ArrayList<>();
}
mFakeSavedNetworksList.add(wifiConfiguration);
}
private void addOneSpecifiedNetworkConfig(@NonNull WifiConfiguration wifiConfiguration) {
if (wifiConfiguration != null) {
if (mFakedSpecifiedNetworksList == null) {
mFakedSpecifiedNetworksList = new ArrayList<>();
}
mFakedSpecifiedNetworksList.add(wifiConfiguration);
}
}
private void setUpBundle(List<WifiConfiguration> allFakedNetworksList) {
// Set up bundle.
final Bundle bundle = new Bundle();
bundle.putString(AddAppNetworksActivity.KEY_CALLING_PACKAGE_NAME, FAKE_APP_NAME);
bundle.putParcelableArrayList(Settings.EXTRA_WIFI_CONFIGURATION_LIST,
(ArrayList<? extends Parcelable>) wifiConfigurationList);
doReturn(bundle).when(mAddAppNetworksFragment).getArguments();
}
private void setUpNoNetworkBundle() {
// Set up bundle.
final Bundle bundle = new Bundle();
bundle.putString(AddAppNetworksActivity.KEY_CALLING_PACKAGE_NAME, FAKE_APP_NAME);
bundle.putParcelableArrayList(Settings.EXTRA_WIFI_CONFIGURATION_LIST, null);
(ArrayList<? extends Parcelable>) allFakedNetworksList);
doReturn(bundle).when(mAddAppNetworksFragment).getArguments();
}