Adding an option to install a certificate from the CA certificate menu
For CA ceritificate we only can install in Network Preferences > Advaned > Install certificates. So we add the option for user to install when you setup the wifi network. After you install the certificate, you can see the certificate in your menu. Bug: 176998563 Test: manual test make RunSettingsRoboTests ROBOTEST_FILTER=WifiConfigController2Test Change-Id: I532b12f9277c6a15c649907fa3711c807566c88e
This commit is contained in:
@@ -18,11 +18,17 @@ package com.android.settings.wifi;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.ArgumentMatchers.anyInt;
|
||||
import static org.mockito.ArgumentMatchers.nullable;
|
||||
import static org.mockito.Mockito.doNothing;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.spy;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
import static org.robolectric.Shadows.shadowOf;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.res.Resources;
|
||||
import android.net.IpConfiguration;
|
||||
import android.net.wifi.WifiConfiguration;
|
||||
@@ -30,12 +36,14 @@ import android.net.wifi.WifiEnterpriseConfig;
|
||||
import android.net.wifi.WifiEnterpriseConfig.Eap;
|
||||
import android.net.wifi.WifiEnterpriseConfig.Phase2;
|
||||
import android.net.wifi.WifiManager;
|
||||
import android.os.UserHandle;
|
||||
import android.telephony.SubscriptionInfo;
|
||||
import android.telephony.SubscriptionManager;
|
||||
import android.telephony.TelephonyManager;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.inputmethod.InputMethodManager;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.CheckBox;
|
||||
import android.widget.LinearLayout;
|
||||
@@ -54,6 +62,7 @@ import com.google.common.collect.ImmutableList;
|
||||
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.RobolectricTestRunner;
|
||||
@@ -81,6 +90,7 @@ public class WifiConfigController2Test {
|
||||
private Spinner mHiddenSettingsSpinner;
|
||||
private Spinner mEapCaCertSpinner;
|
||||
private Spinner mEapUserCertSpinner;
|
||||
private String mUnspecifiedCertString;
|
||||
private String mUseSystemCertsString;
|
||||
private String mDoNotProvideEapUserCertString;
|
||||
private ShadowSubscriptionManager mShadowSubscriptionManager;
|
||||
@@ -107,10 +117,16 @@ public class WifiConfigController2Test {
|
||||
private static final String SAVED_CA_CERT = "saved CA cert";
|
||||
private static final String SAVED_USER_CERT = "saved user cert";
|
||||
|
||||
private static final int POSITION_SYSTEM_CERT = 1;
|
||||
private static final int POSITION_INSTALL_CERT = 2;
|
||||
private static final String ACTION_INSTALL_CERTS = "android.credentials.INSTALL";
|
||||
private static final String KEY_INSTALL_CERTIFICATE = "certificate_install_usage";
|
||||
private static final String INSTALL_CERTIFICATE_VALUE = "wifi";
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
mContext = RuntimeEnvironment.application;
|
||||
mContext = spy(RuntimeEnvironment.application);
|
||||
when(mConfigUiBase.getContext()).thenReturn(mContext);
|
||||
when(mWifiEntry.getSecurity()).thenReturn(WifiEntry.SECURITY_PSK);
|
||||
mView = LayoutInflater.from(mContext).inflate(R.layout.wifi_dialog, null);
|
||||
@@ -119,6 +135,7 @@ public class WifiConfigController2Test {
|
||||
mEapCaCertSpinner = mView.findViewById(R.id.ca_cert);
|
||||
mEapUserCertSpinner = mView.findViewById(R.id.user_cert);
|
||||
mUseSystemCertsString = mContext.getString(R.string.wifi_use_system_certs);
|
||||
mUnspecifiedCertString = mContext.getString(R.string.wifi_unspecified);
|
||||
mDoNotProvideEapUserCertString =
|
||||
mContext.getString(R.string.wifi_do_not_provide_eap_user_cert);
|
||||
ipSettingsSpinner.setSelection(DHCP);
|
||||
@@ -709,7 +726,6 @@ public class WifiConfigController2Test {
|
||||
Phase2.AKA_PRIME);
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void getEapConfig_withPeapPhase2Unknown_shouldContainNoneMethod() {
|
||||
setUpModifyingSavedPeapConfigController();
|
||||
@@ -835,9 +851,30 @@ public class WifiConfigController2Test {
|
||||
public void loadCaCertificateValue_shouldPersistentAsDefault() {
|
||||
setUpModifyingSavedCertificateConfigController(null, null);
|
||||
|
||||
mEapCaCertSpinner.setSelection(POSITION_SYSTEM_CERT);
|
||||
assertThat(mEapCaCertSpinner.getSelectedItem()).isEqualTo(mUseSystemCertsString);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onItemSelected_shouldPersistentInstallCertsAndStartInstallActivity() {
|
||||
String installCertsString = "install_certs";
|
||||
Spinner eapCaCertSpinner = mock(Spinner.class);
|
||||
AdapterView view = mock(AdapterView.class);
|
||||
when(eapCaCertSpinner.getItemAtPosition(anyInt())).thenReturn(view);
|
||||
when(view.toString()).thenReturn(installCertsString);
|
||||
mController.mInstallCertsString = installCertsString;
|
||||
mController.mEapCaCertSpinner = eapCaCertSpinner;
|
||||
|
||||
mController.onItemSelected(eapCaCertSpinner, null, POSITION_INSTALL_CERT, 0);
|
||||
|
||||
final ArgumentCaptor<Intent> argumentCaptor = ArgumentCaptor.forClass(Intent.class);
|
||||
verify(mContext).startActivity(argumentCaptor.capture());
|
||||
final Intent intent = argumentCaptor.getValue();
|
||||
assertThat(intent.getAction()).isEqualTo(ACTION_INSTALL_CERTS);
|
||||
assertThat(intent.getExtra(KEY_INSTALL_CERTIFICATE, ""))
|
||||
.isEqualTo(INSTALL_CERTIFICATE_VALUE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void loadSavedCaCertificateValue_shouldBeCorrectValue() {
|
||||
setUpModifyingSavedCertificateConfigController(SAVED_CA_CERT, null);
|
||||
|
Reference in New Issue
Block a user