Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a76a8716 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "[Wi-Fi] Enhance Wifi Settings unit test cases." into rvc-dev

parents 3a132d7c 1e0d40f2
Loading
Loading
Loading
Loading
+6 −3
Original line number Original line Diff line number Diff line
@@ -22,6 +22,7 @@ import android.net.wifi.p2p.WifiP2pDevice;
import android.text.TextUtils;
import android.text.TextUtils;
import android.widget.ImageView;
import android.widget.ImageView;


import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference;
import androidx.preference.Preference;
import androidx.preference.PreferenceViewHolder;
import androidx.preference.PreferenceViewHolder;


@@ -29,19 +30,21 @@ import com.android.settings.R;


public class WifiP2pPeer extends Preference {
public class WifiP2pPeer extends Preference {


    private static final int FIXED_RSSI = 60;
    private static final int[] STATE_SECURED = {R.attr.state_encrypted};
    private static final int[] STATE_SECURED = {R.attr.state_encrypted};
    public WifiP2pDevice device;
    public WifiP2pDevice device;


    private final int mRssi;
    @VisibleForTesting final int mRssi;
    private ImageView mSignal;
    private ImageView mSignal;


    private static final int SIGNAL_LEVELS = 4;
    @VisibleForTesting
    static final int SIGNAL_LEVELS = 4;


    public WifiP2pPeer(Context context, WifiP2pDevice dev) {
    public WifiP2pPeer(Context context, WifiP2pDevice dev) {
        super(context);
        super(context);
        device = dev;
        device = dev;
        setWidgetLayoutResource(R.layout.preference_widget_wifi_signal);
        setWidgetLayoutResource(R.layout.preference_widget_wifi_signal);
        mRssi = 60; //TODO: fix
        mRssi = FIXED_RSSI; //TODO: fix
        if (TextUtils.isEmpty(device.deviceName)) {
        if (TextUtils.isEmpty(device.deviceName)) {
            setTitle(device.deviceAddress);
            setTitle(device.deviceAddress);
        } else {
        } else {
+2 −1
Original line number Original line Diff line number Diff line
@@ -52,7 +52,8 @@ public class WifiP2pPreferenceController extends AbstractPreferenceController
    };
    };
    private final IntentFilter mFilter = new IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION);
    private final IntentFilter mFilter = new IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION);
    private final LocationManager mLocationManager;
    private final LocationManager mLocationManager;
    private final BroadcastReceiver mLocationReceiver = new BroadcastReceiver() {
    @VisibleForTesting
    final BroadcastReceiver mLocationReceiver = new BroadcastReceiver() {
        @Override
        @Override
        public void onReceive(Context context, Intent intent) {
        public void onReceive(Context context, Intent intent) {
            if (mWifiDirectPref != null) {
            if (mWifiDirectPref != null) {
+4 −4
Original line number Original line Diff line number Diff line
@@ -91,16 +91,16 @@ public class WifiP2pSettings extends DashboardFragment
    @VisibleForTesting boolean mLastGroupFormed = false;
    @VisibleForTesting boolean mLastGroupFormed = false;
    private boolean mIsIgnoreInitConnectionInfoCallback = false;
    private boolean mIsIgnoreInitConnectionInfoCallback = false;


    private P2pPeerCategoryPreferenceController mPeerCategoryController;
    @VisibleForTesting P2pPeerCategoryPreferenceController mPeerCategoryController;
    private P2pPersistentCategoryPreferenceController mPersistentCategoryController;
    @VisibleForTesting P2pPersistentCategoryPreferenceController mPersistentCategoryController;
    private P2pThisDevicePreferenceController mThisDevicePreferenceController;
    @VisibleForTesting P2pThisDevicePreferenceController mThisDevicePreferenceController;


    @VisibleForTesting static final int DIALOG_DISCONNECT  = 1;
    @VisibleForTesting static final int DIALOG_DISCONNECT  = 1;
    @VisibleForTesting static final int DIALOG_CANCEL_CONNECT = 2;
    @VisibleForTesting static final int DIALOG_CANCEL_CONNECT = 2;
    @VisibleForTesting static final int DIALOG_RENAME = 3;
    @VisibleForTesting static final int DIALOG_RENAME = 3;
    @VisibleForTesting static final int DIALOG_DELETE_GROUP = 4;
    @VisibleForTesting static final int DIALOG_DELETE_GROUP = 4;


    private static final String SAVE_DIALOG_PEER = "PEER_STATE";
    @VisibleForTesting static final String SAVE_DIALOG_PEER = "PEER_STATE";
    @VisibleForTesting static final String SAVE_DEVICE_NAME = "DEV_NAME";
    @VisibleForTesting static final String SAVE_DEVICE_NAME = "DEV_NAME";
    @VisibleForTesting static final String SAVE_SELECTED_GROUP = "GROUP_NAME";
    @VisibleForTesting static final String SAVE_SELECTED_GROUP = "GROUP_NAME";


+202 −10
Original line number Original line Diff line number Diff line
@@ -83,6 +83,12 @@ public class WifiConfigController2Test {
    // Valid PSK pass phrase
    // Valid PSK pass phrase
    private static final String GOOD_PSK = "abcdefghijklmnopqrstuvwxyz";
    private static final String GOOD_PSK = "abcdefghijklmnopqrstuvwxyz";
    private static final String GOOD_SSID = "abc";
    private static final String GOOD_SSID = "abc";
    private static final String VALID_HEX_PSK =
            "123456789012345678901234567890123456789012345678901234567890abcd";
    private static final String INVALID_HEX_PSK =
            "123456789012345678901234567890123456789012345678901234567890ghij";
    private static final String NUMBER_AND_CHARACTER_KEY = "123456abcd";
    private static final String PARTIAL_NUMBER_AND_CHARACTER_KEY = "123456abc?";
    private static final int DHCP = 0;
    private static final int DHCP = 0;


    @Before
    @Before
@@ -518,16 +524,7 @@ public class WifiConfigController2Test {


    @Test
    @Test
    public void selectEapMethod_savedWifiEntry_shouldGetCorrectPosition() {
    public void selectEapMethod_savedWifiEntry_shouldGetCorrectPosition() {
        when(mWifiEntry.isSaved()).thenReturn(true);
        setUpModifyingSavedPeapConfigController();
        when(mWifiEntry.getSecurity()).thenReturn(WifiEntry.SECURITY_EAP);
        final WifiConfiguration mockWifiConfig = mock(WifiConfiguration.class);
        when(mockWifiConfig.getIpConfiguration()).thenReturn(mock(IpConfiguration.class));
        final WifiEnterpriseConfig mockWifiEnterpriseConfig = mock(WifiEnterpriseConfig.class);
        when(mockWifiEnterpriseConfig.getEapMethod()).thenReturn(Eap.PEAP);
        mockWifiConfig.enterpriseConfig = mockWifiEnterpriseConfig;
        when(mWifiEntry.getWifiConfiguration()).thenReturn(mockWifiConfig);
        mController = new TestWifiConfigController2(mConfigUiBase, mView, mWifiEntry,
                WifiConfigUiBase2.MODE_MODIFY);
        final Spinner eapMethodSpinner = mView.findViewById(R.id.method);
        final Spinner eapMethodSpinner = mView.findViewById(R.id.method);
        final Spinner phase2Spinner = mView.findViewById(R.id.phase2);
        final Spinner phase2Spinner = mView.findViewById(R.id.phase2);
        WifiConfiguration wifiConfiguration;
        WifiConfiguration wifiConfiguration;
@@ -568,4 +565,199 @@ public class WifiConfigController2Test {
        assertThat(advButton.getContentDescription()).isEqualTo(
        assertThat(advButton.getContentDescription()).isEqualTo(
                mContext.getString(R.string.wifi_advanced_toggle_description));
                mContext.getString(R.string.wifi_advanced_toggle_description));
    }
    }

    @Test
    public void getWepConfig_withNumberAndCharacterKey_shouldContainTheSameKey() {
        final TextView password = mView.findViewById(R.id.password);
        password.setText(NUMBER_AND_CHARACTER_KEY);
        mController.mWifiEntrySecurity = WifiEntry.SECURITY_WEP;

        WifiConfiguration wifiConfiguration = mController.getConfig();

        assertThat(wifiConfiguration.wepKeys[0]).isEqualTo(NUMBER_AND_CHARACTER_KEY);
    }

    @Test
    public void getWepConfig_withPartialNumberAndCharacterKey_shouldContainDifferentKey() {
        final TextView password = mView.findViewById(R.id.password);
        password.setText(PARTIAL_NUMBER_AND_CHARACTER_KEY);
        mController.mWifiEntrySecurity = WifiEntry.SECURITY_WEP;

        WifiConfiguration wifiConfiguration = mController.getConfig();

        assertThat(wifiConfiguration.wepKeys[0]).isNotEqualTo(PARTIAL_NUMBER_AND_CHARACTER_KEY);
    }

    @Test
    public void getPskConfig_withValidHexKey_shouldContainTheSameKey() {
        final TextView password = mView.findViewById(R.id.password);
        password.setText(VALID_HEX_PSK);
        mController.mWifiEntrySecurity = WifiEntry.SECURITY_PSK;

        WifiConfiguration wifiConfiguration = mController.getConfig();

        assertThat(wifiConfiguration.preSharedKey).isEqualTo(VALID_HEX_PSK);
    }

    @Test
    public void getPskConfig_withInvalidHexKey_shouldContainDifferentKey() {
        final TextView password = mView.findViewById(R.id.password);
        password.setText(INVALID_HEX_PSK);
        mController.mWifiEntrySecurity = WifiEntry.SECURITY_PSK;

        WifiConfiguration wifiConfiguration = mController.getConfig();

        assertThat(wifiConfiguration.preSharedKey).isNotEqualTo(INVALID_HEX_PSK);
    }

    @Test
    public void getEapConfig_withPhase2Gtc_shouldContainGtcMethod() {
        setUpModifyingSavedPeapConfigController();

        // Test EAP method PEAP
        final Spinner eapMethodSpinner = mView.findViewById(R.id.method);
        eapMethodSpinner.setSelection(Eap.PEAP);

        // Test phase2 GTC
        final Spinner phase2Spinner = mView.findViewById(R.id.phase2);
        phase2Spinner.setSelection(WifiConfigController2.WIFI_PEAP_PHASE2_GTC);

        WifiConfiguration wifiConfiguration = mController.getConfig();

        assertThat(wifiConfiguration.enterpriseConfig.getPhase2Method()).isEqualTo(Phase2.GTC);
    }

    @Test
    public void getEapConfig_withPhase2Sim_shouldContainSimMethod() {
        setUpModifyingSavedPeapConfigController();

        // Test EAP method PEAP
        final Spinner eapMethodSpinner = mView.findViewById(R.id.method);
        eapMethodSpinner.setSelection(Eap.PEAP);

        // Test phase2 SIM
        final Spinner phase2Spinner = mView.findViewById(R.id.phase2);
        phase2Spinner.setSelection(WifiConfigController2.WIFI_PEAP_PHASE2_SIM);

        WifiConfiguration wifiConfiguration = mController.getConfig();

        assertThat(wifiConfiguration.enterpriseConfig.getPhase2Method()).isEqualTo(Phase2.SIM);
    }

    @Test
    public void getEapConfig_withPhase2Aka_shouldContainAkaMethod() {
        setUpModifyingSavedPeapConfigController();

        // Test EAP method PEAP
        final Spinner eapMethodSpinner = mView.findViewById(R.id.method);
        eapMethodSpinner.setSelection(Eap.PEAP);

        // Test phase2 AKA
        final Spinner phase2Spinner = mView.findViewById(R.id.phase2);
        phase2Spinner.setSelection(WifiConfigController2.WIFI_PEAP_PHASE2_AKA);

        WifiConfiguration wifiConfiguration = mController.getConfig();

        assertThat(wifiConfiguration.enterpriseConfig.getPhase2Method()).isEqualTo(Phase2.AKA);
    }

    @Test
    public void getEapConfig_withPhase2AkaPrime_shouldContainAkaPrimeMethod() {
        setUpModifyingSavedPeapConfigController();

        // Test EAP method PEAP
        final Spinner eapMethodSpinner = mView.findViewById(R.id.method);
        eapMethodSpinner.setSelection(Eap.PEAP);

        // Test phase2 AKA PRIME
        final Spinner phase2Spinner = mView.findViewById(R.id.phase2);
        phase2Spinner.setSelection(WifiConfigController2.WIFI_PEAP_PHASE2_AKA_PRIME);

        WifiConfiguration wifiConfiguration = mController.getConfig();

        assertThat(wifiConfiguration.enterpriseConfig.getPhase2Method()).isEqualTo(
                Phase2.AKA_PRIME);
    }


    @Test
    public void getEapConfig_withPeapPhase2Unknown_shouldContainNoneMethod() {
        setUpModifyingSavedPeapConfigController();

        // Test EAP method PEAP
        final Spinner eapMethodSpinner = mView.findViewById(R.id.method);
        eapMethodSpinner.setSelection(Eap.PEAP);

        // Test phase2 Unknown
        final Spinner phase2Spinner = mView.findViewById(R.id.phase2);
        phase2Spinner.setSelection(-1);

        WifiConfiguration wifiConfiguration = mController.getConfig();

        assertThat(wifiConfiguration.enterpriseConfig.getPhase2Method()).isEqualTo(Phase2.NONE);
    }

    @Test
    public void getEapConfig_withTTLSPhase2Pap_shouldContainPapMethod() {
        setUpModifyingSavedPeapConfigController();

        // Test EAP method TTLS
        final Spinner eapMethodSpinner = mView.findViewById(R.id.method);
        eapMethodSpinner.setSelection(Eap.TTLS);

        // Test phase2 PAP
        final Spinner phase2Spinner = mView.findViewById(R.id.phase2);
        phase2Spinner.setSelection(WifiConfigController2.WIFI_TTLS_PHASE2_PAP);

        WifiConfiguration wifiConfiguration = mController.getConfig();

        assertThat(wifiConfiguration.enterpriseConfig.getPhase2Method()).isEqualTo(Phase2.PAP);
    }

    @Test
    public void getEapConfig_withTTLSPhase2Mschap_shouldContainMschapMethod() {
        setUpModifyingSavedPeapConfigController();

        // Test EAP method TTLS
        final Spinner eapMethodSpinner = mView.findViewById(R.id.method);
        eapMethodSpinner.setSelection(Eap.TTLS);

        // Test phase2 MSCHAP
        final Spinner phase2Spinner = mView.findViewById(R.id.phase2);
        phase2Spinner.setSelection(WifiConfigController2.WIFI_TTLS_PHASE2_MSCHAP);

        WifiConfiguration wifiConfiguration = mController.getConfig();

        assertThat(wifiConfiguration.enterpriseConfig.getPhase2Method()).isEqualTo(Phase2.MSCHAP);
    }

    @Test
    public void getEapConfig_withTTLSPhase2Gtc_shouldContainGtcMethod() {
        setUpModifyingSavedPeapConfigController();

        // Test EAP method TTLS
        final Spinner eapMethodSpinner = mView.findViewById(R.id.method);
        eapMethodSpinner.setSelection(Eap.TTLS);

        // Test phase2 GTC
        final Spinner phase2Spinner = mView.findViewById(R.id.phase2);
        phase2Spinner.setSelection(WifiConfigController2.WIFI_TTLS_PHASE2_GTC);

        WifiConfiguration wifiConfiguration = mController.getConfig();

        assertThat(wifiConfiguration.enterpriseConfig.getPhase2Method()).isEqualTo(Phase2.GTC);
    }

    private void setUpModifyingSavedPeapConfigController() {
        when(mWifiEntry.isSaved()).thenReturn(true);
        when(mWifiEntry.getSecurity()).thenReturn(WifiEntry.SECURITY_EAP);
        final WifiConfiguration mockWifiConfig = mock(WifiConfiguration.class);
        when(mockWifiConfig.getIpConfiguration()).thenReturn(mock(IpConfiguration.class));
        final WifiEnterpriseConfig mockWifiEnterpriseConfig = mock(WifiEnterpriseConfig.class);
        when(mockWifiEnterpriseConfig.getEapMethod()).thenReturn(Eap.PEAP);
        mockWifiConfig.enterpriseConfig = mockWifiEnterpriseConfig;
        when(mWifiEntry.getWifiConfiguration()).thenReturn(mockWifiConfig);
        mController = new TestWifiConfigController2(mConfigUiBase, mView, mWifiEntry,
                WifiConfigUiBase2.MODE_MODIFY);
    }
}
}
+13 −1
Original line number Original line Diff line number Diff line
@@ -39,7 +39,6 @@ import androidx.lifecycle.LifecycleOwner;
import androidx.preference.Preference;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
import androidx.preference.PreferenceScreen;


import com.android.settings.dashboard.DashboardFragment;
import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.core.lifecycle.Lifecycle;


import org.junit.Before;
import org.junit.Before;
@@ -132,4 +131,17 @@ public class WifiP2PPreferenceControllerTest {
        mController.displayPreference(mScreen);
        mController.displayPreference(mScreen);
        verify(mWifiDirectPreference, times(2)).setEnabled(false);
        verify(mWifiDirectPreference, times(2)).setEnabled(false);
    }
    }

    @Test
    public void updateState_withLocationDisabled_preferenceShouldBeDisable() {
        when(mWifiManager.isWifiEnabled()).thenReturn(true);
        when(mLocationManager.isLocationEnabled()).thenReturn(true);
        Intent dummyIntent = new Intent();
        mController.displayPreference(mScreen);
        verify(mWifiDirectPreference).setEnabled(true);

        when(mLocationManager.isLocationEnabled()).thenReturn(false);
        mController.mLocationReceiver.onReceive(mContext, dummyIntent);
        verify(mWifiDirectPreference).setEnabled(false);
    }
}
}
Loading